; LLVM IR from thepowersgang/mrustc :: src/mir (check)

; 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.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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.std::locale" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.151 = type { ptr }
%struct.Span = type { ptr }
%"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.152 = type { ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.66, %class.ThinVector.67, %class.ThinVector.68 }
%class.ThinVector.66 = type { ptr }
%class.ThinVector.67 = type { ptr }
%class.ThinVector.68 = type { ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.173" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.173" = type { %"struct.std::_Vector_base.174" }
%"struct.std::_Vector_base.174" = 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.178" = type { ptr }
%class.anon.179 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.180" = type { ptr }
%class.anon.181 = type { i8 }
%"class.std::vector.5" = 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::allocator.183" = type { i8 }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.186 = type { ptr, ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.anon.187 = type { ptr }
%class.anon.188 = type { ptr, ptr }
%class.anon.189 = type { ptr, ptr }
%class.anon.190 = type { ptr, ptr }
%class.anon.191 = type { ptr, ptr }
%class.anon.192 = type { ptr, ptr, ptr }
%class.anon.193 = type { ptr, ptr, ptr }
%class.anon.194 = type { ptr, ptr }
%class.anon.195 = type { ptr, ptr }
%class.anon.196 = type { ptr, ptr }
%class.anon.197 = type { ptr }
%class.anon.224 = type { ptr, ptr }
%class.anon.225 = type { ptr, ptr }
%class.anon.226 = type { ptr, ptr }
%class.anon.227 = type { ptr }
%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.228 = type { ptr, ptr }
%class.anon.229 = type { ptr, ptr }
%class.anon.230 = type { ptr, ptr }
%class.anon.231 = type { ptr, ptr }
%class.anon.232 = type { ptr, ptr }
%class.anon.244 = type { ptr }
%class.anon.245 = type { ptr }
%class.anon.246 = type { ptr }
%class.anon.247 = type { ptr, ptr, ptr }
%class.anon.248 = type { ptr, ptr }
%class.anon.265 = type { ptr, ptr }
%class.anon.266 = type { ptr, ptr }
%class.anon.267 = type { i8 }
%class.anon.269 = type { ptr, ptr, ptr }
%class.anon.270 = type { ptr, ptr, ptr }
%class.anon.271 = type { ptr, ptr }
%class.anon.272 = type { i8 }
%class.anon.274 = type { ptr, ptr }
%class.anon.275 = type { ptr, ptr }
%class.anon.276 = type { ptr, ptr }
%class.anon.277 = type { ptr, ptr }
%class.anon.278 = type { ptr, ptr, ptr }
%class.anon.279 = type { ptr, ptr }
%class.anon.280 = type { ptr, ptr, ptr }
%class.anon.281 = type { ptr, ptr }
%class.anon.282 = type { ptr, ptr }
%class.anon.283 = type { ptr, ptr }
%class.anon.284 = type { ptr, ptr }
%class.anon.285 = type { ptr, ptr }
%class.anon.286 = type { ptr, ptr }
%class.anon.287 = type { ptr, ptr }
%class.anon.288 = type { ptr, ptr }
%class.anon.289 = type { ptr, ptr, ptr }
%class.anon.290 = type { ptr, ptr }
%class.anon.291 = type { ptr, ptr }
%class.anon.439 = type { ptr, ptr }
%class.anon.440 = type { ptr, ptr, ptr, ptr }
%class.anon.441 = type { i8 }
%class.anon.443 = type { i8 }
%class.anon.478 = type { ptr, ptr, ptr, ptr }
%class.anon.479 = type { ptr, ptr }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"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.134", [8 x i8] }>
%"class.std::vector.134" = type { %"struct.std::_Vector_base.135" }
%"struct.std::_Vector_base.135" = 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 }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"class.MIR::Function" = type { %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.9", %"class.MIR::EnumCachePtr" }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = 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.39", %"class.MIR::Terminator" }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = 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.71" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.44" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.44" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = 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.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" }
%class.RcString = 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.70" }
%"struct.std::_Head_base.70" = type { ptr }
%"class.std::vector.71" = type { %"struct.std::_Vector_base.72" }
%"struct.std::_Vector_base.72" = 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 }
%"struct.MIR::Terminator::Data_Panic" = type { i32 }
%"struct.MIR::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.21" }
%"struct.MIR::Terminator::Data_SwitchValue" = type { %"struct.MIR::LValue", i32, %"class.std::vector.21", %"class.MIR::SwitchValues" }
%"class.MIR::SwitchValues" = type { i32, %"union.MIR::SwitchValues::DataUnion" }
%"union.MIR::SwitchValues::DataUnion" = type { %"class.std::vector.49" }
%"class.std::vector.49" = type { %"struct.std::_Vector_base.50" }
%"struct.std::_Vector_base.50" = 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 }
%"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" }
%"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.238" }
%"class.HIR::GenericParams" = type { %"class.std::vector.153", %"class.std::vector.158", %"class.std::vector.163", %"class.std::vector.168" }
%"class.std::vector.153" = type { %"struct.std::_Vector_base.154" }
%"struct.std::_Vector_base.154" = 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.158" = type { %"struct.std::_Vector_base.159" }
%"struct.std::_Vector_base.159" = 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.163" = type { %"struct.std::_Vector_base.164" }
%"struct.std::_Vector_base.164" = 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.168" = type { %"struct.std::_Vector_base.169" }
%"struct.std::_Vector_base.169" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::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.79 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.79 = type { i64, [8 x i8] }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.0", %"class.std::vector.0", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%struct.EncodedLiteral = type { %"class.std::vector.26", %"class.std::vector.233" }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = 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.233" = type { %"struct.std::_Vector_base.234" }
%"struct.std::_Vector_base.234" = 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.238" = type { %"class.std::_Rb_tree.239" }
%"class.std::_Rb_tree.239" = 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" }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr" }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"struct.HIR::TypeData::Data_Pointer" = type { i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_DstPtr" = type { %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.71" }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.31", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %"struct.HIR::Function::Markings" }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.21", i8, i32 }
%"struct.std::pair.445" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.447", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.447" = type { %"struct.std::_Vector_base.448" }
%"struct.std::_Vector_base.448" = 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 }

@.str.1 = external hidden unnamed_addr constant [72 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@.str.7 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1
@__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ = external hidden unnamed_addr constant [13 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ = external hidden unnamed_addr constant [153 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(96)) #0

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(152)) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152)) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(168)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168)) #3 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) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168)) #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168)) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull align 8 dereferenceable(96) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #0 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %class.TraceLog, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.151, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %struct.Span, align 8
  %17 = alloca %"class.MIR::TypeResolve", align 8
  %18 = alloca %struct.FmtLambda, align 8
  %19 = alloca %"class.std::function", align 8
  %20 = alloca %class.anon.152, align 8
  %21 = alloca %"class.HIR::TypeRef", align 8
  %22 = alloca %"struct.HIR::PathParams", align 8
  %23 = alloca %"struct.HIR::PathParams", align 8
  %24 = alloca %struct.MonomorphStatePtr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"class.std::function", align 8
  %30 = alloca %class.anon.179, align 8
  %31 = alloca %"class.HIR::TypeRef", align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.180", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.180", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.std::function", align 8
  %37 = alloca %class.anon.181, align 1
  %38 = alloca i8, align 1
  %39 = alloca %"class.std::vector.5", align 8
  %40 = alloca %"class.std::allocator.183", align 1
  %41 = alloca %"class.std::vector.21", align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca %"class.std::function", align 8
  %45 = alloca %class.anon.186, align 8
  %46 = alloca %"struct.std::_Bit_reference", align 8
  %47 = alloca i32, align 4
  %48 = alloca %"struct.std::_Bit_reference", align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca %"class.std::function", align 8
  %52 = alloca %class.anon.187, align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca %"class.std::function", align 8
  %58 = alloca %class.anon.188, align 8
  %59 = alloca %"struct.std::_Bit_reference", align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"class.std::function", align 8
  %63 = alloca %class.anon.189, align 8
  %64 = alloca %"struct.std::_Bit_reference", align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca %"class.std::function", align 8
  %68 = alloca %class.anon.190, align 8
  %69 = alloca %"struct.std::_Bit_reference", align 8
  %70 = alloca ptr, align 8
  %71 = alloca %"class.std::function", align 8
  %72 = alloca %class.anon.191, align 8
  %73 = alloca %"struct.std::_Bit_reference", align 8
  %74 = alloca ptr, align 8
  %75 = alloca i32, align 4
  %76 = alloca ptr, align 8
  %77 = alloca %"class.std::function", align 8
  %78 = alloca %class.anon.192, align 8
  %79 = alloca %"struct.std::_Bit_reference", align 8
  %80 = alloca ptr, align 8
  %81 = alloca i32, align 4
  %82 = alloca ptr, align 8
  %83 = alloca %"class.std::function", align 8
  %84 = alloca %class.anon.193, align 8
  %85 = alloca %"struct.std::_Bit_reference", align 8
  %86 = alloca ptr, align 8
  %87 = alloca %"class.std::function", align 8
  %88 = alloca %class.anon.194, align 8
  %89 = alloca %"struct.std::_Bit_reference", align 8
  %90 = alloca ptr, align 8
  %91 = alloca ptr, align 8
  %92 = alloca %"class.std::function", align 8
  %93 = alloca %class.anon.195, align 8
  %94 = alloca %"struct.std::_Bit_reference", align 8
  %95 = alloca ptr, align 8
  %96 = alloca %"class.std::function", align 8
  %97 = alloca %class.anon.196, align 8
  %98 = alloca %"struct.std::_Bit_reference", align 8
  %99 = alloca i32, align 4
  %100 = alloca ptr, align 8
  %101 = alloca i32, align 4
  %102 = alloca ptr, align 8
  %103 = alloca ptr, align 8
  %104 = alloca %"class.HIR::TypeRef", align 8
  %105 = alloca ptr, align 8
  %106 = alloca %class.anon.197, align 8
  %107 = alloca i8, align 1
  %108 = alloca ptr, align 8
  %109 = alloca i8, align 1
  %110 = alloca ptr, align 8
  %111 = alloca %"class.HIR::TypeRef", align 8
  %112 = alloca i8, align 1
  %113 = alloca ptr, align 8
  %114 = alloca i8, align 1
  %115 = alloca ptr, align 8
  %116 = alloca i8, align 1
  %117 = alloca ptr, align 8
  %118 = alloca i8, align 1
  %119 = alloca ptr, align 8
  %120 = alloca %"class.std::function", align 8
  %121 = alloca %class.anon.224, align 8
  %122 = alloca i8, align 1
  %123 = alloca ptr, align 8
  %124 = alloca i8, align 1
  %125 = alloca ptr, align 8
  %126 = alloca %"class.std::function", align 8
  %127 = alloca %class.anon.225, align 8
  %128 = alloca i8, align 1
  %129 = alloca ptr, align 8
  %130 = alloca i8, align 1
  %131 = alloca ptr, align 8
  %132 = alloca %"class.std::function", align 8
  %133 = alloca %class.anon.226, align 8
  %134 = alloca i8, align 1
  %135 = alloca ptr, align 8
  %136 = alloca %"class.HIR::TypeRef", align 8
  %137 = alloca i8, align 1
  %138 = alloca ptr, align 8
  %139 = alloca %"class.HIR::TypeRef", align 8
  %140 = alloca %"class.HIR::TypeRef", align 8
  %141 = alloca %"class.HIR::TypeRef", align 8
  %142 = alloca i8, align 1
  %143 = alloca ptr, align 8
  %144 = alloca %"class.HIR::TypeRef", align 8
  %145 = alloca %"class.HIR::TypeRef", align 8
  %146 = alloca i8, align 1
  %147 = alloca ptr, align 8
  %148 = alloca i8, align 1
  %149 = alloca ptr, align 8
  %150 = alloca i8, align 1
  %151 = alloca ptr, align 8
  %152 = alloca %"class.std::function", align 8
  %153 = alloca %class.anon.227, align 8
  %154 = alloca i8, align 1
  %155 = alloca ptr, align 8
  %156 = alloca %struct.MonomorphState, align 8
  %157 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %158 = alloca %"class.HIR::TypeRef", align 8
  %159 = alloca i8, align 1
  %160 = alloca ptr, align 8
  %161 = alloca i8, align 1
  %162 = alloca ptr, align 8
  %163 = alloca ptr, align 8
  %164 = alloca %"class.std::function", align 8
  %165 = alloca %class.anon.228, align 8
  %166 = alloca i8, align 1
  %167 = alloca ptr, align 8
  %168 = alloca ptr, align 8
  %169 = alloca %"class.std::function", align 8
  %170 = alloca %class.anon.229, align 8
  %171 = alloca i8, align 1
  %172 = alloca ptr, align 8
  %173 = alloca ptr, align 8
  %174 = alloca %"class.std::function", align 8
  %175 = alloca %class.anon.230, align 8
  %176 = alloca i8, align 1
  %177 = alloca ptr, align 8
  %178 = alloca ptr, align 8
  %179 = alloca %"class.std::function", align 8
  %180 = alloca %class.anon.231, align 8
  %181 = alloca i8, align 1
  %182 = alloca ptr, align 8
  %183 = alloca ptr, align 8
  %184 = alloca %"class.std::function", align 8
  %185 = alloca %class.anon.232, align 8
  %186 = alloca i8, align 1
  %187 = alloca ptr, align 8
  %188 = alloca %"class.HIR::TypeRef", align 8
  %189 = alloca %"class.HIR::TypeRef", align 8
  %190 = alloca %"class.HIR::TypeRef", align 8
  %191 = alloca i8, align 1
  %192 = alloca ptr, align 8
  %193 = alloca %"class.std::function", align 8
  %194 = alloca %class.anon.244, align 8
  %195 = alloca i8, align 1
  %196 = alloca ptr, align 8
  %197 = alloca %"class.std::function", align 8
  %198 = alloca %class.anon.245, align 8
  %199 = alloca i8, align 1
  %200 = alloca ptr, align 8
  %201 = alloca %"class.std::function", align 8
  %202 = alloca %class.anon.246, align 8
  %203 = alloca i8, align 1
  %204 = alloca ptr, align 8
  %205 = alloca i8, align 1
  %206 = alloca ptr, align 8
  %207 = alloca %"class.HIR::TypeRef", align 8
  %208 = alloca %"class.HIR::TypeRef", align 8
  %209 = alloca %"class.HIR::TypeRef", align 8
  %210 = alloca i8, align 1
  %211 = alloca ptr, align 8
  %212 = alloca %"class.HIR::TypeRef", align 8
  %213 = alloca ptr, align 8
  %214 = alloca i8, align 1
  %215 = alloca ptr, align 8
  %216 = alloca ptr, align 8
  %217 = alloca %"class.std::function", align 8
  %218 = alloca %class.anon.247, align 8
  %219 = alloca i8, align 1
  %220 = alloca ptr, align 8
  %221 = alloca %"class.std::function", align 8
  %222 = alloca %class.anon.248, align 8
  %223 = alloca %"class.std::function", align 8
  %224 = alloca %class.anon.265, align 8
  %225 = alloca %"class.std::function", align 8
  %226 = alloca %class.anon.266, align 8
  %227 = alloca i8, align 1
  %228 = alloca ptr, align 8
  %229 = alloca i8, align 1
  %230 = alloca ptr, align 8
  %231 = alloca i8, align 1
  %232 = alloca ptr, align 8
  %233 = alloca %"class.std::function", align 8
  %234 = alloca %class.anon.267, align 1
  %235 = alloca i8, align 1
  %236 = alloca ptr, align 8
  %237 = alloca ptr, align 8
  %238 = alloca %"class.std::function", align 8
  %239 = alloca %class.anon.269, align 8
  %240 = alloca i8, align 1
  %241 = alloca ptr, align 8
  %242 = alloca ptr, align 8
  %243 = alloca %"class.std::function", align 8
  %244 = alloca %class.anon.270, align 8
  %245 = alloca i32, align 4
  %246 = alloca %"class.std::function", align 8
  %247 = alloca %class.anon.271, align 8
  %248 = alloca i8, align 1
  %249 = alloca ptr, align 8
  %250 = alloca %"class.std::function", align 8
  %251 = alloca %class.anon.272, align 1
  %252 = alloca %"class.std::function", align 8
  %253 = alloca %class.anon.274, align 8
  %254 = alloca i8, align 1
  %255 = alloca ptr, align 8
  %256 = alloca %"class.std::function", align 8
  %257 = alloca %class.anon.275, align 8
  %258 = alloca %"class.std::function", align 8
  %259 = alloca %class.anon.276, align 8
  %260 = alloca %"class.std::function", align 8
  %261 = alloca %class.anon.277, align 8
  %262 = alloca i8, align 1
  %263 = alloca ptr, align 8
  %264 = alloca i32, align 4
  %265 = alloca i8, align 1
  %266 = alloca ptr, align 8
  %267 = alloca ptr, align 8
  %268 = alloca %"class.std::function", align 8
  %269 = alloca %class.anon.278, align 8
  %270 = alloca i8, align 1
  %271 = alloca ptr, align 8
  %272 = alloca i32, align 4
  %273 = alloca %"class.std::function", align 8
  %274 = alloca %class.anon.279, align 8
  %275 = alloca i8, align 1
  %276 = alloca ptr, align 8
  %277 = alloca ptr, align 8
  %278 = alloca %"class.std::function", align 8
  %279 = alloca %class.anon.280, align 8
  %280 = alloca %"class.std::function", align 8
  %281 = alloca %class.anon.281, align 8
  %282 = alloca i8, align 1
  %283 = alloca ptr, align 8
  %284 = alloca i8, align 1
  %285 = alloca ptr, align 8
  %286 = alloca i8, align 1
  %287 = alloca ptr, align 8
  %288 = alloca %"class.HIR::TypeRef", align 8
  %289 = alloca ptr, align 8
  %290 = alloca ptr, align 8
  %291 = alloca ptr, align 8
  %292 = alloca %"class.std::function", align 8
  %293 = alloca %class.anon.282, align 8
  %294 = alloca ptr, 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 ptr, align 8
  %299 = alloca %"class.std::function", align 8
  %300 = alloca %class.anon.283, align 8
  %301 = alloca i8, align 1
  %302 = alloca ptr, align 8
  %303 = alloca %"class.HIR::TypeRef", align 8
  %304 = alloca ptr, align 8
  %305 = alloca ptr, align 8
  %306 = alloca ptr, align 8
  %307 = alloca %"class.std::function", align 8
  %308 = alloca %class.anon.284, align 8
  %309 = alloca ptr, align 8
  %310 = alloca ptr, align 8
  %311 = alloca %"class.std::function", align 8
  %312 = alloca %class.anon.285, align 8
  %313 = alloca i8, align 1
  %314 = alloca ptr, align 8
  %315 = alloca ptr, align 8
  %316 = alloca ptr, align 8
  %317 = alloca ptr, align 8
  %318 = alloca ptr, align 8
  %319 = alloca %"class.std::function", align 8
  %320 = alloca %class.anon.286, align 8
  %321 = alloca %"class.HIR::TypeRef", align 8
  %322 = alloca %"class.HIR::TypeRef", align 8
  %323 = alloca ptr, align 8
  %324 = alloca %"class.std::function", align 8
  %325 = alloca %class.anon.287, align 8
  %326 = alloca i8, align 1
  %327 = alloca ptr, align 8
  %328 = alloca ptr, align 8
  %329 = alloca %"class.std::function", align 8
  %330 = alloca %class.anon.288, align 8
  %331 = alloca ptr, align 8
  %332 = alloca ptr, align 8
  %333 = alloca %"class.std::function", align 8
  %334 = alloca %class.anon.289, align 8
  %335 = alloca i64, align 8
  %336 = alloca %"class.HIR::TypeRef", align 8
  %337 = alloca i8, align 1
  %338 = alloca ptr, align 8
  %339 = alloca i8, align 1
  %340 = alloca ptr, align 8
  %341 = alloca i8, align 1
  %342 = alloca ptr, align 8
  %343 = alloca i8, align 1
  %344 = alloca ptr, align 8
  %345 = alloca i8, align 1
  %346 = alloca ptr, align 8
  %347 = alloca i8, align 1
  %348 = alloca ptr, align 8
  %349 = alloca i8, align 1
  %350 = alloca ptr, align 8
  %351 = alloca i8, align 1
  %352 = alloca ptr, align 8
  %353 = alloca i8, align 1
  %354 = alloca ptr, align 8
  %355 = alloca i8, align 1
  %356 = alloca ptr, align 8
  %357 = alloca i8, align 1
  %358 = alloca ptr, align 8
  %359 = alloca %"class.HIR::TypeRef", align 8
  %360 = alloca ptr, align 8
  %361 = alloca i32, align 4
  %362 = alloca ptr, align 8
  %363 = alloca %"class.std::function", align 8
  %364 = alloca %class.anon.290, align 8
  %365 = alloca i8, align 1
  %366 = alloca ptr, align 8
  %367 = alloca i8, align 1
  %368 = alloca ptr, align 8
  %369 = alloca i8, align 1
  %370 = alloca ptr, align 8
  %371 = alloca %"class.HIR::TypeRef", align 8
  %372 = alloca ptr, align 8
  %373 = alloca ptr, align 8
  %374 = alloca %"class.std::function", align 8
  %375 = alloca %class.anon.291, align 8
  %376 = alloca ptr, align 8
  %377 = alloca %struct.MonomorphState, align 8
  %378 = alloca %"class.HIR::ItemPath", align 8
  %379 = alloca ptr, align 8
  %380 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %381 = alloca %"class.std::function", align 8
  %382 = alloca %class.anon.439, align 8
  %383 = alloca ptr, align 8
  %384 = alloca %"class.HIR::TypeRef", align 8
  %385 = alloca %"class.HIR::TypeRef", align 8
  %386 = alloca %class.anon.440, align 8
  %387 = alloca %"class.std::function", align 8
  %388 = alloca %class.anon.441, align 1
  %389 = alloca %"class.std::function", align 8
  %390 = alloca %class.anon.443, align 1
  %391 = alloca i64, align 8
  %392 = alloca ptr, align 8
  %393 = alloca ptr, align 8
  %394 = alloca %"class.HIR::TypeRef", align 8
  %395 = alloca ptr, align 8
  %396 = alloca %"class.std::function", align 8
  %397 = alloca %class.anon.478, align 8
  %398 = alloca ptr, align 8
  %399 = alloca ptr, align 8
  %400 = alloca %"class.std::function", align 8
  %401 = alloca %class.anon.479, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %11) #8
  %402 = call noundef zeroext i1 @_Z13debug_enabledv()
  %403 = zext i1 %402 to i64
  %404 = select i1 %402, ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %405 = getelementptr inbounds %class.anon.151, ptr %13, i32 0, i32 0
  %406 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %406, ptr %405, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef %404, ptr noundef %12)
          to label %407 unwind label %422

407:                                              ; preds = %5
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %408 unwind label %426

408:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 120, ptr %17) #8
  %409 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %410 = getelementptr inbounds %class.anon.152, ptr %20, i32 0, i32 0
  %411 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %411, ptr %410, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %19)
          to label %412 unwind label %430

412:                                              ; preds = %408
  %413 = load ptr, ptr %10, align 8, !tbaa !5
  %414 = load ptr, ptr %9, align 8, !tbaa !5
  %415 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(424) %409, ptr noundef %18, ptr noundef nonnull align 8 dereferenceable(8) %413, ptr noundef nonnull align 8 dereferenceable(24) %414, ptr noundef nonnull align 8 dereferenceable(96) %415)
          to label %416 unwind label %434

416:                                              ; preds = %412
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  %417 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %418 unwind label %439

418:                                              ; preds = %416
  br i1 %417, label %419, label %443

419:                                              ; preds = %418
  %420 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z12MIR_Dump_FcnRSoRKN3MIR8FunctionEj(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(96) %420, i32 noundef 0)
          to label %421 unwind label %439

421:                                              ; preds = %419
  br label %443

422:                                              ; preds = %5
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %14, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %4845

426:                                              ; preds = %407
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %14, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %15, align 4
  br label %4844

430:                                              ; preds = %408
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %14, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %15, align 4
  br label %438

434:                                              ; preds = %412
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %14, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %15, align 4
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %438

438:                                              ; preds = %434, %430
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %4843

439:                                              ; preds = %4839, %1437, %1435, %1433, %1430, %1427, %419, %416
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %14, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %15, align 4
  br label %4842

443:                                              ; preds = %421, %418
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  invoke void @_ZN3HIR7TypeRef8new_selfEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %21)
          to label %444 unwind label %503

444:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #8
  %445 = load ptr, ptr %6, align 8, !tbaa !5
  %446 = getelementptr inbounds i8, ptr %445, i64 8
  %447 = getelementptr inbounds %struct.TraitResolveCommon, ptr %446, i32 0, i32 1
  %448 = load ptr, ptr %447, align 8, !tbaa !9
  %449 = icmp ne ptr %448, null
  br i1 %449, label %450, label %456

450:                                              ; preds = %444
  %451 = load ptr, ptr %6, align 8, !tbaa !5
  %452 = getelementptr inbounds i8, ptr %451, i64 8
  %453 = getelementptr inbounds %struct.TraitResolveCommon, ptr %452, i32 0, i32 1
  %454 = load ptr, ptr %453, align 8, !tbaa !9
  invoke void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %22, ptr noundef nonnull align 8 dereferenceable(96) %454, i32 noundef 0, i1 noundef zeroext false)
          to label %455 unwind label %507

455:                                              ; preds = %450
  br label %458

456:                                              ; preds = %444
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %457 unwind label %507

457:                                              ; preds = %456
  br label %458

458:                                              ; preds = %457, %455
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #8
  %459 = load ptr, ptr %6, align 8, !tbaa !5
  %460 = getelementptr inbounds i8, ptr %459, i64 8
  %461 = getelementptr inbounds %struct.TraitResolveCommon, ptr %460, i32 0, i32 2
  %462 = load ptr, ptr %461, align 8, !tbaa !28
  %463 = icmp ne ptr %462, null
  br i1 %463, label %464, label %470

464:                                              ; preds = %458
  %465 = load ptr, ptr %6, align 8, !tbaa !5
  %466 = getelementptr inbounds i8, ptr %465, i64 8
  %467 = getelementptr inbounds %struct.TraitResolveCommon, ptr %466, i32 0, i32 2
  %468 = load ptr, ptr %467, align 8, !tbaa !28
  invoke void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %23, ptr noundef nonnull align 8 dereferenceable(96) %468, i32 noundef 0, i1 noundef zeroext false)
          to label %469 unwind label %511

469:                                              ; preds = %464
  br label %472

470:                                              ; preds = %458
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %471 unwind label %511

471:                                              ; preds = %470
  br label %472

472:                                              ; preds = %471, %469
  call void @llvm.lifetime.start.p0(i64 128, ptr %24) #8
  %473 = load ptr, ptr %6, align 8, !tbaa !5
  %474 = getelementptr inbounds i8, ptr %473, i64 8
  %475 = getelementptr inbounds %struct.TraitResolveCommon, ptr %474, i32 0, i32 1
  %476 = load ptr, ptr %475, align 8, !tbaa !9
  %477 = icmp ne ptr %476, null
  br i1 %477, label %478, label %479

478:                                              ; preds = %472
  br label %480

479:                                              ; preds = %472
  br label %480

480:                                              ; preds = %479, %478
  %481 = phi ptr [ %22, %478 ], [ null, %479 ]
  %482 = load ptr, ptr %6, align 8, !tbaa !5
  %483 = getelementptr inbounds i8, ptr %482, i64 8
  %484 = getelementptr inbounds %struct.TraitResolveCommon, ptr %483, i32 0, i32 2
  %485 = load ptr, ptr %484, align 8, !tbaa !28
  %486 = icmp ne ptr %485, null
  br i1 %486, label %487, label %488

487:                                              ; preds = %480
  br label %489

488:                                              ; preds = %480
  br label %489

489:                                              ; preds = %488, %487
  %490 = phi ptr [ %23, %487 ], [ null, %488 ]
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %24, ptr noundef %21, ptr noundef %481, ptr noundef %490, ptr noundef null, ptr noundef null)
          to label %491 unwind label %515

491:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %492 = load ptr, ptr %8, align 8, !tbaa !5
  %493 = getelementptr inbounds %"class.MIR::Function", ptr %492, i32 0, i32 0
  store ptr %493, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %494 = load ptr, ptr %25, align 8, !tbaa !5
  %495 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %494) #8
  %496 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.178", ptr %26, i32 0, i32 0
  store ptr %495, ptr %496, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %497 = load ptr, ptr %25, align 8, !tbaa !5
  %498 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %497) #8
  %499 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.178", ptr %27, i32 0, i32 0
  store ptr %498, ptr %499, align 8
  br label %500

500:                                              ; preds = %581, %491
  %501 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br i1 %501, label %519, label %502

502:                                              ; preds = %500
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %584

503:                                              ; preds = %443
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %14, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %15, align 4
  br label %599

507:                                              ; preds = %456, %450
  %508 = landingpad { ptr, i32 }
          cleanup
  %509 = extractvalue { ptr, i32 } %508, 0
  store ptr %509, ptr %14, align 8
  %510 = extractvalue { ptr, i32 } %508, 1
  store i32 %510, ptr %15, align 4
  br label %598

511:                                              ; preds = %470, %464
  %512 = landingpad { ptr, i32 }
          cleanup
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %14, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %15, align 4
  br label %597

515:                                              ; preds = %489
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %14, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %15, align 4
  br label %596

519:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %520 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  store ptr %520, ptr %28, align 8, !tbaa !5
  br label %521

521:                                              ; preds = %519
  %522 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %523 unwind label %549

523:                                              ; preds = %521
  br i1 %522, label %524, label %553

524:                                              ; preds = %523
  %525 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %526 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %525, ptr noundef @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %527 unwind label %549

527:                                              ; preds = %524
  %528 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %526, ptr noundef @.str.9)
          to label %529 unwind label %549

529:                                              ; preds = %527
  %530 = load ptr, ptr %28, align 8, !tbaa !5
  %531 = load ptr, ptr %8, align 8, !tbaa !5
  %532 = getelementptr inbounds %"class.MIR::Function", ptr %531, i32 0, i32 0
  %533 = call noundef ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #8
  %534 = ptrtoint ptr %530 to i64
  %535 = ptrtoint ptr %533 to i64
  %536 = sub i64 %534, %535
  %537 = sdiv exact i64 %536, 8
  %538 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %528, i64 noundef %537)
          to label %539 unwind label %549

539:                                              ; preds = %529
  %540 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %538, ptr noundef @.str.10)
          to label %541 unwind label %549

541:                                              ; preds = %539
  %542 = load ptr, ptr %28, align 8, !tbaa !5
  %543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %540, ptr noundef nonnull align 8 dereferenceable(8) %542)
          to label %544 unwind label %549

544:                                              ; preds = %541
  %545 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %543, ptr noundef @_ZSt3decRSt8ios_base)
          to label %546 unwind label %549

546:                                              ; preds = %544
  %547 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %545, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %548 unwind label %549

548:                                              ; preds = %546
  br label %553

549:                                              ; preds = %578, %560, %555, %546, %544, %541, %539, %529, %527, %524, %521
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %14, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %15, align 4
  br label %583

553:                                              ; preds = %548, %523
  br label %554

554:                                              ; preds = %553
  br label %555

555:                                              ; preds = %554
  %556 = load ptr, ptr %28, align 8, !tbaa !5
  %557 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %556, i1 noundef zeroext false)
          to label %558 unwind label %549

558:                                              ; preds = %555
  br i1 %557, label %578, label %559

559:                                              ; preds = %558
  br label %560

560:                                              ; preds = %559
  %561 = load ptr, ptr %6, align 8, !tbaa !5
  %562 = load ptr, ptr %28, align 8, !tbaa !5
  %563 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %561, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %562)
          to label %564 unwind label %549

564:                                              ; preds = %560
  br i1 %563, label %575, label %565

565:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #8
  %566 = getelementptr inbounds %class.anon.179, ptr %30, i32 0, i32 0
  %567 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %567, ptr %566, align 8, !tbaa !5
  %568 = getelementptr inbounds %class.anon.179, ptr %30, i32 0, i32 1
  %569 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %569, ptr %568, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(16) %30) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %29)
          to label %570 unwind label %571

570:                                              ; preds = %565
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  br label %575

571:                                              ; preds = %565
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %14, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #8
  br label %583

575:                                              ; preds = %570, %564
  br label %576

576:                                              ; preds = %575
  br label %577

577:                                              ; preds = %576
  br label %578

578:                                              ; preds = %577, %558
  %579 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %31, ptr noundef nonnull align 8 dereferenceable(96) %24, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %579, i1 noundef zeroext false)
          to label %580 unwind label %549

580:                                              ; preds = %578
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %581

581:                                              ; preds = %580
  %582 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br label %500

583:                                              ; preds = %571, %549
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %24) #8
  br label %596

584:                                              ; preds = %502
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %24) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %24) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %585 = load ptr, ptr %8, align 8, !tbaa !5
  %586 = getelementptr inbounds %"class.MIR::Function", ptr %585, i32 0, i32 2
  store ptr %586, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %587 = load ptr, ptr %32, align 8, !tbaa !5
  %588 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %587) #8
  %589 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.180", ptr %33, i32 0, i32 0
  store ptr %588, ptr %589, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %590 = load ptr, ptr %32, align 8, !tbaa !5
  %591 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %590) #8
  %592 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.180", ptr %34, i32 0, i32 0
  store ptr %591, ptr %592, align 8
  br label %593

593:                                              ; preds = %631, %584
  %594 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  br i1 %594, label %600, label %595

595:                                              ; preds = %593
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %634

596:                                              ; preds = %583, %515
  call void @llvm.lifetime.end.p0(i64 128, ptr %24) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  br label %597

597:                                              ; preds = %596, %511
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  br label %598

598:                                              ; preds = %597, %507
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br label %599

599:                                              ; preds = %598, %503
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  br label %4842

600:                                              ; preds = %593
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %601 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  store ptr %601, ptr %35, align 8, !tbaa !5
  %602 = load ptr, ptr %35, align 8, !tbaa !5
  %603 = load ptr, ptr %8, align 8, !tbaa !5
  %604 = getelementptr inbounds %"class.MIR::Function", ptr %603, i32 0, i32 2
  %605 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %604) #8
  %606 = ptrtoint ptr %602 to i64
  %607 = ptrtoint ptr %605 to i64
  %608 = sub i64 %606, %607
  %609 = sdiv exact i64 %608, 192
  %610 = trunc i64 %609 to i32
  invoke void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %17, i32 noundef %610)
          to label %611 unwind label %620

611:                                              ; preds = %600
  br label %612

612:                                              ; preds = %611
  %613 = load ptr, ptr %35, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %613, i32 0, i32 1
  %615 = invoke noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %614)
          to label %616 unwind label %620

616:                                              ; preds = %612
  %617 = icmp ne i32 %615, 0
  br i1 %617, label %628, label %618

618:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %36)
          to label %619 unwind label %624

619:                                              ; preds = %618
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  br label %628

620:                                              ; preds = %612, %600
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %14, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %15, align 4
  br label %633

624:                                              ; preds = %618
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %14, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #8
  br label %633

628:                                              ; preds = %619, %616
  br label %629

629:                                              ; preds = %628
  br label %630

630:                                              ; preds = %629
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %631

631:                                              ; preds = %630
  %632 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  br label %593

633:                                              ; preds = %624, %620
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %4842

634:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #8
  store i8 0, ptr %38, align 1, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 40, ptr %39) #8
  %635 = load ptr, ptr %8, align 8, !tbaa !5
  %636 = getelementptr inbounds %"class.MIR::Function", ptr %635, i32 0, i32 2
  %637 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %636) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #8
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %637, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %638 unwind label %658

638:                                              ; preds = %634
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #8
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  store i32 0, ptr %42, align 4, !tbaa !29
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %639 unwind label %662

639:                                              ; preds = %638
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %640

640:                                              ; preds = %1400, %1398, %639
  %641 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #8
  %642 = icmp ugt i64 %641, 0
  br i1 %642, label %643, label %1402

643:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  %644 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #8
  %645 = load i32, ptr %644, align 4, !tbaa !29
  store i32 %645, ptr %43, align 4, !tbaa !29
  call void @_ZNSt6vectorIjSaIjEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #8
  br label %646

646:                                              ; preds = %643
  %647 = load i32, ptr %43, align 4, !tbaa !29
  %648 = zext i32 %647 to i64
  %649 = load ptr, ptr %8, align 8, !tbaa !5
  %650 = getelementptr inbounds %"class.MIR::Function", ptr %649, i32 0, i32 2
  %651 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %650) #8
  %652 = icmp ult i64 %648, %651
  br i1 %652, label %670, label %653

653:                                              ; preds = %646
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #8
  %654 = getelementptr inbounds %class.anon.186, ptr %45, i32 0, i32 0
  store ptr %43, ptr %654, align 8, !tbaa !5
  %655 = getelementptr inbounds %class.anon.186, ptr %45, i32 0, i32 1
  %656 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %656, ptr %655, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(16) %45) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %44)
          to label %657 unwind label %666

657:                                              ; preds = %653
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #8
  br label %670

658:                                              ; preds = %634
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %14, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %15, align 4
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #8
  br label %1441

662:                                              ; preds = %638
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %14, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %1440

666:                                              ; preds = %653
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %14, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #8
  br label %1401

670:                                              ; preds = %657, %646
  br label %671

671:                                              ; preds = %670
  br label %672

672:                                              ; preds = %671
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #8
  %673 = load i32, ptr %43, align 4, !tbaa !29
  %674 = zext i32 %673 to i64
  %675 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %674)
          to label %676 unwind label %683

676:                                              ; preds = %672
  %677 = getelementptr inbounds { ptr, i64 }, ptr %46, i32 0, i32 0
  %678 = extractvalue { ptr, i64 } %675, 0
  store ptr %678, ptr %677, align 8
  %679 = getelementptr inbounds { ptr, i64 }, ptr %46, i32 0, i32 1
  %680 = extractvalue { ptr, i64 } %675, 1
  store i64 %680, ptr %679, align 8
  %681 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #8
  br i1 %681, label %682, label %687

682:                                              ; preds = %676
  store i32 12, ptr %47, align 4
  br label %1398, !llvm.loop !33

683:                                              ; preds = %672
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %14, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #8
  br label %1401

687:                                              ; preds = %676
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #8
  %688 = load i32, ptr %43, align 4, !tbaa !29
  %689 = zext i32 %688 to i64
  %690 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %689)
          to label %691 unwind label %707

691:                                              ; preds = %687
  %692 = getelementptr inbounds { ptr, i64 }, ptr %48, i32 0, i32 0
  %693 = extractvalue { ptr, i64 } %690, 0
  store ptr %693, ptr %692, align 8
  %694 = getelementptr inbounds { ptr, i64 }, ptr %48, i32 0, i32 1
  %695 = extractvalue { ptr, i64 } %690, 1
  store i64 %695, ptr %694, align 8
  %696 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %48, i1 noundef zeroext true) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  %697 = load i32, ptr %43, align 4, !tbaa !29
  invoke void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %17, i32 noundef %697)
          to label %698 unwind label %711

698:                                              ; preds = %691
  %699 = load ptr, ptr %8, align 8, !tbaa !5
  %700 = getelementptr inbounds %"class.MIR::Function", ptr %699, i32 0, i32 2
  %701 = load i32, ptr %43, align 4, !tbaa !29
  %702 = zext i32 %701 to i64
  %703 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %700, i64 noundef %702) #8
  %704 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %703, i32 0, i32 1
  %705 = invoke noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %704)
          to label %706 unwind label %711

706:                                              ; preds = %698
  switch i32 %705, label %1397 [
    i32 0, label %715
    i32 1, label %716
    i32 2, label %746
    i32 3, label %760
    i32 4, label %774
    i32 5, label %838
    i32 6, label %905
    i32 7, label %1024
    i32 8, label %1125
    i32 9, label %1278
  ]

707:                                              ; preds = %687
  %708 = landingpad { ptr, i32 }
          cleanup
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %14, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  br label %1401

711:                                              ; preds = %698, %691
  %712 = landingpad { ptr, i32 }
          cleanup
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %14, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %15, align 4
  br label %1401

715:                                              ; preds = %706
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 707, ptr noundef @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

716:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %717 = load ptr, ptr %8, align 8, !tbaa !5
  %718 = getelementptr inbounds %"class.MIR::Function", ptr %717, i32 0, i32 2
  %719 = load i32, ptr %43, align 4, !tbaa !29
  %720 = zext i32 %719 to i64
  %721 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %718, i64 noundef %720) #8
  %722 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %721, i32 0, i32 1
  %723 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %722)
          to label %724 unwind label %730

724:                                              ; preds = %716
  store ptr %723, ptr %49, align 8, !tbaa !5
  %725 = load ptr, ptr %49, align 8, !tbaa !5
  br label %726

726:                                              ; preds = %724
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %727 = getelementptr inbounds %class.anon.187, ptr %52, i32 0, i32 0
  store ptr %50, ptr %727, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %51)
          to label %728 unwind label %734

728:                                              ; preds = %726
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  %729 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %729, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %729, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %738

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

734:                                              ; preds = %726
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %14, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  br label %742

738:                                              ; preds = %728
  %739 = landingpad { ptr, i32 }
          cleanup
  %740 = extractvalue { ptr, i32 } %739, 0
  store ptr %740, ptr %14, align 8
  %741 = extractvalue { ptr, i32 } %739, 1
  store i32 %741, ptr %15, align 4
  br label %742

742:                                              ; preds = %738, %734
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %745

743:                                              ; No predecessors!
  br label %744

744:                                              ; preds = %743
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %1397

745:                                              ; preds = %742, %730
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %1401

746:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %747 = load ptr, ptr %8, align 8, !tbaa !5
  %748 = getelementptr inbounds %"class.MIR::Function", ptr %747, i32 0, i32 2
  %749 = load i32, ptr %43, align 4, !tbaa !29
  %750 = zext i32 %749 to i64
  %751 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %748, i64 noundef %750) #8
  %752 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %751, i32 0, i32 1
  %753 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %752)
          to label %754 unwind label %756

754:                                              ; preds = %746
  store ptr %753, ptr %53, align 8, !tbaa !5
  %755 = load ptr, ptr %53, align 8, !tbaa !5
  store i8 1, ptr %38, align 1, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %1397

756:                                              ; preds = %746
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %14, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %1401

760:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %761 = load ptr, ptr %8, align 8, !tbaa !5
  %762 = getelementptr inbounds %"class.MIR::Function", ptr %761, i32 0, i32 2
  %763 = load i32, ptr %43, align 4, !tbaa !29
  %764 = zext i32 %763 to i64
  %765 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %762, i64 noundef %764) #8
  %766 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %765, i32 0, i32 1
  %767 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %766)
          to label %768 unwind label %770

768:                                              ; preds = %760
  store ptr %767, ptr %54, align 8, !tbaa !5
  %769 = load ptr, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %1397

770:                                              ; preds = %760
  %771 = landingpad { ptr, i32 }
          cleanup
  %772 = extractvalue { ptr, i32 } %771, 0
  store ptr %772, ptr %14, align 8
  %773 = extractvalue { ptr, i32 } %771, 1
  store i32 %773, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %1401

774:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %775 = load ptr, ptr %8, align 8, !tbaa !5
  %776 = getelementptr inbounds %"class.MIR::Function", ptr %775, i32 0, i32 2
  %777 = load i32, ptr %43, align 4, !tbaa !29
  %778 = zext i32 %777 to i64
  %779 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %776, i64 noundef %778) #8
  %780 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %779, i32 0, i32 1
  %781 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %780)
          to label %782 unwind label %799

782:                                              ; preds = %774
  store ptr %781, ptr %55, align 8, !tbaa !5
  %783 = load ptr, ptr %55, align 8, !tbaa !5
  br label %784

784:                                              ; preds = %782
  %785 = load ptr, ptr %55, align 8, !tbaa !5
  %786 = load i32, ptr %785, align 4, !tbaa !29
  %787 = zext i32 %786 to i64
  %788 = load ptr, ptr %8, align 8, !tbaa !5
  %789 = getelementptr inbounds %"class.MIR::Function", ptr %788, i32 0, i32 2
  %790 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %789) #8
  %791 = icmp ult i64 %787, %790
  br i1 %791, label %814, label %792

792:                                              ; preds = %784
  br label %793

793:                                              ; preds = %792
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #8
  %794 = getelementptr inbounds %class.anon.188, ptr %58, i32 0, i32 0
  store ptr %56, ptr %794, align 8, !tbaa !5
  %795 = getelementptr inbounds %class.anon.188, ptr %58, i32 0, i32 1
  %796 = load ptr, ptr %55, align 8, !tbaa !5
  store ptr %796, ptr %795, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(16) %58) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %57)
          to label %797 unwind label %803

797:                                              ; preds = %793
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #8
  %798 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %798, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %798, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %807

799:                                              ; preds = %827, %774
  %800 = landingpad { ptr, i32 }
          cleanup
  %801 = extractvalue { ptr, i32 } %800, 0
  store ptr %801, ptr %14, align 8
  %802 = extractvalue { ptr, i32 } %800, 1
  store i32 %802, ptr %15, align 4
  br label %837

803:                                              ; preds = %793
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %14, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #8
  br label %811

807:                                              ; preds = %797
  %808 = landingpad { ptr, i32 }
          cleanup
  %809 = extractvalue { ptr, i32 } %808, 0
  store ptr %809, ptr %14, align 8
  %810 = extractvalue { ptr, i32 } %808, 1
  store i32 %810, ptr %15, align 4
  br label %811

811:                                              ; preds = %807, %803
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %837

812:                                              ; No predecessors!
  br label %813

813:                                              ; preds = %812
  br label %814

814:                                              ; preds = %813, %784
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #8
  %815 = load ptr, ptr %55, align 8, !tbaa !5
  %816 = load i32, ptr %815, align 4, !tbaa !29
  %817 = zext i32 %816 to i64
  %818 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %817)
          to label %819 unwind label %830

819:                                              ; preds = %814
  %820 = getelementptr inbounds { ptr, i64 }, ptr %59, i32 0, i32 0
  %821 = extractvalue { ptr, i64 } %818, 0
  store ptr %821, ptr %820, align 8
  %822 = getelementptr inbounds { ptr, i64 }, ptr %59, i32 0, i32 1
  %823 = extractvalue { ptr, i64 } %818, 1
  store i64 %823, ptr %822, align 8
  %824 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %59) #8
  %825 = zext i1 %824 to i32
  %826 = icmp eq i32 %825, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #8
  br i1 %826, label %827, label %834

827:                                              ; preds = %819
  %828 = load ptr, ptr %55, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %828)
          to label %829 unwind label %799

829:                                              ; preds = %827
  br label %834

830:                                              ; preds = %814
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %14, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #8
  br label %837

834:                                              ; preds = %829, %819
  br label %835

835:                                              ; preds = %834
  br label %836

836:                                              ; preds = %835
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %1397

837:                                              ; preds = %830, %811, %799
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %1401

838:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %839 = load ptr, ptr %8, align 8, !tbaa !5
  %840 = getelementptr inbounds %"class.MIR::Function", ptr %839, i32 0, i32 2
  %841 = load i32, ptr %43, align 4, !tbaa !29
  %842 = zext i32 %841 to i64
  %843 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %840, i64 noundef %842) #8
  %844 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %843, i32 0, i32 1
  %845 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %844)
          to label %846 unwind label %864

846:                                              ; preds = %838
  store ptr %845, ptr %60, align 8, !tbaa !5
  %847 = load ptr, ptr %60, align 8, !tbaa !5
  br label %848

848:                                              ; preds = %846
  %849 = load ptr, ptr %60, align 8, !tbaa !5
  %850 = getelementptr inbounds %"struct.MIR::Terminator::Data_Panic", ptr %849, i32 0, i32 0
  %851 = load i32, ptr %850, align 4, !tbaa !35
  %852 = zext i32 %851 to i64
  %853 = load ptr, ptr %8, align 8, !tbaa !5
  %854 = getelementptr inbounds %"class.MIR::Function", ptr %853, i32 0, i32 2
  %855 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %854) #8
  %856 = icmp ult i64 %852, %855
  br i1 %856, label %879, label %857

857:                                              ; preds = %848
  br label %858

858:                                              ; preds = %857
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #8
  %859 = getelementptr inbounds %class.anon.189, ptr %63, i32 0, i32 0
  store ptr %61, ptr %859, align 8, !tbaa !5
  %860 = getelementptr inbounds %class.anon.189, ptr %63, i32 0, i32 1
  %861 = load ptr, ptr %60, align 8, !tbaa !5
  store ptr %861, ptr %860, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(16) %63) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %62)
          to label %862 unwind label %868

862:                                              ; preds = %858
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #8
  %863 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %863, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %863, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %872

864:                                              ; preds = %893, %838
  %865 = landingpad { ptr, i32 }
          cleanup
  %866 = extractvalue { ptr, i32 } %865, 0
  store ptr %866, ptr %14, align 8
  %867 = extractvalue { ptr, i32 } %865, 1
  store i32 %867, ptr %15, align 4
  br label %904

868:                                              ; preds = %858
  %869 = landingpad { ptr, i32 }
          cleanup
  %870 = extractvalue { ptr, i32 } %869, 0
  store ptr %870, ptr %14, align 8
  %871 = extractvalue { ptr, i32 } %869, 1
  store i32 %871, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #8
  br label %876

872:                                              ; preds = %862
  %873 = landingpad { ptr, i32 }
          cleanup
  %874 = extractvalue { ptr, i32 } %873, 0
  store ptr %874, ptr %14, align 8
  %875 = extractvalue { ptr, i32 } %873, 1
  store i32 %875, ptr %15, align 4
  br label %876

876:                                              ; preds = %872, %868
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %904

877:                                              ; No predecessors!
  br label %878

878:                                              ; preds = %877
  br label %879

879:                                              ; preds = %878, %848
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #8
  %880 = load ptr, ptr %60, align 8, !tbaa !5
  %881 = getelementptr inbounds %"struct.MIR::Terminator::Data_Panic", ptr %880, i32 0, i32 0
  %882 = load i32, ptr %881, align 4, !tbaa !35
  %883 = zext i32 %882 to i64
  %884 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %883)
          to label %885 unwind label %897

885:                                              ; preds = %879
  %886 = getelementptr inbounds { ptr, i64 }, ptr %64, i32 0, i32 0
  %887 = extractvalue { ptr, i64 } %884, 0
  store ptr %887, ptr %886, align 8
  %888 = getelementptr inbounds { ptr, i64 }, ptr %64, i32 0, i32 1
  %889 = extractvalue { ptr, i64 } %884, 1
  store i64 %889, ptr %888, align 8
  %890 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %64) #8
  %891 = zext i1 %890 to i32
  %892 = icmp eq i32 %891, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #8
  br i1 %892, label %893, label %901

893:                                              ; preds = %885
  %894 = load ptr, ptr %60, align 8, !tbaa !5
  %895 = getelementptr inbounds %"struct.MIR::Terminator::Data_Panic", ptr %894, i32 0, i32 0
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %895)
          to label %896 unwind label %864

896:                                              ; preds = %893
  br label %901

897:                                              ; preds = %879
  %898 = landingpad { ptr, i32 }
          cleanup
  %899 = extractvalue { ptr, i32 } %898, 0
  store ptr %899, ptr %14, align 8
  %900 = extractvalue { ptr, i32 } %898, 1
  store i32 %900, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #8
  br label %904

901:                                              ; preds = %896, %885
  br label %902

902:                                              ; preds = %901
  br label %903

903:                                              ; preds = %902
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %1397

904:                                              ; preds = %897, %876, %864
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %1401

905:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %906 = load ptr, ptr %8, align 8, !tbaa !5
  %907 = getelementptr inbounds %"class.MIR::Function", ptr %906, i32 0, i32 2
  %908 = load i32, ptr %43, align 4, !tbaa !29
  %909 = zext i32 %908 to i64
  %910 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %907, i64 noundef %909) #8
  %911 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %910, i32 0, i32 1
  %912 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %911)
          to label %913 unwind label %931

913:                                              ; preds = %905
  store ptr %912, ptr %65, align 8, !tbaa !5
  %914 = load ptr, ptr %65, align 8, !tbaa !5
  br label %915

915:                                              ; preds = %913
  %916 = load ptr, ptr %65, align 8, !tbaa !5
  %917 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %916, i32 0, i32 1
  %918 = load i32, ptr %917, align 8, !tbaa !37
  %919 = zext i32 %918 to i64
  %920 = load ptr, ptr %8, align 8, !tbaa !5
  %921 = getelementptr inbounds %"class.MIR::Function", ptr %920, i32 0, i32 2
  %922 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %921) #8
  %923 = icmp ult i64 %919, %922
  br i1 %923, label %946, label %924

924:                                              ; preds = %915
  br label %925

925:                                              ; preds = %924
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #8
  %926 = getelementptr inbounds %class.anon.190, ptr %68, i32 0, i32 0
  store ptr %66, ptr %926, align 8, !tbaa !5
  %927 = getelementptr inbounds %class.anon.190, ptr %68, i32 0, i32 1
  %928 = load ptr, ptr %65, align 8, !tbaa !5
  store ptr %928, ptr %927, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull align 8 dereferenceable(16) %68) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %67)
          to label %929 unwind label %935

929:                                              ; preds = %925
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #8
  %930 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %930, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %930, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %939

931:                                              ; preds = %1012, %960, %905
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %14, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %15, align 4
  br label %1023

935:                                              ; preds = %925
  %936 = landingpad { ptr, i32 }
          cleanup
  %937 = extractvalue { ptr, i32 } %936, 0
  store ptr %937, ptr %14, align 8
  %938 = extractvalue { ptr, i32 } %936, 1
  store i32 %938, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #8
  br label %943

939:                                              ; preds = %929
  %940 = landingpad { ptr, i32 }
          cleanup
  %941 = extractvalue { ptr, i32 } %940, 0
  store ptr %941, ptr %14, align 8
  %942 = extractvalue { ptr, i32 } %940, 1
  store i32 %942, ptr %15, align 4
  br label %943

943:                                              ; preds = %939, %935
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  br label %1023

944:                                              ; No predecessors!
  br label %945

945:                                              ; preds = %944
  br label %946

946:                                              ; preds = %945, %915
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #8
  %947 = load ptr, ptr %65, align 8, !tbaa !5
  %948 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %947, i32 0, i32 1
  %949 = load i32, ptr %948, align 8, !tbaa !37
  %950 = zext i32 %949 to i64
  %951 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %950)
          to label %952 unwind label %964

952:                                              ; preds = %946
  %953 = getelementptr inbounds { ptr, i64 }, ptr %69, i32 0, i32 0
  %954 = extractvalue { ptr, i64 } %951, 0
  store ptr %954, ptr %953, align 8
  %955 = getelementptr inbounds { ptr, i64 }, ptr %69, i32 0, i32 1
  %956 = extractvalue { ptr, i64 } %951, 1
  store i64 %956, ptr %955, align 8
  %957 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %69) #8
  %958 = zext i1 %957 to i32
  %959 = icmp eq i32 %958, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #8
  br i1 %959, label %960, label %968

960:                                              ; preds = %952
  %961 = load ptr, ptr %65, align 8, !tbaa !5
  %962 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %961, i32 0, i32 1
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %962)
          to label %963 unwind label %931

963:                                              ; preds = %960
  br label %968

964:                                              ; preds = %946
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %14, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #8
  br label %1023

968:                                              ; preds = %963, %952
  br label %969

969:                                              ; preds = %968
  br label %970

970:                                              ; preds = %969
  br label %971

971:                                              ; preds = %970
  %972 = load ptr, ptr %65, align 8, !tbaa !5
  %973 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %972, i32 0, i32 2
  %974 = load i32, ptr %973, align 4, !tbaa !45
  %975 = zext i32 %974 to i64
  %976 = load ptr, ptr %8, align 8, !tbaa !5
  %977 = getelementptr inbounds %"class.MIR::Function", ptr %976, i32 0, i32 2
  %978 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %977) #8
  %979 = icmp ult i64 %975, %978
  br i1 %979, label %998, label %980

980:                                              ; preds = %971
  br label %981

981:                                              ; preds = %980
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %72) #8
  %982 = getelementptr inbounds %class.anon.191, ptr %72, i32 0, i32 0
  store ptr %70, ptr %982, align 8, !tbaa !5
  %983 = getelementptr inbounds %class.anon.191, ptr %72, i32 0, i32 1
  %984 = load ptr, ptr %65, align 8, !tbaa !5
  store ptr %984, ptr %983, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(16) %72) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %71)
          to label %985 unwind label %987

985:                                              ; preds = %981
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #8
  %986 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %986, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %986, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %991

987:                                              ; preds = %981
  %988 = landingpad { ptr, i32 }
          cleanup
  %989 = extractvalue { ptr, i32 } %988, 0
  store ptr %989, ptr %14, align 8
  %990 = extractvalue { ptr, i32 } %988, 1
  store i32 %990, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %72) #8
  br label %995

991:                                              ; preds = %985
  %992 = landingpad { ptr, i32 }
          cleanup
  %993 = extractvalue { ptr, i32 } %992, 0
  store ptr %993, ptr %14, align 8
  %994 = extractvalue { ptr, i32 } %992, 1
  store i32 %994, ptr %15, align 4
  br label %995

995:                                              ; preds = %991, %987
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %1023

996:                                              ; No predecessors!
  br label %997

997:                                              ; preds = %996
  br label %998

998:                                              ; preds = %997, %971
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #8
  %999 = load ptr, ptr %65, align 8, !tbaa !5
  %1000 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %999, i32 0, i32 2
  %1001 = load i32, ptr %1000, align 4, !tbaa !45
  %1002 = zext i32 %1001 to i64
  %1003 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %1002)
          to label %1004 unwind label %1016

1004:                                             ; preds = %998
  %1005 = getelementptr inbounds { ptr, i64 }, ptr %73, i32 0, i32 0
  %1006 = extractvalue { ptr, i64 } %1003, 0
  store ptr %1006, ptr %1005, align 8
  %1007 = getelementptr inbounds { ptr, i64 }, ptr %73, i32 0, i32 1
  %1008 = extractvalue { ptr, i64 } %1003, 1
  store i64 %1008, ptr %1007, align 8
  %1009 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %73) #8
  %1010 = zext i1 %1009 to i32
  %1011 = icmp eq i32 %1010, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #8
  br i1 %1011, label %1012, label %1020

1012:                                             ; preds = %1004
  %1013 = load ptr, ptr %65, align 8, !tbaa !5
  %1014 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %1013, i32 0, i32 2
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %1014)
          to label %1015 unwind label %931

1015:                                             ; preds = %1012
  br label %1020

1016:                                             ; preds = %998
  %1017 = landingpad { ptr, i32 }
          cleanup
  %1018 = extractvalue { ptr, i32 } %1017, 0
  store ptr %1018, ptr %14, align 8
  %1019 = extractvalue { ptr, i32 } %1017, 1
  store i32 %1019, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #8
  br label %1023

1020:                                             ; preds = %1015, %1004
  br label %1021

1021:                                             ; preds = %1020
  br label %1022

1022:                                             ; preds = %1021
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  br label %1397

1023:                                             ; preds = %1016, %995, %964, %943, %931
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  br label %1401

1024:                                             ; preds = %706
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %1025 = load ptr, ptr %8, align 8, !tbaa !5
  %1026 = getelementptr inbounds %"class.MIR::Function", ptr %1025, i32 0, i32 2
  %1027 = load i32, ptr %43, align 4, !tbaa !29
  %1028 = zext i32 %1027 to i64
  %1029 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1026, i64 noundef %1028) #8
  %1030 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1029, i32 0, i32 1
  %1031 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %1030)
          to label %1032 unwind label %1042

1032:                                             ; preds = %1024
  store ptr %1031, ptr %74, align 8, !tbaa !5
  %1033 = load ptr, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #8
  store i32 0, ptr %75, align 4, !tbaa !29
  br label %1034

1034:                                             ; preds = %1119, %1032
  %1035 = load i32, ptr %75, align 4, !tbaa !29
  %1036 = zext i32 %1035 to i64
  %1037 = load ptr, ptr %74, align 8, !tbaa !5
  %1038 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1037, i32 0, i32 1
  %1039 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1038) #8
  %1040 = icmp ult i64 %1036, %1039
  br i1 %1040, label %1046, label %1041

1041:                                             ; preds = %1034
  store i32 35, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #8
  br label %1123

1042:                                             ; preds = %1024
  %1043 = landingpad { ptr, i32 }
          cleanup
  %1044 = extractvalue { ptr, i32 } %1043, 0
  store ptr %1044, ptr %14, align 8
  %1045 = extractvalue { ptr, i32 } %1043, 1
  store i32 %1045, ptr %15, align 4
  br label %1124

1046:                                             ; preds = %1034
  br label %1047

1047:                                             ; preds = %1046
  %1048 = load ptr, ptr %74, align 8, !tbaa !5
  %1049 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1048, i32 0, i32 1
  %1050 = load i32, ptr %75, align 4, !tbaa !29
  %1051 = zext i32 %1050 to i64
  %1052 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1049, i64 noundef %1051) #8
  %1053 = load i32, ptr %1052, align 4, !tbaa !29
  %1054 = zext i32 %1053 to i64
  %1055 = load ptr, ptr %8, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"class.MIR::Function", ptr %1055, i32 0, i32 2
  %1057 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1056) #8
  %1058 = icmp ult i64 %1054, %1057
  br i1 %1058, label %1084, label %1059

1059:                                             ; preds = %1047
  br label %1060

1060:                                             ; preds = %1059
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %78) #8
  %1061 = getelementptr inbounds %class.anon.192, ptr %78, i32 0, i32 0
  store ptr %76, ptr %1061, align 8, !tbaa !5
  %1062 = getelementptr inbounds %class.anon.192, ptr %78, i32 0, i32 1
  store ptr %75, ptr %1062, align 8, !tbaa !5
  %1063 = getelementptr inbounds %class.anon.192, ptr %78, i32 0, i32 2
  %1064 = load ptr, ptr %74, align 8, !tbaa !5
  store ptr %1064, ptr %1063, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 8 dereferenceable(24) %78)
          to label %1065 unwind label %1068

1065:                                             ; preds = %1060
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %77)
          to label %1066 unwind label %1072

1066:                                             ; preds = %1065
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #8
  %1067 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1067, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1067, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %1077

1068:                                             ; preds = %1060
  %1069 = landingpad { ptr, i32 }
          cleanup
  %1070 = extractvalue { ptr, i32 } %1069, 0
  store ptr %1070, ptr %14, align 8
  %1071 = extractvalue { ptr, i32 } %1069, 1
  store i32 %1071, ptr %15, align 4
  br label %1076

1072:                                             ; preds = %1065
  %1073 = landingpad { ptr, i32 }
          cleanup
  %1074 = extractvalue { ptr, i32 } %1073, 0
  store ptr %1074, ptr %14, align 8
  %1075 = extractvalue { ptr, i32 } %1073, 1
  store i32 %1075, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  br label %1076

1076:                                             ; preds = %1072, %1068
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #8
  br label %1081

1077:                                             ; preds = %1066
  %1078 = landingpad { ptr, i32 }
          cleanup
  %1079 = extractvalue { ptr, i32 } %1078, 0
  store ptr %1079, ptr %14, align 8
  %1080 = extractvalue { ptr, i32 } %1078, 1
  store i32 %1080, ptr %15, align 4
  br label %1081

1081:                                             ; preds = %1077, %1076
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %1122

1082:                                             ; No predecessors!
  br label %1083

1083:                                             ; preds = %1082
  br label %1084

1084:                                             ; preds = %1083, %1047
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #8
  %1085 = load ptr, ptr %74, align 8, !tbaa !5
  %1086 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1085, i32 0, i32 1
  %1087 = load i32, ptr %75, align 4, !tbaa !29
  %1088 = zext i32 %1087 to i64
  %1089 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1086, i64 noundef %1088) #8
  %1090 = load i32, ptr %1089, align 4, !tbaa !29
  %1091 = zext i32 %1090 to i64
  %1092 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %1091)
          to label %1093 unwind label %1108

1093:                                             ; preds = %1084
  %1094 = getelementptr inbounds { ptr, i64 }, ptr %79, i32 0, i32 0
  %1095 = extractvalue { ptr, i64 } %1092, 0
  store ptr %1095, ptr %1094, align 8
  %1096 = getelementptr inbounds { ptr, i64 }, ptr %79, i32 0, i32 1
  %1097 = extractvalue { ptr, i64 } %1092, 1
  store i64 %1097, ptr %1096, align 8
  %1098 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %79) #8
  %1099 = zext i1 %1098 to i32
  %1100 = icmp eq i32 %1099, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #8
  br i1 %1100, label %1101, label %1116

1101:                                             ; preds = %1093
  %1102 = load ptr, ptr %74, align 8, !tbaa !5
  %1103 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %1102, i32 0, i32 1
  %1104 = load i32, ptr %75, align 4, !tbaa !29
  %1105 = zext i32 %1104 to i64
  %1106 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1103, i64 noundef %1105) #8
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %1106)
          to label %1107 unwind label %1112

1107:                                             ; preds = %1101
  br label %1116

1108:                                             ; preds = %1084
  %1109 = landingpad { ptr, i32 }
          cleanup
  %1110 = extractvalue { ptr, i32 } %1109, 0
  store ptr %1110, ptr %14, align 8
  %1111 = extractvalue { ptr, i32 } %1109, 1
  store i32 %1111, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #8
  br label %1122

1112:                                             ; preds = %1101
  %1113 = landingpad { ptr, i32 }
          cleanup
  %1114 = extractvalue { ptr, i32 } %1113, 0
  store ptr %1114, ptr %14, align 8
  %1115 = extractvalue { ptr, i32 } %1113, 1
  store i32 %1115, ptr %15, align 4
  br label %1122

1116:                                             ; preds = %1107, %1093
  br label %1117

1117:                                             ; preds = %1116
  br label %1118

1118:                                             ; preds = %1117
  br label %1119

1119:                                             ; preds = %1118
  %1120 = load i32, ptr %75, align 4, !tbaa !29
  %1121 = add i32 %1120, 1
  store i32 %1121, ptr %75, align 4, !tbaa !29
  br label %1034, !llvm.loop !46

1122:                                             ; preds = %1112, %1108, %1081
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #8
  br label %1124

1123:                                             ; preds = %1041
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %1397

1124:                                             ; preds = %1122, %1042
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %1401

1125:                                             ; preds = %706
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %1126 = load ptr, ptr %8, align 8, !tbaa !5
  %1127 = getelementptr inbounds %"class.MIR::Function", ptr %1126, i32 0, i32 2
  %1128 = load i32, ptr %43, align 4, !tbaa !29
  %1129 = zext i32 %1128 to i64
  %1130 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1127, i64 noundef %1129) #8
  %1131 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1130, i32 0, i32 1
  %1132 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %1131)
          to label %1133 unwind label %1143

1133:                                             ; preds = %1125
  store ptr %1132, ptr %80, align 8, !tbaa !5
  %1134 = load ptr, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #8
  store i32 0, ptr %81, align 4, !tbaa !29
  br label %1135

1135:                                             ; preds = %1220, %1133
  %1136 = load i32, ptr %81, align 4, !tbaa !29
  %1137 = zext i32 %1136 to i64
  %1138 = load ptr, ptr %80, align 8, !tbaa !5
  %1139 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1138, i32 0, i32 2
  %1140 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1139) #8
  %1141 = icmp ult i64 %1137, %1140
  br i1 %1141, label %1147, label %1142

1142:                                             ; preds = %1135
  store i32 42, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #8
  br label %1224

1143:                                             ; preds = %1266, %1125
  %1144 = landingpad { ptr, i32 }
          cleanup
  %1145 = extractvalue { ptr, i32 } %1144, 0
  store ptr %1145, ptr %14, align 8
  %1146 = extractvalue { ptr, i32 } %1144, 1
  store i32 %1146, ptr %15, align 4
  br label %1277

1147:                                             ; preds = %1135
  br label %1148

1148:                                             ; preds = %1147
  %1149 = load ptr, ptr %80, align 8, !tbaa !5
  %1150 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1149, i32 0, i32 2
  %1151 = load i32, ptr %81, align 4, !tbaa !29
  %1152 = zext i32 %1151 to i64
  %1153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1150, i64 noundef %1152) #8
  %1154 = load i32, ptr %1153, align 4, !tbaa !29
  %1155 = zext i32 %1154 to i64
  %1156 = load ptr, ptr %8, align 8, !tbaa !5
  %1157 = getelementptr inbounds %"class.MIR::Function", ptr %1156, i32 0, i32 2
  %1158 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1157) #8
  %1159 = icmp ult i64 %1155, %1158
  br i1 %1159, label %1185, label %1160

1160:                                             ; preds = %1148
  br label %1161

1161:                                             ; preds = %1160
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %84) #8
  %1162 = getelementptr inbounds %class.anon.193, ptr %84, i32 0, i32 0
  store ptr %82, ptr %1162, align 8, !tbaa !5
  %1163 = getelementptr inbounds %class.anon.193, ptr %84, i32 0, i32 1
  store ptr %81, ptr %1163, align 8, !tbaa !5
  %1164 = getelementptr inbounds %class.anon.193, ptr %84, i32 0, i32 2
  %1165 = load ptr, ptr %80, align 8, !tbaa !5
  store ptr %1165, ptr %1164, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(24) %84)
          to label %1166 unwind label %1169

1166:                                             ; preds = %1161
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %83)
          to label %1167 unwind label %1173

1167:                                             ; preds = %1166
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %84) #8
  %1168 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1168, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1168, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %1178

1169:                                             ; preds = %1161
  %1170 = landingpad { ptr, i32 }
          cleanup
  %1171 = extractvalue { ptr, i32 } %1170, 0
  store ptr %1171, ptr %14, align 8
  %1172 = extractvalue { ptr, i32 } %1170, 1
  store i32 %1172, ptr %15, align 4
  br label %1177

1173:                                             ; preds = %1166
  %1174 = landingpad { ptr, i32 }
          cleanup
  %1175 = extractvalue { ptr, i32 } %1174, 0
  store ptr %1175, ptr %14, align 8
  %1176 = extractvalue { ptr, i32 } %1174, 1
  store i32 %1176, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  br label %1177

1177:                                             ; preds = %1173, %1169
  call void @llvm.lifetime.end.p0(i64 24, ptr %84) #8
  br label %1182

1178:                                             ; preds = %1167
  %1179 = landingpad { ptr, i32 }
          cleanup
  %1180 = extractvalue { ptr, i32 } %1179, 0
  store ptr %1180, ptr %14, align 8
  %1181 = extractvalue { ptr, i32 } %1179, 1
  store i32 %1181, ptr %15, align 4
  br label %1182

1182:                                             ; preds = %1178, %1177
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %1223

1183:                                             ; No predecessors!
  br label %1184

1184:                                             ; preds = %1183
  br label %1185

1185:                                             ; preds = %1184, %1148
  call void @llvm.lifetime.start.p0(i64 16, ptr %85) #8
  %1186 = load ptr, ptr %80, align 8, !tbaa !5
  %1187 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1186, i32 0, i32 2
  %1188 = load i32, ptr %81, align 4, !tbaa !29
  %1189 = zext i32 %1188 to i64
  %1190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1187, i64 noundef %1189) #8
  %1191 = load i32, ptr %1190, align 4, !tbaa !29
  %1192 = zext i32 %1191 to i64
  %1193 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %1192)
          to label %1194 unwind label %1209

1194:                                             ; preds = %1185
  %1195 = getelementptr inbounds { ptr, i64 }, ptr %85, i32 0, i32 0
  %1196 = extractvalue { ptr, i64 } %1193, 0
  store ptr %1196, ptr %1195, align 8
  %1197 = getelementptr inbounds { ptr, i64 }, ptr %85, i32 0, i32 1
  %1198 = extractvalue { ptr, i64 } %1193, 1
  store i64 %1198, ptr %1197, align 8
  %1199 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %85) #8
  %1200 = zext i1 %1199 to i32
  %1201 = icmp eq i32 %1200, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #8
  br i1 %1201, label %1202, label %1217

1202:                                             ; preds = %1194
  %1203 = load ptr, ptr %80, align 8, !tbaa !5
  %1204 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1203, i32 0, i32 2
  %1205 = load i32, ptr %81, align 4, !tbaa !29
  %1206 = zext i32 %1205 to i64
  %1207 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1204, i64 noundef %1206) #8
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %1207)
          to label %1208 unwind label %1213

1208:                                             ; preds = %1202
  br label %1217

1209:                                             ; preds = %1185
  %1210 = landingpad { ptr, i32 }
          cleanup
  %1211 = extractvalue { ptr, i32 } %1210, 0
  store ptr %1211, ptr %14, align 8
  %1212 = extractvalue { ptr, i32 } %1210, 1
  store i32 %1212, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #8
  br label %1223

1213:                                             ; preds = %1202
  %1214 = landingpad { ptr, i32 }
          cleanup
  %1215 = extractvalue { ptr, i32 } %1214, 0
  store ptr %1215, ptr %14, align 8
  %1216 = extractvalue { ptr, i32 } %1214, 1
  store i32 %1216, ptr %15, align 4
  br label %1223

1217:                                             ; preds = %1208, %1194
  br label %1218

1218:                                             ; preds = %1217
  br label %1219

1219:                                             ; preds = %1218
  br label %1220

1220:                                             ; preds = %1219
  %1221 = load i32, ptr %81, align 4, !tbaa !29
  %1222 = add i32 %1221, 1
  store i32 %1222, ptr %81, align 4, !tbaa !29
  br label %1135, !llvm.loop !47

1223:                                             ; preds = %1213, %1209, %1182
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #8
  br label %1277

1224:                                             ; preds = %1142
  br label %1225

1225:                                             ; preds = %1224
  %1226 = load ptr, ptr %80, align 8, !tbaa !5
  %1227 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1226, i32 0, i32 1
  %1228 = load i32, ptr %1227, align 8, !tbaa !48
  %1229 = zext i32 %1228 to i64
  %1230 = load ptr, ptr %8, align 8, !tbaa !5
  %1231 = getelementptr inbounds %"class.MIR::Function", ptr %1230, i32 0, i32 2
  %1232 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1231) #8
  %1233 = icmp ult i64 %1229, %1232
  br i1 %1233, label %1252, label %1234

1234:                                             ; preds = %1225
  br label %1235

1235:                                             ; preds = %1234
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #8
  %1236 = getelementptr inbounds %class.anon.194, ptr %88, i32 0, i32 0
  store ptr %86, ptr %1236, align 8, !tbaa !5
  %1237 = getelementptr inbounds %class.anon.194, ptr %88, i32 0, i32 1
  %1238 = load ptr, ptr %80, align 8, !tbaa !5
  store ptr %1238, ptr %1237, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(16) %88) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %87)
          to label %1239 unwind label %1241

1239:                                             ; preds = %1235
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #8
  %1240 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1240, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1240, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %1245

1241:                                             ; preds = %1235
  %1242 = landingpad { ptr, i32 }
          cleanup
  %1243 = extractvalue { ptr, i32 } %1242, 0
  store ptr %1243, ptr %14, align 8
  %1244 = extractvalue { ptr, i32 } %1242, 1
  store i32 %1244, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #8
  br label %1249

1245:                                             ; preds = %1239
  %1246 = landingpad { ptr, i32 }
          cleanup
  %1247 = extractvalue { ptr, i32 } %1246, 0
  store ptr %1247, ptr %14, align 8
  %1248 = extractvalue { ptr, i32 } %1246, 1
  store i32 %1248, ptr %15, align 4
  br label %1249

1249:                                             ; preds = %1245, %1241
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  br label %1277

1250:                                             ; No predecessors!
  br label %1251

1251:                                             ; preds = %1250
  br label %1252

1252:                                             ; preds = %1251, %1225
  call void @llvm.lifetime.start.p0(i64 16, ptr %89) #8
  %1253 = load ptr, ptr %80, align 8, !tbaa !5
  %1254 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1253, i32 0, i32 1
  %1255 = load i32, ptr %1254, align 8, !tbaa !48
  %1256 = zext i32 %1255 to i64
  %1257 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %1256)
          to label %1258 unwind label %1270

1258:                                             ; preds = %1252
  %1259 = getelementptr inbounds { ptr, i64 }, ptr %89, i32 0, i32 0
  %1260 = extractvalue { ptr, i64 } %1257, 0
  store ptr %1260, ptr %1259, align 8
  %1261 = getelementptr inbounds { ptr, i64 }, ptr %89, i32 0, i32 1
  %1262 = extractvalue { ptr, i64 } %1257, 1
  store i64 %1262, ptr %1261, align 8
  %1263 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %89) #8
  %1264 = zext i1 %1263 to i32
  %1265 = icmp eq i32 %1264, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #8
  br i1 %1265, label %1266, label %1274

1266:                                             ; preds = %1258
  %1267 = load ptr, ptr %80, align 8, !tbaa !5
  %1268 = getelementptr inbounds %"struct.MIR::Terminator::Data_SwitchValue", ptr %1267, i32 0, i32 1
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %1268)
          to label %1269 unwind label %1143

1269:                                             ; preds = %1266
  br label %1274

1270:                                             ; preds = %1252
  %1271 = landingpad { ptr, i32 }
          cleanup
  %1272 = extractvalue { ptr, i32 } %1271, 0
  store ptr %1272, ptr %14, align 8
  %1273 = extractvalue { ptr, i32 } %1271, 1
  store i32 %1273, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #8
  br label %1277

1274:                                             ; preds = %1269, %1258
  br label %1275

1275:                                             ; preds = %1274
  br label %1276

1276:                                             ; preds = %1275
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %1397

1277:                                             ; preds = %1270, %1249, %1223, %1143
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %1401

1278:                                             ; preds = %706
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  %1279 = load ptr, ptr %8, align 8, !tbaa !5
  %1280 = getelementptr inbounds %"class.MIR::Function", ptr %1279, i32 0, i32 2
  %1281 = load i32, ptr %43, align 4, !tbaa !29
  %1282 = zext i32 %1281 to i64
  %1283 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1280, i64 noundef %1282) #8
  %1284 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1283, i32 0, i32 1
  %1285 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %1284)
          to label %1286 unwind label %1304

1286:                                             ; preds = %1278
  store ptr %1285, ptr %90, align 8, !tbaa !5
  %1287 = load ptr, ptr %90, align 8, !tbaa !5
  br label %1288

1288:                                             ; preds = %1286
  %1289 = load ptr, ptr %90, align 8, !tbaa !5
  %1290 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1289, i32 0, i32 0
  %1291 = load i32, ptr %1290, align 8, !tbaa !56
  %1292 = zext i32 %1291 to i64
  %1293 = load ptr, ptr %8, align 8, !tbaa !5
  %1294 = getelementptr inbounds %"class.MIR::Function", ptr %1293, i32 0, i32 2
  %1295 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1294) #8
  %1296 = icmp ult i64 %1292, %1295
  br i1 %1296, label %1319, label %1297

1297:                                             ; preds = %1288
  br label %1298

1298:                                             ; preds = %1297
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #8
  %1299 = getelementptr inbounds %class.anon.195, ptr %93, i32 0, i32 0
  store ptr %91, ptr %1299, align 8, !tbaa !5
  %1300 = getelementptr inbounds %class.anon.195, ptr %93, i32 0, i32 1
  %1301 = load ptr, ptr %90, align 8, !tbaa !5
  store ptr %1301, ptr %1300, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(16) %93) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %92)
          to label %1302 unwind label %1308

1302:                                             ; preds = %1298
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #8
  %1303 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1303, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1303, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %1312

1304:                                             ; preds = %1385, %1333, %1278
  %1305 = landingpad { ptr, i32 }
          cleanup
  %1306 = extractvalue { ptr, i32 } %1305, 0
  store ptr %1306, ptr %14, align 8
  %1307 = extractvalue { ptr, i32 } %1305, 1
  store i32 %1307, ptr %15, align 4
  br label %1396

1308:                                             ; preds = %1298
  %1309 = landingpad { ptr, i32 }
          cleanup
  %1310 = extractvalue { ptr, i32 } %1309, 0
  store ptr %1310, ptr %14, align 8
  %1311 = extractvalue { ptr, i32 } %1309, 1
  store i32 %1311, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #8
  br label %1316

1312:                                             ; preds = %1302
  %1313 = landingpad { ptr, i32 }
          cleanup
  %1314 = extractvalue { ptr, i32 } %1313, 0
  store ptr %1314, ptr %14, align 8
  %1315 = extractvalue { ptr, i32 } %1313, 1
  store i32 %1315, ptr %15, align 4
  br label %1316

1316:                                             ; preds = %1312, %1308
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %1396

1317:                                             ; No predecessors!
  br label %1318

1318:                                             ; preds = %1317
  br label %1319

1319:                                             ; preds = %1318, %1288
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #8
  %1320 = load ptr, ptr %90, align 8, !tbaa !5
  %1321 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1320, i32 0, i32 0
  %1322 = load i32, ptr %1321, align 8, !tbaa !56
  %1323 = zext i32 %1322 to i64
  %1324 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %1323)
          to label %1325 unwind label %1337

1325:                                             ; preds = %1319
  %1326 = getelementptr inbounds { ptr, i64 }, ptr %94, i32 0, i32 0
  %1327 = extractvalue { ptr, i64 } %1324, 0
  store ptr %1327, ptr %1326, align 8
  %1328 = getelementptr inbounds { ptr, i64 }, ptr %94, i32 0, i32 1
  %1329 = extractvalue { ptr, i64 } %1324, 1
  store i64 %1329, ptr %1328, align 8
  %1330 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %94) #8
  %1331 = zext i1 %1330 to i32
  %1332 = icmp eq i32 %1331, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #8
  br i1 %1332, label %1333, label %1341

1333:                                             ; preds = %1325
  %1334 = load ptr, ptr %90, align 8, !tbaa !5
  %1335 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1334, i32 0, i32 0
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %1335)
          to label %1336 unwind label %1304

1336:                                             ; preds = %1333
  br label %1341

1337:                                             ; preds = %1319
  %1338 = landingpad { ptr, i32 }
          cleanup
  %1339 = extractvalue { ptr, i32 } %1338, 0
  store ptr %1339, ptr %14, align 8
  %1340 = extractvalue { ptr, i32 } %1338, 1
  store i32 %1340, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #8
  br label %1396

1341:                                             ; preds = %1336, %1325
  br label %1342

1342:                                             ; preds = %1341
  br label %1343

1343:                                             ; preds = %1342
  br label %1344

1344:                                             ; preds = %1343
  %1345 = load ptr, ptr %90, align 8, !tbaa !5
  %1346 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1345, i32 0, i32 1
  %1347 = load i32, ptr %1346, align 4, !tbaa !64
  %1348 = zext i32 %1347 to i64
  %1349 = load ptr, ptr %8, align 8, !tbaa !5
  %1350 = getelementptr inbounds %"class.MIR::Function", ptr %1349, i32 0, i32 2
  %1351 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1350) #8
  %1352 = icmp ult i64 %1348, %1351
  br i1 %1352, label %1371, label %1353

1353:                                             ; preds = %1344
  br label %1354

1354:                                             ; preds = %1353
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %97) #8
  %1355 = getelementptr inbounds %class.anon.196, ptr %97, i32 0, i32 0
  store ptr %95, ptr %1355, align 8, !tbaa !5
  %1356 = getelementptr inbounds %class.anon.196, ptr %97, i32 0, i32 1
  %1357 = load ptr, ptr %90, align 8, !tbaa !5
  store ptr %1357, ptr %1356, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 8 dereferenceable(16) %97) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %96)
          to label %1358 unwind label %1360

1358:                                             ; preds = %1354
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #8
  %1359 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1359, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1359, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %1364

1360:                                             ; preds = %1354
  %1361 = landingpad { ptr, i32 }
          cleanup
  %1362 = extractvalue { ptr, i32 } %1361, 0
  store ptr %1362, ptr %14, align 8
  %1363 = extractvalue { ptr, i32 } %1361, 1
  store i32 %1363, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #8
  br label %1368

1364:                                             ; preds = %1358
  %1365 = landingpad { ptr, i32 }
          cleanup
  %1366 = extractvalue { ptr, i32 } %1365, 0
  store ptr %1366, ptr %14, align 8
  %1367 = extractvalue { ptr, i32 } %1365, 1
  store i32 %1367, ptr %15, align 4
  br label %1368

1368:                                             ; preds = %1364, %1360
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %1396

1369:                                             ; No predecessors!
  br label %1370

1370:                                             ; preds = %1369
  br label %1371

1371:                                             ; preds = %1370, %1344
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #8
  %1372 = load ptr, ptr %90, align 8, !tbaa !5
  %1373 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1372, i32 0, i32 1
  %1374 = load i32, ptr %1373, align 4, !tbaa !64
  %1375 = zext i32 %1374 to i64
  %1376 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %39, i64 noundef %1375)
          to label %1377 unwind label %1389

1377:                                             ; preds = %1371
  %1378 = getelementptr inbounds { ptr, i64 }, ptr %98, i32 0, i32 0
  %1379 = extractvalue { ptr, i64 } %1376, 0
  store ptr %1379, ptr %1378, align 8
  %1380 = getelementptr inbounds { ptr, i64 }, ptr %98, i32 0, i32 1
  %1381 = extractvalue { ptr, i64 } %1376, 1
  store i64 %1381, ptr %1380, align 8
  %1382 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %98) #8
  %1383 = zext i1 %1382 to i32
  %1384 = icmp eq i32 %1383, 0
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #8
  br i1 %1384, label %1385, label %1393

1385:                                             ; preds = %1377
  %1386 = load ptr, ptr %90, align 8, !tbaa !5
  %1387 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1386, i32 0, i32 1
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 4 dereferenceable(4) %1387)
          to label %1388 unwind label %1304

1388:                                             ; preds = %1385
  br label %1393

1389:                                             ; preds = %1371
  %1390 = landingpad { ptr, i32 }
          cleanup
  %1391 = extractvalue { ptr, i32 } %1390, 0
  store ptr %1391, ptr %14, align 8
  %1392 = extractvalue { ptr, i32 } %1390, 1
  store i32 %1392, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #8
  br label %1396

1393:                                             ; preds = %1388, %1377
  br label %1394

1394:                                             ; preds = %1393
  br label %1395

1395:                                             ; preds = %1394
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  br label %1397

1396:                                             ; preds = %1389, %1368, %1337, %1316, %1304
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  br label %1401

1397:                                             ; preds = %1395, %1276, %1123, %1022, %903, %836, %768, %754, %744, %706
  store i32 0, ptr %47, align 4
  br label %1398

1398:                                             ; preds = %1397, %682
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  %1399 = load i32, ptr %47, align 4
  switch i32 %1399, label %4851 [
    i32 0, label %1400
    i32 12, label %640
  ]

1400:                                             ; preds = %1398
  br label %640, !llvm.loop !33

1401:                                             ; preds = %1396, %1277, %1124, %1023, %904, %837, %770, %756, %745, %711, %707, %683, %666
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  br label %1440

1402:                                             ; preds = %640
  %1403 = load i8, ptr %38, align 1, !tbaa !31, !range !65, !noundef !66
  %1404 = trunc i8 %1403 to i1
  br i1 %1404, label %1426, label %1405

1405:                                             ; preds = %1402
  br label %1406

1406:                                             ; preds = %1405
  %1407 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1408 unwind label %1419

1408:                                             ; preds = %1406
  br i1 %1407, label %1409, label %1423

1409:                                             ; preds = %1408
  %1410 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %1411 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1410, ptr noundef @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %1412 unwind label %1419

1412:                                             ; preds = %1409
  %1413 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1411, ptr noundef @.str.11)
          to label %1414 unwind label %1419

1414:                                             ; preds = %1412
  %1415 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1413, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1416 unwind label %1419

1416:                                             ; preds = %1414
  %1417 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1415, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1418 unwind label %1419

1418:                                             ; preds = %1416
  br label %1423

1419:                                             ; preds = %1416, %1414, %1412, %1409, %1406
  %1420 = landingpad { ptr, i32 }
          cleanup
  %1421 = extractvalue { ptr, i32 } %1420, 0
  store ptr %1421, ptr %14, align 8
  %1422 = extractvalue { ptr, i32 } %1420, 1
  store i32 %1422, ptr %15, align 4
  br label %1440

1423:                                             ; preds = %1418, %1408
  br label %1424

1424:                                             ; preds = %1423
  br label %1425

1425:                                             ; preds = %1424
  br label %1426

1426:                                             ; preds = %1425, %1402
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %39) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #8
  br label %1427

1427:                                             ; preds = %1426
  %1428 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1429 unwind label %439

1429:                                             ; preds = %1427
  br i1 %1428, label %1430, label %1442

1430:                                             ; preds = %1429
  %1431 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %1432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1431, ptr noundef @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %1433 unwind label %439

1433:                                             ; preds = %1430
  %1434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1432, ptr noundef @.str.12)
          to label %1435 unwind label %439

1435:                                             ; preds = %1433
  %1436 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1434, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1437 unwind label %439

1437:                                             ; preds = %1435
  %1438 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1436, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1439 unwind label %439

1439:                                             ; preds = %1437
  br label %1442

1440:                                             ; preds = %1419, %1401, %662
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %39) #8
  br label %1441

1441:                                             ; preds = %1440, %658
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #8
  br label %4842

1442:                                             ; preds = %1439, %1429
  br label %1443

1443:                                             ; preds = %1442
  br label %1444

1444:                                             ; preds = %1443
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #8
  store i32 0, ptr %99, align 4, !tbaa !29
  br label %1445

1445:                                             ; preds = %4835, %1444
  %1446 = load i32, ptr %99, align 4, !tbaa !29
  %1447 = zext i32 %1446 to i64
  %1448 = load ptr, ptr %8, align 8, !tbaa !5
  %1449 = getelementptr inbounds %"class.MIR::Function", ptr %1448, i32 0, i32 2
  %1450 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1449) #8
  %1451 = icmp ult i64 %1447, %1450
  br i1 %1451, label %1453, label %1452

1452:                                             ; preds = %1445
  store i32 65, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #8
  br label %4839

1453:                                             ; preds = %1445
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  %1454 = load ptr, ptr %8, align 8, !tbaa !5
  %1455 = getelementptr inbounds %"class.MIR::Function", ptr %1454, i32 0, i32 2
  %1456 = load i32, ptr %99, align 4, !tbaa !29
  %1457 = zext i32 %1456 to i64
  %1458 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1455, i64 noundef %1457) #8
  store ptr %1458, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #8
  store i32 0, ptr %101, align 4, !tbaa !29
  br label %1459

1459:                                             ; preds = %4171, %1453
  %1460 = load i32, ptr %101, align 4, !tbaa !29
  %1461 = zext i32 %1460 to i64
  %1462 = load ptr, ptr %100, align 8, !tbaa !5
  %1463 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1462, i32 0, i32 0
  %1464 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1463) #8
  %1465 = icmp ult i64 %1461, %1464
  br i1 %1465, label %1467, label %1466

1466:                                             ; preds = %1459
  store i32 68, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #8
  br label %4175

1467:                                             ; preds = %1459
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #8
  %1468 = load ptr, ptr %100, align 8, !tbaa !5
  %1469 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1468, i32 0, i32 0
  %1470 = load i32, ptr %101, align 4, !tbaa !29
  %1471 = zext i32 %1470 to i64
  %1472 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1469, i64 noundef %1471) #8
  store ptr %1472, ptr %102, align 8, !tbaa !5
  %1473 = load i32, ptr %99, align 4, !tbaa !29
  %1474 = load i32, ptr %101, align 4, !tbaa !29
  invoke void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %17, i32 noundef %1473, i32 noundef %1474)
          to label %1475 unwind label %1492

1475:                                             ; preds = %1467
  br label %1476

1476:                                             ; preds = %1475
  %1477 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1478 unwind label %1492

1478:                                             ; preds = %1476
  br i1 %1477, label %1479, label %1496

1479:                                             ; preds = %1478
  %1480 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %1481 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1480, ptr noundef @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %1482 unwind label %1492

1482:                                             ; preds = %1479
  %1483 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %1481, ptr noundef nonnull align 8 dereferenceable(120) %17)
          to label %1484 unwind label %1492

1484:                                             ; preds = %1482
  %1485 = load ptr, ptr %102, align 8, !tbaa !5
  %1486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %1483, ptr noundef nonnull align 8 dereferenceable(152) %1485)
          to label %1487 unwind label %1492

1487:                                             ; preds = %1484
  %1488 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1486, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1489 unwind label %1492

1489:                                             ; preds = %1487
  %1490 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1488, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1491 unwind label %1492

1491:                                             ; preds = %1489
  br label %1496

1492:                                             ; preds = %1502, %1498, %1489, %1487, %1484, %1482, %1479, %1476, %1467
  %1493 = landingpad { ptr, i32 }
          cleanup
  %1494 = extractvalue { ptr, i32 } %1493, 0
  store ptr %1494, ptr %14, align 8
  %1495 = extractvalue { ptr, i32 } %1493, 1
  store i32 %1495, ptr %15, align 4
  br label %4174

1496:                                             ; preds = %1491, %1478
  br label %1497

1497:                                             ; preds = %1496
  br label %1498

1498:                                             ; preds = %1497
  %1499 = load ptr, ptr %102, align 8, !tbaa !5
  %1500 = invoke noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %1499)
          to label %1501 unwind label %1492

1501:                                             ; preds = %1498
  switch i32 %1500, label %4170 [
    i32 0, label %1502
    i32 4, label %4170
    i32 1, label %1504
    i32 2, label %4169
    i32 3, label %4169
    i32 5, label %4170
    i32 6, label %4170
  ]

1502:                                             ; preds = %1501
  %1503 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1503, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1503, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %1492

1504:                                             ; preds = %1501
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  %1505 = load ptr, ptr %102, align 8, !tbaa !5
  %1506 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %1505)
          to label %1507 unwind label %1518

1507:                                             ; preds = %1504
  store ptr %1506, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104)
          to label %1508 unwind label %1522

1508:                                             ; preds = %1507
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #8
  %1509 = load ptr, ptr %103, align 8, !tbaa !5
  %1510 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1509, i32 0, i32 0
  %1511 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(32) %1510, i32 noundef 0)
          to label %1512 unwind label %1526

1512:                                             ; preds = %1508
  store ptr %1511, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #8
  %1513 = getelementptr inbounds %class.anon.197, ptr %106, i32 0, i32 0
  store ptr %17, ptr %1513, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #8
  store i8 1, ptr %107, align 1, !tbaa !31
  br label %1514

1514:                                             ; preds = %4164, %1512
  %1515 = load i8, ptr %107, align 1, !tbaa !31, !range !65, !noundef !66
  %1516 = trunc i8 %1515 to i1
  br i1 %1516, label %1530, label %1517

1517:                                             ; preds = %1514
  store i32 74, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #8
  br label %4165

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

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

1526:                                             ; preds = %1508
  %1527 = landingpad { ptr, i32 }
          cleanup
  %1528 = extractvalue { ptr, i32 } %1527, 0
  store ptr %1528, ptr %14, align 8
  %1529 = extractvalue { ptr, i32 } %1527, 1
  store i32 %1529, ptr %15, align 4
  br label %4166

1530:                                             ; preds = %1514
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #8
  %1531 = load ptr, ptr %103, align 8, !tbaa !5
  %1532 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1531, i32 0, i32 1
  store ptr %1532, ptr %108, align 8, !tbaa !5
  br label %1533

1533:                                             ; preds = %4161, %1530
  %1534 = load i8, ptr %107, align 1, !tbaa !31, !range !65, !noundef !66
  %1535 = trunc i8 %1534 to i1
  br i1 %1535, label %1537, label %1536

1536:                                             ; preds = %1533
  store i32 77, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  br label %4163

1537:                                             ; preds = %1533
  %1538 = load ptr, ptr %108, align 8, !tbaa !5
  %1539 = invoke noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %1538)
          to label %1540 unwind label %1541

1540:                                             ; preds = %1537
  switch i32 %1539, label %4160 [
    i32 0, label %1545
    i32 1, label %1546
    i32 3, label %1585
    i32 4, label %2510
    i32 2, label %2533
    i32 5, label %2588
    i32 6, label %3371
    i32 7, label %3394
    i32 8, label %3417
    i32 9, label %3621
    i32 10, label %3801
    i32 11, label %3945
    i32 12, label %4068
    i32 13, label %4091
    i32 14, label %4114
    i32 15, label %4137
  ]

1541:                                             ; preds = %1537
  %1542 = landingpad { ptr, i32 }
          cleanup
  %1543 = extractvalue { ptr, i32 } %1542, 0
  store ptr %1543, ptr %14, align 8
  %1544 = extractvalue { ptr, i32 } %1542, 1
  store i32 %1544, ptr %15, align 4
  br label %4162

1545:                                             ; preds = %1540
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 755, ptr noundef @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

1546:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #8
  store i8 1, ptr %109, align 1, !tbaa !31
  br label %1547

1547:                                             ; preds = %1583, %1546
  %1548 = load i8, ptr %109, align 1, !tbaa !31, !range !65, !noundef !66
  %1549 = trunc i8 %1548 to i1
  br i1 %1549, label %1551, label %1550

1550:                                             ; preds = %1547
  store i32 81, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #8
  br label %1584

1551:                                             ; preds = %1547
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #8
  %1552 = load ptr, ptr %108, align 8, !tbaa !5
  %1553 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %1552)
          to label %1554 unwind label %1560

1554:                                             ; preds = %1551
  store ptr %1553, ptr %110, align 8, !tbaa !5
  br label %1555

1555:                                             ; preds = %1571, %1554
  %1556 = load ptr, ptr %110, align 8, !tbaa !5
  %1557 = load i8, ptr %109, align 1, !tbaa !31, !range !65, !noundef !66
  %1558 = trunc i8 %1557 to i1
  br i1 %1558, label %1564, label %1559

1559:                                             ; preds = %1555
  store i32 84, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  br label %1582

1560:                                             ; preds = %1551
  %1561 = landingpad { ptr, i32 }
          cleanup
  %1562 = extractvalue { ptr, i32 } %1561, 0
  store ptr %1562, ptr %14, align 8
  %1563 = extractvalue { ptr, i32 } %1561, 1
  store i32 %1563, ptr %15, align 4
  br label %1581

1564:                                             ; preds = %1555
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %111)
          to label %1565 unwind label %1572

1565:                                             ; preds = %1564
  %1566 = load ptr, ptr %105, align 8, !tbaa !5
  %1567 = load ptr, ptr %110, align 8, !tbaa !5
  %1568 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull align 8 dereferenceable(32) %1567, i32 noundef 0)
          to label %1569 unwind label %1576

1569:                                             ; preds = %1565
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %1566, ptr noundef nonnull align 8 dereferenceable(8) %1568)
          to label %1570 unwind label %1576

1570:                                             ; preds = %1569
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #8
  br label %1571

1571:                                             ; preds = %1570
  store i8 0, ptr %109, align 1, !tbaa !31
  br label %1555, !llvm.loop !67

1572:                                             ; preds = %1564
  %1573 = landingpad { ptr, i32 }
          cleanup
  %1574 = extractvalue { ptr, i32 } %1573, 0
  store ptr %1574, ptr %14, align 8
  %1575 = extractvalue { ptr, i32 } %1573, 1
  store i32 %1575, ptr %15, align 4
  br label %1580

1576:                                             ; preds = %1569, %1565
  %1577 = landingpad { ptr, i32 }
          cleanup
  %1578 = extractvalue { ptr, i32 } %1577, 0
  store ptr %1578, ptr %14, align 8
  %1579 = extractvalue { ptr, i32 } %1577, 1
  store i32 %1579, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #8
  br label %1580

1580:                                             ; preds = %1576, %1572
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #8
  br label %1581

1581:                                             ; preds = %1580, %1560
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #8
  br label %4162

1582:                                             ; preds = %1559
  br label %1583

1583:                                             ; preds = %1582
  store i8 0, ptr %109, align 1, !tbaa !31
  br label %1547, !llvm.loop !68

1584:                                             ; preds = %1550
  br label %4160

1585:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %112) #8
  store i8 1, ptr %112, align 1, !tbaa !31
  br label %1586

1586:                                             ; preds = %2508, %1585
  %1587 = load i8, ptr %112, align 1, !tbaa !31, !range !65, !noundef !66
  %1588 = trunc i8 %1587 to i1
  br i1 %1588, label %1590, label %1589

1589:                                             ; preds = %1586
  store i32 87, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #8
  br label %2509

1590:                                             ; preds = %1586
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #8
  %1591 = load ptr, ptr %108, align 8, !tbaa !5
  %1592 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %1591)
          to label %1593 unwind label %1599

1593:                                             ; preds = %1590
  store ptr %1592, ptr %113, align 8, !tbaa !5
  br label %1594

1594:                                             ; preds = %2505, %1593
  %1595 = load ptr, ptr %113, align 8, !tbaa !5
  %1596 = load i8, ptr %112, align 1, !tbaa !31, !range !65, !noundef !66
  %1597 = trunc i8 %1596 to i1
  br i1 %1597, label %1603, label %1598

1598:                                             ; preds = %1594
  store i32 90, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  br label %2507

1599:                                             ; preds = %1590
  %1600 = landingpad { ptr, i32 }
          cleanup
  %1601 = extractvalue { ptr, i32 } %1600, 0
  store ptr %1601, ptr %14, align 8
  %1602 = extractvalue { ptr, i32 } %1600, 1
  store i32 %1602, ptr %15, align 4
  br label %2506

1603:                                             ; preds = %1594
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #8
  store i8 1, ptr %114, align 1, !tbaa !31
  br label %1604

1604:                                             ; preds = %2503, %1603
  %1605 = load i8, ptr %114, align 1, !tbaa !31, !range !65, !noundef !66
  %1606 = trunc i8 %1605 to i1
  br i1 %1606, label %1608, label %1607

1607:                                             ; preds = %1604
  store i32 93, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #8
  br label %2504

1608:                                             ; preds = %1604
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #8
  %1609 = load ptr, ptr %113, align 8, !tbaa !5
  store ptr %1609, ptr %115, align 8, !tbaa !5
  br label %1610

1610:                                             ; preds = %2500, %1608
  %1611 = load i8, ptr %114, align 1, !tbaa !31, !range !65, !noundef !66
  %1612 = trunc i8 %1611 to i1
  br i1 %1612, label %1614, label %1613

1613:                                             ; preds = %1610
  store i32 96, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  br label %2502

1614:                                             ; preds = %1610
  %1615 = load ptr, ptr %115, align 8, !tbaa !5
  %1616 = invoke noundef i32 @_ZNK3MIR8Constant3tagEv(ptr noundef nonnull align 8 dereferenceable(40) %1615)
          to label %1617 unwind label %1618

1617:                                             ; preds = %1614
  switch i32 %1616, label %2499 [
    i32 0, label %1622
    i32 1, label %1623
    i32 2, label %1689
    i32 3, label %1755
    i32 4, label %1821
    i32 5, label %1857
    i32 6, label %1907
    i32 7, label %1949
    i32 8, label %1972
    i32 9, label %1995
    i32 10, label %2036
  ]

1618:                                             ; preds = %1614
  %1619 = landingpad { ptr, i32 }
          cleanup
  %1620 = extractvalue { ptr, i32 } %1619, 0
  store ptr %1620, ptr %14, align 8
  %1621 = extractvalue { ptr, i32 } %1619, 1
  store i32 %1621, ptr %15, align 4
  br label %2501

1622:                                             ; preds = %1617
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 762, ptr noundef @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

1623:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #8
  store i8 1, ptr %116, align 1, !tbaa !31
  br label %1624

1624:                                             ; preds = %1687, %1623
  %1625 = load i8, ptr %116, align 1, !tbaa !31, !range !65, !noundef !66
  %1626 = trunc i8 %1625 to i1
  br i1 %1626, label %1628, label %1627

1627:                                             ; preds = %1624
  store i32 100, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #8
  br label %1688

1628:                                             ; preds = %1624
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #8
  %1629 = load ptr, ptr %115, align 8, !tbaa !5
  %1630 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %1629)
          to label %1631 unwind label %1637

1631:                                             ; preds = %1628
  store ptr %1630, ptr %117, align 8, !tbaa !5
  br label %1632

1632:                                             ; preds = %1683, %1631
  %1633 = load ptr, ptr %117, align 8, !tbaa !5
  %1634 = load i8, ptr %116, align 1, !tbaa !31, !range !65, !noundef !66
  %1635 = trunc i8 %1634 to i1
  br i1 %1635, label %1641, label %1636

1636:                                             ; preds = %1632
  store i32 103, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  br label %1686

1637:                                             ; preds = %1628
  %1638 = landingpad { ptr, i32 }
          cleanup
  %1639 = extractvalue { ptr, i32 } %1638, 0
  store ptr %1639, ptr %14, align 8
  %1640 = extractvalue { ptr, i32 } %1638, 1
  store i32 %1640, ptr %15, align 4
  br label %1685

1641:                                             ; preds = %1632
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #8
  store i8 0, ptr %118, align 1, !tbaa !31
  %1642 = load ptr, ptr %105, align 8, !tbaa !5
  %1643 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1642)
          to label %1644 unwind label %1654

1644:                                             ; preds = %1641
  %1645 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1643)
          to label %1646 unwind label %1654

1646:                                             ; preds = %1644
  br i1 %1645, label %1647, label %1661

1647:                                             ; preds = %1646
  %1648 = load ptr, ptr %105, align 8, !tbaa !5
  %1649 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1648)
          to label %1650 unwind label %1654

1650:                                             ; preds = %1647
  %1651 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1649)
          to label %1652 unwind label %1654

1652:                                             ; preds = %1650
  %1653 = load i32, ptr %1651, align 4, !tbaa !69
  switch i32 %1653, label %1659 [
    i32 3, label %1658
    i32 5, label %1658
    i32 7, label %1658
    i32 9, label %1658
    i32 11, label %1658
    i32 1, label %1658
  ]

1654:                                             ; preds = %1650, %1647, %1644, %1641
  %1655 = landingpad { ptr, i32 }
          cleanup
  %1656 = extractvalue { ptr, i32 } %1655, 0
  store ptr %1656, ptr %14, align 8
  %1657 = extractvalue { ptr, i32 } %1655, 1
  store i32 %1657, ptr %15, align 4
  br label %1684

1658:                                             ; preds = %1652, %1652, %1652, %1652, %1652, %1652
  store i8 1, ptr %118, align 1, !tbaa !31
  br label %1660

1659:                                             ; preds = %1652
  br label %1660

1660:                                             ; preds = %1659, %1658
  br label %1661

1661:                                             ; preds = %1660, %1646
  %1662 = load i8, ptr %118, align 1, !tbaa !31, !range !65, !noundef !66
  %1663 = trunc i8 %1662 to i1
  br i1 %1663, label %1682, label %1664

1664:                                             ; preds = %1661
  br label %1665

1665:                                             ; preds = %1664
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %119, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %121) #8
  %1666 = getelementptr inbounds %class.anon.224, ptr %121, i32 0, i32 0
  store ptr %119, ptr %1666, align 8, !tbaa !5
  %1667 = getelementptr inbounds %class.anon.224, ptr %121, i32 0, i32 1
  %1668 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %1668, ptr %1667, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef nonnull align 8 dereferenceable(16) %121) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %120)
          to label %1669 unwind label %1671

1669:                                             ; preds = %1665
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #8
  %1670 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1670, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1670, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %1675

1671:                                             ; preds = %1665
  %1672 = landingpad { ptr, i32 }
          cleanup
  %1673 = extractvalue { ptr, i32 } %1672, 0
  store ptr %1673, ptr %14, align 8
  %1674 = extractvalue { ptr, i32 } %1672, 1
  store i32 %1674, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #8
  br label %1679

1675:                                             ; preds = %1669
  %1676 = landingpad { ptr, i32 }
          cleanup
  %1677 = extractvalue { ptr, i32 } %1676, 0
  store ptr %1677, ptr %14, align 8
  %1678 = extractvalue { ptr, i32 } %1676, 1
  store i32 %1678, ptr %15, align 4
  br label %1679

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

1680:                                             ; No predecessors!
  br label %1681

1681:                                             ; preds = %1680
  br label %1682

1682:                                             ; preds = %1681, %1661
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #8
  br label %1683

1683:                                             ; preds = %1682
  store i8 0, ptr %116, align 1, !tbaa !31
  br label %1632, !llvm.loop !71

1684:                                             ; preds = %1679, %1654
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #8
  br label %1685

1685:                                             ; preds = %1684, %1637
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #8
  br label %2501

1686:                                             ; preds = %1636
  br label %1687

1687:                                             ; preds = %1686
  store i8 0, ptr %116, align 1, !tbaa !31
  br label %1624, !llvm.loop !72

1688:                                             ; preds = %1627
  br label %2499

1689:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 1, ptr %122) #8
  store i8 1, ptr %122, align 1, !tbaa !31
  br label %1690

1690:                                             ; preds = %1753, %1689
  %1691 = load i8, ptr %122, align 1, !tbaa !31, !range !65, !noundef !66
  %1692 = trunc i8 %1691 to i1
  br i1 %1692, label %1694, label %1693

1693:                                             ; preds = %1690
  store i32 109, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #8
  br label %1754

1694:                                             ; preds = %1690
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #8
  %1695 = load ptr, ptr %115, align 8, !tbaa !5
  %1696 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %1695)
          to label %1697 unwind label %1703

1697:                                             ; preds = %1694
  store ptr %1696, ptr %123, align 8, !tbaa !5
  br label %1698

1698:                                             ; preds = %1749, %1697
  %1699 = load ptr, ptr %123, align 8, !tbaa !5
  %1700 = load i8, ptr %122, align 1, !tbaa !31, !range !65, !noundef !66
  %1701 = trunc i8 %1700 to i1
  br i1 %1701, label %1707, label %1702

1702:                                             ; preds = %1698
  store i32 112, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #8
  br label %1752

1703:                                             ; preds = %1694
  %1704 = landingpad { ptr, i32 }
          cleanup
  %1705 = extractvalue { ptr, i32 } %1704, 0
  store ptr %1705, ptr %14, align 8
  %1706 = extractvalue { ptr, i32 } %1704, 1
  store i32 %1706, ptr %15, align 4
  br label %1751

1707:                                             ; preds = %1698
  call void @llvm.lifetime.start.p0(i64 1, ptr %124) #8
  store i8 0, ptr %124, align 1, !tbaa !31
  %1708 = load ptr, ptr %105, align 8, !tbaa !5
  %1709 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1708)
          to label %1710 unwind label %1720

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

1712:                                             ; preds = %1710
  br i1 %1711, label %1713, label %1727

1713:                                             ; preds = %1712
  %1714 = load ptr, ptr %105, align 8, !tbaa !5
  %1715 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1714)
          to label %1716 unwind label %1720

1716:                                             ; preds = %1713
  %1717 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1715)
          to label %1718 unwind label %1720

1718:                                             ; preds = %1716
  %1719 = load i32, ptr %1717, align 4, !tbaa !69
  switch i32 %1719, label %1725 [
    i32 2, label %1724
    i32 4, label %1724
    i32 6, label %1724
    i32 8, label %1724
    i32 10, label %1724
    i32 0, label %1724
    i32 15, label %1724
  ]

1720:                                             ; preds = %1716, %1713, %1710, %1707
  %1721 = landingpad { ptr, i32 }
          cleanup
  %1722 = extractvalue { ptr, i32 } %1721, 0
  store ptr %1722, ptr %14, align 8
  %1723 = extractvalue { ptr, i32 } %1721, 1
  store i32 %1723, ptr %15, align 4
  br label %1750

1724:                                             ; preds = %1718, %1718, %1718, %1718, %1718, %1718, %1718
  store i8 1, ptr %124, align 1, !tbaa !31
  br label %1726

1725:                                             ; preds = %1718
  br label %1726

1726:                                             ; preds = %1725, %1724
  br label %1727

1727:                                             ; preds = %1726, %1712
  %1728 = load i8, ptr %124, align 1, !tbaa !31, !range !65, !noundef !66
  %1729 = trunc i8 %1728 to i1
  br i1 %1729, label %1748, label %1730

1730:                                             ; preds = %1727
  br label %1731

1731:                                             ; preds = %1730
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %125, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %127) #8
  %1732 = getelementptr inbounds %class.anon.225, ptr %127, i32 0, i32 0
  store ptr %125, ptr %1732, align 8, !tbaa !5
  %1733 = getelementptr inbounds %class.anon.225, ptr %127, i32 0, i32 1
  %1734 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %1734, ptr %1733, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef nonnull align 8 dereferenceable(16) %127) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %126)
          to label %1735 unwind label %1737

1735:                                             ; preds = %1731
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %127) #8
  %1736 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1736, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1736, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %1741

1737:                                             ; preds = %1731
  %1738 = landingpad { ptr, i32 }
          cleanup
  %1739 = extractvalue { ptr, i32 } %1738, 0
  store ptr %1739, ptr %14, align 8
  %1740 = extractvalue { ptr, i32 } %1738, 1
  store i32 %1740, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %127) #8
  br label %1745

1741:                                             ; preds = %1735
  %1742 = landingpad { ptr, i32 }
          cleanup
  %1743 = extractvalue { ptr, i32 } %1742, 0
  store ptr %1743, ptr %14, align 8
  %1744 = extractvalue { ptr, i32 } %1742, 1
  store i32 %1744, ptr %15, align 4
  br label %1745

1745:                                             ; preds = %1741, %1737
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  br label %1750

1746:                                             ; No predecessors!
  br label %1747

1747:                                             ; preds = %1746
  br label %1748

1748:                                             ; preds = %1747, %1727
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #8
  br label %1749

1749:                                             ; preds = %1748
  store i8 0, ptr %122, align 1, !tbaa !31
  br label %1698, !llvm.loop !73

1750:                                             ; preds = %1745, %1720
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #8
  br label %1751

1751:                                             ; preds = %1750, %1703
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #8
  br label %2501

1752:                                             ; preds = %1702
  br label %1753

1753:                                             ; preds = %1752
  store i8 0, ptr %122, align 1, !tbaa !31
  br label %1690, !llvm.loop !74

1754:                                             ; preds = %1693
  br label %2499

1755:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 1, ptr %128) #8
  store i8 1, ptr %128, align 1, !tbaa !31
  br label %1756

1756:                                             ; preds = %1819, %1755
  %1757 = load i8, ptr %128, align 1, !tbaa !31, !range !65, !noundef !66
  %1758 = trunc i8 %1757 to i1
  br i1 %1758, label %1760, label %1759

1759:                                             ; preds = %1756
  store i32 118, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %128) #8
  br label %1820

1760:                                             ; preds = %1756
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #8
  %1761 = load ptr, ptr %115, align 8, !tbaa !5
  %1762 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %1761)
          to label %1763 unwind label %1769

1763:                                             ; preds = %1760
  store ptr %1762, ptr %129, align 8, !tbaa !5
  br label %1764

1764:                                             ; preds = %1815, %1763
  %1765 = load ptr, ptr %129, align 8, !tbaa !5
  %1766 = load i8, ptr %128, align 1, !tbaa !31, !range !65, !noundef !66
  %1767 = trunc i8 %1766 to i1
  br i1 %1767, label %1773, label %1768

1768:                                             ; preds = %1764
  store i32 121, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  br label %1818

1769:                                             ; preds = %1760
  %1770 = landingpad { ptr, i32 }
          cleanup
  %1771 = extractvalue { ptr, i32 } %1770, 0
  store ptr %1771, ptr %14, align 8
  %1772 = extractvalue { ptr, i32 } %1770, 1
  store i32 %1772, ptr %15, align 4
  br label %1817

1773:                                             ; preds = %1764
  call void @llvm.lifetime.start.p0(i64 1, ptr %130) #8
  store i8 0, ptr %130, align 1, !tbaa !31
  %1774 = load ptr, ptr %105, align 8, !tbaa !5
  %1775 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1774)
          to label %1776 unwind label %1786

1776:                                             ; preds = %1773
  %1777 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1775)
          to label %1778 unwind label %1786

1778:                                             ; preds = %1776
  br i1 %1777, label %1779, label %1793

1779:                                             ; preds = %1778
  %1780 = load ptr, ptr %105, align 8, !tbaa !5
  %1781 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1780)
          to label %1782 unwind label %1786

1782:                                             ; preds = %1779
  %1783 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1781)
          to label %1784 unwind label %1786

1784:                                             ; preds = %1782
  %1785 = load i32, ptr %1783, align 4, !tbaa !69
  switch i32 %1785, label %1791 [
    i32 12, label %1790
    i32 13, label %1790
  ]

1786:                                             ; preds = %1782, %1779, %1776, %1773
  %1787 = landingpad { ptr, i32 }
          cleanup
  %1788 = extractvalue { ptr, i32 } %1787, 0
  store ptr %1788, ptr %14, align 8
  %1789 = extractvalue { ptr, i32 } %1787, 1
  store i32 %1789, ptr %15, align 4
  br label %1816

1790:                                             ; preds = %1784, %1784
  store i8 1, ptr %130, align 1, !tbaa !31
  br label %1792

1791:                                             ; preds = %1784
  br label %1792

1792:                                             ; preds = %1791, %1790
  br label %1793

1793:                                             ; preds = %1792, %1778
  %1794 = load i8, ptr %130, align 1, !tbaa !31, !range !65, !noundef !66
  %1795 = trunc i8 %1794 to i1
  br i1 %1795, label %1814, label %1796

1796:                                             ; preds = %1793
  br label %1797

1797:                                             ; preds = %1796
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %131, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %133) #8
  %1798 = getelementptr inbounds %class.anon.226, ptr %133, i32 0, i32 0
  store ptr %131, ptr %1798, align 8, !tbaa !5
  %1799 = getelementptr inbounds %class.anon.226, ptr %133, i32 0, i32 1
  %1800 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %1800, ptr %1799, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %132, ptr noundef nonnull align 8 dereferenceable(16) %133) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %132)
          to label %1801 unwind label %1803

1801:                                             ; preds = %1797
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %133) #8
  %1802 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1802, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1802, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %1807

1803:                                             ; preds = %1797
  %1804 = landingpad { ptr, i32 }
          cleanup
  %1805 = extractvalue { ptr, i32 } %1804, 0
  store ptr %1805, ptr %14, align 8
  %1806 = extractvalue { ptr, i32 } %1804, 1
  store i32 %1806, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %133) #8
  br label %1811

1807:                                             ; preds = %1801
  %1808 = landingpad { ptr, i32 }
          cleanup
  %1809 = extractvalue { ptr, i32 } %1808, 0
  store ptr %1809, ptr %14, align 8
  %1810 = extractvalue { ptr, i32 } %1808, 1
  store i32 %1810, ptr %15, align 4
  br label %1811

1811:                                             ; preds = %1807, %1803
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #8
  br label %1816

1812:                                             ; No predecessors!
  br label %1813

1813:                                             ; preds = %1812
  br label %1814

1814:                                             ; preds = %1813, %1793
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #8
  br label %1815

1815:                                             ; preds = %1814
  store i8 0, ptr %128, align 1, !tbaa !31
  br label %1764, !llvm.loop !75

1816:                                             ; preds = %1811, %1786
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #8
  br label %1817

1817:                                             ; preds = %1816, %1769
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %128) #8
  br label %2501

1818:                                             ; preds = %1768
  br label %1819

1819:                                             ; preds = %1818
  store i8 0, ptr %128, align 1, !tbaa !31
  br label %1756, !llvm.loop !76

1820:                                             ; preds = %1759
  br label %2499

1821:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #8
  store i8 1, ptr %134, align 1, !tbaa !31
  br label %1822

1822:                                             ; preds = %1855, %1821
  %1823 = load i8, ptr %134, align 1, !tbaa !31, !range !65, !noundef !66
  %1824 = trunc i8 %1823 to i1
  br i1 %1824, label %1826, label %1825

1825:                                             ; preds = %1822
  store i32 127, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #8
  br label %1856

1826:                                             ; preds = %1822
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #8
  %1827 = load ptr, ptr %115, align 8, !tbaa !5
  %1828 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR8Constant7as_BoolEv(ptr noundef nonnull align 8 dereferenceable(40) %1827)
          to label %1829 unwind label %1835

1829:                                             ; preds = %1826
  store ptr %1828, ptr %135, align 8, !tbaa !5
  br label %1830

1830:                                             ; preds = %1843, %1829
  %1831 = load ptr, ptr %135, align 8, !tbaa !5
  %1832 = load i8, ptr %134, align 1, !tbaa !31, !range !65, !noundef !66
  %1833 = trunc i8 %1832 to i1
  br i1 %1833, label %1839, label %1834

1834:                                             ; preds = %1830
  store i32 130, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  br label %1854

1835:                                             ; preds = %1826
  %1836 = landingpad { ptr, i32 }
          cleanup
  %1837 = extractvalue { ptr, i32 } %1836, 0
  store ptr %1837, ptr %14, align 8
  %1838 = extractvalue { ptr, i32 } %1836, 1
  store i32 %1838, ptr %15, align 4
  br label %1853

1839:                                             ; preds = %1830
  %1840 = load ptr, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #8
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %136, i32 noundef 14)
          to label %1841 unwind label %1844

1841:                                             ; preds = %1839
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %1840, ptr noundef nonnull align 8 dereferenceable(8) %136)
          to label %1842 unwind label %1848

1842:                                             ; preds = %1841
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #8
  br label %1843

1843:                                             ; preds = %1842
  store i8 0, ptr %134, align 1, !tbaa !31
  br label %1830, !llvm.loop !77

1844:                                             ; preds = %1839
  %1845 = landingpad { ptr, i32 }
          cleanup
  %1846 = extractvalue { ptr, i32 } %1845, 0
  store ptr %1846, ptr %14, align 8
  %1847 = extractvalue { ptr, i32 } %1845, 1
  store i32 %1847, ptr %15, align 4
  br label %1852

1848:                                             ; preds = %1841
  %1849 = landingpad { ptr, i32 }
          cleanup
  %1850 = extractvalue { ptr, i32 } %1849, 0
  store ptr %1850, ptr %14, align 8
  %1851 = extractvalue { ptr, i32 } %1849, 1
  store i32 %1851, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #8
  br label %1852

1852:                                             ; preds = %1848, %1844
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #8
  br label %1853

1853:                                             ; preds = %1852, %1835
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #8
  br label %2501

1854:                                             ; preds = %1834
  br label %1855

1855:                                             ; preds = %1854
  store i8 0, ptr %134, align 1, !tbaa !31
  br label %1822, !llvm.loop !78

1856:                                             ; preds = %1825
  br label %2499

1857:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 1, ptr %137) #8
  store i8 1, ptr %137, align 1, !tbaa !31
  br label %1858

1858:                                             ; preds = %1905, %1857
  %1859 = load i8, ptr %137, align 1, !tbaa !31, !range !65, !noundef !66
  %1860 = trunc i8 %1859 to i1
  br i1 %1860, label %1862, label %1861

1861:                                             ; preds = %1858
  store i32 133, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #8
  br label %1906

1862:                                             ; preds = %1858
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #8
  %1863 = load ptr, ptr %115, align 8, !tbaa !5
  %1864 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR8Constant8as_BytesEv(ptr noundef nonnull align 8 dereferenceable(40) %1863)
          to label %1865 unwind label %1871

1865:                                             ; preds = %1862
  store ptr %1864, ptr %138, align 8, !tbaa !5
  br label %1866

1866:                                             ; preds = %1883, %1865
  %1867 = load ptr, ptr %138, align 8, !tbaa !5
  %1868 = load i8, ptr %137, align 1, !tbaa !31, !range !65, !noundef !66
  %1869 = trunc i8 %1868 to i1
  br i1 %1869, label %1875, label %1870

1870:                                             ; preds = %1866
  store i32 136, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #8
  br label %1904

1871:                                             ; preds = %1862
  %1872 = landingpad { ptr, i32 }
          cleanup
  %1873 = extractvalue { ptr, i32 } %1872, 0
  store ptr %1873, ptr %14, align 8
  %1874 = extractvalue { ptr, i32 } %1872, 1
  store i32 %1874, ptr %15, align 4
  br label %1903

1875:                                             ; preds = %1866
  %1876 = load ptr, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #8
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %141, i32 noundef 2)
          to label %1877 unwind label %1884

1877:                                             ; preds = %1875
  %1878 = load ptr, ptr %138, align 8, !tbaa !5
  %1879 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1878) #8
  invoke void @_ZN3HIR7TypeRef9new_arrayES0_m(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %140, ptr noundef %141, i64 noundef %1879)
          to label %1880 unwind label %1888

1880:                                             ; preds = %1877
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %139, i32 noundef 0, ptr noundef %140)
          to label %1881 unwind label %1892

1881:                                             ; preds = %1880
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %1876, ptr noundef nonnull align 8 dereferenceable(8) %139)
          to label %1882 unwind label %1896

1882:                                             ; preds = %1881
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %141) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #8
  br label %1883

1883:                                             ; preds = %1882
  store i8 0, ptr %137, align 1, !tbaa !31
  br label %1866, !llvm.loop !79

1884:                                             ; preds = %1875
  %1885 = landingpad { ptr, i32 }
          cleanup
  %1886 = extractvalue { ptr, i32 } %1885, 0
  store ptr %1886, ptr %14, align 8
  %1887 = extractvalue { ptr, i32 } %1885, 1
  store i32 %1887, ptr %15, align 4
  br label %1902

1888:                                             ; preds = %1877
  %1889 = landingpad { ptr, i32 }
          cleanup
  %1890 = extractvalue { ptr, i32 } %1889, 0
  store ptr %1890, ptr %14, align 8
  %1891 = extractvalue { ptr, i32 } %1889, 1
  store i32 %1891, ptr %15, align 4
  br label %1901

1892:                                             ; preds = %1880
  %1893 = landingpad { ptr, i32 }
          cleanup
  %1894 = extractvalue { ptr, i32 } %1893, 0
  store ptr %1894, ptr %14, align 8
  %1895 = extractvalue { ptr, i32 } %1893, 1
  store i32 %1895, ptr %15, align 4
  br label %1900

1896:                                             ; preds = %1881
  %1897 = landingpad { ptr, i32 }
          cleanup
  %1898 = extractvalue { ptr, i32 } %1897, 0
  store ptr %1898, ptr %14, align 8
  %1899 = extractvalue { ptr, i32 } %1897, 1
  store i32 %1899, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  br label %1900

1900:                                             ; preds = %1896, %1892
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  br label %1901

1901:                                             ; preds = %1900, %1888
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %141) #8
  br label %1902

1902:                                             ; preds = %1901, %1884
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #8
  br label %1903

1903:                                             ; preds = %1902, %1871
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #8
  br label %2501

1904:                                             ; preds = %1870
  br label %1905

1905:                                             ; preds = %1904
  store i8 0, ptr %137, align 1, !tbaa !31
  br label %1858, !llvm.loop !80

1906:                                             ; preds = %1861
  br label %2499

1907:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 1, ptr %142) #8
  store i8 1, ptr %142, align 1, !tbaa !31
  br label %1908

1908:                                             ; preds = %1947, %1907
  %1909 = load i8, ptr %142, align 1, !tbaa !31, !range !65, !noundef !66
  %1910 = trunc i8 %1909 to i1
  br i1 %1910, label %1912, label %1911

1911:                                             ; preds = %1908
  store i32 139, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #8
  br label %1948

1912:                                             ; preds = %1908
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #8
  %1913 = load ptr, ptr %115, align 8, !tbaa !5
  %1914 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR8Constant15as_StaticStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(40) %1913)
          to label %1915 unwind label %1921

1915:                                             ; preds = %1912
  store ptr %1914, ptr %143, align 8, !tbaa !5
  br label %1916

1916:                                             ; preds = %1930, %1915
  %1917 = load ptr, ptr %143, align 8, !tbaa !5
  %1918 = load i8, ptr %142, align 1, !tbaa !31, !range !65, !noundef !66
  %1919 = trunc i8 %1918 to i1
  br i1 %1919, label %1925, label %1920

1920:                                             ; preds = %1916
  store i32 142, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #8
  br label %1946

1921:                                             ; preds = %1912
  %1922 = landingpad { ptr, i32 }
          cleanup
  %1923 = extractvalue { ptr, i32 } %1922, 0
  store ptr %1923, ptr %14, align 8
  %1924 = extractvalue { ptr, i32 } %1922, 1
  store i32 %1924, ptr %15, align 4
  br label %1945

1925:                                             ; preds = %1916
  %1926 = load ptr, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #8
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %145, i32 noundef 16)
          to label %1927 unwind label %1931

1927:                                             ; preds = %1925
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %144, i32 noundef 0, ptr noundef %145)
          to label %1928 unwind label %1935

1928:                                             ; preds = %1927
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %1926, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %1929 unwind label %1939

1929:                                             ; preds = %1928
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %144) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #8
  br label %1930

1930:                                             ; preds = %1929
  store i8 0, ptr %142, align 1, !tbaa !31
  br label %1916, !llvm.loop !81

1931:                                             ; preds = %1925
  %1932 = landingpad { ptr, i32 }
          cleanup
  %1933 = extractvalue { ptr, i32 } %1932, 0
  store ptr %1933, ptr %14, align 8
  %1934 = extractvalue { ptr, i32 } %1932, 1
  store i32 %1934, ptr %15, align 4
  br label %1944

1935:                                             ; preds = %1927
  %1936 = landingpad { ptr, i32 }
          cleanup
  %1937 = extractvalue { ptr, i32 } %1936, 0
  store ptr %1937, ptr %14, align 8
  %1938 = extractvalue { ptr, i32 } %1936, 1
  store i32 %1938, ptr %15, align 4
  br label %1943

1939:                                             ; preds = %1928
  %1940 = landingpad { ptr, i32 }
          cleanup
  %1941 = extractvalue { ptr, i32 } %1940, 0
  store ptr %1941, ptr %14, align 8
  %1942 = extractvalue { ptr, i32 } %1940, 1
  store i32 %1942, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %144) #8
  br label %1943

1943:                                             ; preds = %1939, %1935
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #8
  br label %1944

1944:                                             ; preds = %1943, %1931
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #8
  br label %1945

1945:                                             ; preds = %1944, %1921
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #8
  br label %2501

1946:                                             ; preds = %1920
  br label %1947

1947:                                             ; preds = %1946
  store i8 0, ptr %142, align 1, !tbaa !31
  br label %1908, !llvm.loop !82

1948:                                             ; preds = %1911
  br label %2499

1949:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 1, ptr %146) #8
  store i8 1, ptr %146, align 1, !tbaa !31
  br label %1950

1950:                                             ; preds = %1970, %1949
  %1951 = load i8, ptr %146, align 1, !tbaa !31, !range !65, !noundef !66
  %1952 = trunc i8 %1951 to i1
  br i1 %1952, label %1954, label %1953

1953:                                             ; preds = %1950
  store i32 145, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %146) #8
  br label %1971

1954:                                             ; preds = %1950
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #8
  %1955 = load ptr, ptr %115, align 8, !tbaa !5
  %1956 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR8Constant8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(40) %1955)
          to label %1957 unwind label %1963

1957:                                             ; preds = %1954
  store ptr %1956, ptr %147, align 8, !tbaa !5
  br label %1958

1958:                                             ; preds = %1968, %1957
  %1959 = load ptr, ptr %147, align 8, !tbaa !5
  %1960 = load i8, ptr %146, align 1, !tbaa !31, !range !65, !noundef !66
  %1961 = trunc i8 %1960 to i1
  br i1 %1961, label %1967, label %1962

1962:                                             ; preds = %1958
  store i32 148, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #8
  br label %1969

1963:                                             ; preds = %1954
  %1964 = landingpad { ptr, i32 }
          cleanup
  %1965 = extractvalue { ptr, i32 } %1964, 0
  store ptr %1965, ptr %14, align 8
  %1966 = extractvalue { ptr, i32 } %1964, 1
  store i32 %1966, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %146) #8
  br label %2501

1967:                                             ; preds = %1958
  br label %1968

1968:                                             ; preds = %1967
  store i8 0, ptr %146, align 1, !tbaa !31
  br label %1958, !llvm.loop !83

1969:                                             ; preds = %1962
  br label %1970

1970:                                             ; preds = %1969
  store i8 0, ptr %146, align 1, !tbaa !31
  br label %1950, !llvm.loop !84

1971:                                             ; preds = %1953
  br label %2499

1972:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 1, ptr %148) #8
  store i8 1, ptr %148, align 1, !tbaa !31
  br label %1973

1973:                                             ; preds = %1993, %1972
  %1974 = load i8, ptr %148, align 1, !tbaa !31, !range !65, !noundef !66
  %1975 = trunc i8 %1974 to i1
  br i1 %1975, label %1977, label %1976

1976:                                             ; preds = %1973
  store i32 151, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #8
  br label %1994

1977:                                             ; preds = %1973
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #8
  %1978 = load ptr, ptr %115, align 8, !tbaa !5
  %1979 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3MIR8Constant10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(40) %1978)
          to label %1980 unwind label %1986

1980:                                             ; preds = %1977
  store ptr %1979, ptr %149, align 8, !tbaa !5
  br label %1981

1981:                                             ; preds = %1991, %1980
  %1982 = load ptr, ptr %149, align 8, !tbaa !5
  %1983 = load i8, ptr %148, align 1, !tbaa !31, !range !65, !noundef !66
  %1984 = trunc i8 %1983 to i1
  br i1 %1984, label %1990, label %1985

1985:                                             ; preds = %1981
  store i32 154, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #8
  br label %1992

1986:                                             ; preds = %1977
  %1987 = landingpad { ptr, i32 }
          cleanup
  %1988 = extractvalue { ptr, i32 } %1987, 0
  store ptr %1988, ptr %14, align 8
  %1989 = extractvalue { ptr, i32 } %1987, 1
  store i32 %1989, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #8
  br label %2501

1990:                                             ; preds = %1981
  br label %1991

1991:                                             ; preds = %1990
  store i8 0, ptr %148, align 1, !tbaa !31
  br label %1981, !llvm.loop !85

1992:                                             ; preds = %1985
  br label %1993

1993:                                             ; preds = %1992
  store i8 0, ptr %148, align 1, !tbaa !31
  br label %1973, !llvm.loop !86

1994:                                             ; preds = %1976
  br label %2499

1995:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 1, ptr %150) #8
  store i8 1, ptr %150, align 1, !tbaa !31
  br label %1996

1996:                                             ; preds = %2034, %1995
  %1997 = load i8, ptr %150, align 1, !tbaa !31, !range !65, !noundef !66
  %1998 = trunc i8 %1997 to i1
  br i1 %1998, label %2000, label %1999

1999:                                             ; preds = %1996
  store i32 157, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %150) #8
  br label %2035

2000:                                             ; preds = %1996
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #8
  %2001 = load ptr, ptr %115, align 8, !tbaa !5
  %2002 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR8Constant11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(40) %2001)
          to label %2003 unwind label %2009

2003:                                             ; preds = %2000
  store ptr %2002, ptr %151, align 8, !tbaa !5
  br label %2004

2004:                                             ; preds = %2031, %2003
  %2005 = load ptr, ptr %151, align 8, !tbaa !5
  %2006 = load i8, ptr %150, align 1, !tbaa !31, !range !65, !noundef !66
  %2007 = trunc i8 %2006 to i1
  br i1 %2007, label %2013, label %2008

2008:                                             ; preds = %2004
  store i32 160, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #8
  br label %2033

2009:                                             ; preds = %2017, %2014, %2000
  %2010 = landingpad { ptr, i32 }
          cleanup
  %2011 = extractvalue { ptr, i32 } %2010, 0
  store ptr %2011, ptr %14, align 8
  %2012 = extractvalue { ptr, i32 } %2010, 1
  store i32 %2012, ptr %15, align 4
  br label %2032

2013:                                             ; preds = %2004
  br label %2014

2014:                                             ; preds = %2013
  %2015 = load ptr, ptr %105, align 8, !tbaa !5
  %2016 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2015)
          to label %2017 unwind label %2009

2017:                                             ; preds = %2014
  %2018 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData16is_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2016)
          to label %2019 unwind label %2009

2019:                                             ; preds = %2017
  br i1 %2018, label %2028, label %2020

2020:                                             ; preds = %2019
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #8
  %2021 = getelementptr inbounds %class.anon.227, ptr %153, i32 0, i32 0
  %2022 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2022, ptr %2021, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef nonnull align 8 dereferenceable(8) %153) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %152)
          to label %2023 unwind label %2024

2023:                                             ; preds = %2020
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #8
  br label %2028

2024:                                             ; preds = %2020
  %2025 = landingpad { ptr, i32 }
          cleanup
  %2026 = extractvalue { ptr, i32 } %2025, 0
  store ptr %2026, ptr %14, align 8
  %2027 = extractvalue { ptr, i32 } %2025, 1
  store i32 %2027, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #8
  br label %2032

2028:                                             ; preds = %2023, %2019
  br label %2029

2029:                                             ; preds = %2028
  br label %2030

2030:                                             ; preds = %2029
  br label %2031

2031:                                             ; preds = %2030
  store i8 0, ptr %150, align 1, !tbaa !31
  br label %2004, !llvm.loop !87

2032:                                             ; preds = %2024, %2009
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %150) #8
  br label %2501

2033:                                             ; preds = %2008
  br label %2034

2034:                                             ; preds = %2033
  store i8 0, ptr %150, align 1, !tbaa !31
  br label %1996, !llvm.loop !88

2035:                                             ; preds = %1999
  br label %2499

2036:                                             ; preds = %1617
  call void @llvm.lifetime.start.p0(i64 1, ptr %154) #8
  store i8 1, ptr %154, align 1, !tbaa !31
  br label %2037

2037:                                             ; preds = %2497, %2036
  %2038 = load i8, ptr %154, align 1, !tbaa !31, !range !65, !noundef !66
  %2039 = trunc i8 %2038 to i1
  br i1 %2039, label %2041, label %2040

2040:                                             ; preds = %2037
  store i32 165, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %154) #8
  br label %2498

2041:                                             ; preds = %2037
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #8
  %2042 = load ptr, ptr %115, align 8, !tbaa !5
  %2043 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR8Constant11as_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %2042)
          to label %2044 unwind label %2050

2044:                                             ; preds = %2041
  store ptr %2043, ptr %155, align 8, !tbaa !5
  br label %2045

2045:                                             ; preds = %2491, %2044
  %2046 = load ptr, ptr %155, align 8, !tbaa !5
  %2047 = load i8, ptr %154, align 1, !tbaa !31, !range !65, !noundef !66
  %2048 = trunc i8 %2047 to i1
  br i1 %2048, label %2054, label %2049

2049:                                             ; preds = %2045
  store i32 168, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #8
  br label %2496

2050:                                             ; preds = %2041
  %2051 = landingpad { ptr, i32 }
          cleanup
  %2052 = extractvalue { ptr, i32 } %2051, 0
  store ptr %2052, ptr %14, align 8
  %2053 = extractvalue { ptr, i32 } %2051, 1
  store i32 %2053, ptr %15, align 4
  br label %2495

2054:                                             ; preds = %2045
  call void @llvm.lifetime.start.p0(i64 144, ptr %156) #8
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %156)
          to label %2055 unwind label %2068

2055:                                             ; preds = %2054
  call void @llvm.lifetime.start.p0(i64 24, ptr %157) #8
  %2056 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 2
  %2057 = load ptr, ptr %2056, align 8, !tbaa !89
  %2058 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 1
  %2059 = load ptr, ptr %2058, align 8, !tbaa !94
  %2060 = load ptr, ptr %155, align 8, !tbaa !5
  %2061 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2060) #8
  invoke void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %157, ptr noundef nonnull align 8 dereferenceable(424) %2057, ptr noundef nonnull align 8 dereferenceable(8) %2059, ptr noundef nonnull align 8 dereferenceable(88) %2061, ptr noundef nonnull align 8 dereferenceable(144) %156, i1 noundef zeroext true, ptr noundef null)
          to label %2062 unwind label %2072

2062:                                             ; preds = %2055
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %158)
          to label %2063 unwind label %2076

2063:                                             ; preds = %2062
  call void @llvm.lifetime.start.p0(i64 1, ptr %159) #8
  store i8 1, ptr %159, align 1, !tbaa !31
  br label %2064

2064:                                             ; preds = %2489, %2063
  %2065 = load i8, ptr %159, align 1, !tbaa !31, !range !65, !noundef !66
  %2066 = trunc i8 %2065 to i1
  br i1 %2066, label %2080, label %2067

2067:                                             ; preds = %2064
  store i32 171, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #8
  br label %2490

2068:                                             ; preds = %2054
  %2069 = landingpad { ptr, i32 }
          cleanup
  %2070 = extractvalue { ptr, i32 } %2069, 0
  store ptr %2070, ptr %14, align 8
  %2071 = extractvalue { ptr, i32 } %2069, 1
  store i32 %2071, ptr %15, align 4
  br label %2494

2072:                                             ; preds = %2055
  %2073 = landingpad { ptr, i32 }
          cleanup
  %2074 = extractvalue { ptr, i32 } %2073, 0
  store ptr %2074, ptr %14, align 8
  %2075 = extractvalue { ptr, i32 } %2073, 1
  store i32 %2075, ptr %15, align 4
  br label %2493

2076:                                             ; preds = %2062
  %2077 = landingpad { ptr, i32 }
          cleanup
  %2078 = extractvalue { ptr, i32 } %2077, 0
  store ptr %2078, ptr %14, align 8
  %2079 = extractvalue { ptr, i32 } %2077, 1
  store i32 %2079, ptr %15, align 4
  br label %2492

2080:                                             ; preds = %2064
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #8
  store ptr %157, ptr %160, align 8, !tbaa !5
  br label %2081

2081:                                             ; preds = %2486, %2080
  %2082 = load i8, ptr %159, align 1, !tbaa !31, !range !65, !noundef !66
  %2083 = trunc i8 %2082 to i1
  br i1 %2083, label %2085, label %2084

2084:                                             ; preds = %2081
  store i32 174, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #8
  br label %2488

2085:                                             ; preds = %2081
  %2086 = load ptr, ptr %160, align 8, !tbaa !5
  %2087 = invoke noundef i32 @_ZNK18StaticTraitResolve8ValuePtr3tagEv(ptr noundef nonnull align 8 dereferenceable(24) %2086)
          to label %2088 unwind label %2089

2088:                                             ; preds = %2085
  switch i32 %2087, label %2485 [
    i32 0, label %2093
    i32 1, label %2094
    i32 2, label %2135
    i32 3, label %2176
    i32 9, label %2217
    i32 7, label %2258
    i32 4, label %2299
    i32 5, label %2362
    i32 6, label %2403
    i32 8, label %2444
  ]

2089:                                             ; preds = %2085
  %2090 = landingpad { ptr, i32 }
          cleanup
  %2091 = extractvalue { ptr, i32 } %2090, 0
  store ptr %2091, ptr %14, align 8
  %2092 = extractvalue { ptr, i32 } %2090, 1
  store i32 %2092, ptr %15, align 4
  br label %2487

2093:                                             ; preds = %2088
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 842, ptr noundef @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

2094:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 1, ptr %161) #8
  store i8 1, ptr %161, align 1, !tbaa !31
  br label %2095

2095:                                             ; preds = %2133, %2094
  %2096 = load i8, ptr %161, align 1, !tbaa !31, !range !65, !noundef !66
  %2097 = trunc i8 %2096 to i1
  br i1 %2097, label %2099, label %2098

2098:                                             ; preds = %2095
  store i32 178, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %161) #8
  br label %2134

2099:                                             ; preds = %2095
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #8
  %2100 = load ptr, ptr %160, align 8, !tbaa !5
  %2101 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN18StaticTraitResolve8ValuePtr11as_NotFoundEv(ptr noundef nonnull align 8 dereferenceable(24) %2100)
          to label %2102 unwind label %2108

2102:                                             ; preds = %2099
  store ptr %2101, ptr %162, align 8, !tbaa !5
  br label %2103

2103:                                             ; preds = %2130, %2102
  %2104 = load ptr, ptr %162, align 8, !tbaa !5
  %2105 = load i8, ptr %161, align 1, !tbaa !31, !range !65, !noundef !66
  %2106 = trunc i8 %2105 to i1
  br i1 %2106, label %2112, label %2107

2107:                                             ; preds = %2103
  store i32 181, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #8
  br label %2132

2108:                                             ; preds = %2099
  %2109 = landingpad { ptr, i32 }
          cleanup
  %2110 = extractvalue { ptr, i32 } %2109, 0
  store ptr %2110, ptr %14, align 8
  %2111 = extractvalue { ptr, i32 } %2109, 1
  store i32 %2111, ptr %15, align 4
  br label %2131

2112:                                             ; preds = %2103
  br label %2113

2113:                                             ; preds = %2112
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %163, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %165) #8
  %2114 = getelementptr inbounds %class.anon.228, ptr %165, i32 0, i32 0
  store ptr %163, ptr %2114, align 8, !tbaa !5
  %2115 = getelementptr inbounds %class.anon.228, ptr %165, i32 0, i32 1
  %2116 = load ptr, ptr %155, align 8, !tbaa !5
  store ptr %2116, ptr %2115, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %164, ptr noundef nonnull align 8 dereferenceable(16) %165) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %164)
          to label %2117 unwind label %2119

2117:                                             ; preds = %2113
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #8
  %2118 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %2118, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2118, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %2123

2119:                                             ; preds = %2113
  %2120 = landingpad { ptr, i32 }
          cleanup
  %2121 = extractvalue { ptr, i32 } %2120, 0
  store ptr %2121, ptr %14, align 8
  %2122 = extractvalue { ptr, i32 } %2120, 1
  store i32 %2122, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #8
  br label %2127

2123:                                             ; preds = %2117
  %2124 = landingpad { ptr, i32 }
          cleanup
  %2125 = extractvalue { ptr, i32 } %2124, 0
  store ptr %2125, ptr %14, align 8
  %2126 = extractvalue { ptr, i32 } %2124, 1
  store i32 %2126, ptr %15, align 4
  br label %2127

2127:                                             ; preds = %2123, %2119
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #8
  br label %2131

2128:                                             ; No predecessors!
  br label %2129

2129:                                             ; preds = %2128
  br label %2130

2130:                                             ; preds = %2129
  store i8 0, ptr %161, align 1, !tbaa !31
  br label %2103, !llvm.loop !95

2131:                                             ; preds = %2127, %2108
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %161) #8
  br label %2487

2132:                                             ; preds = %2107
  br label %2133

2133:                                             ; preds = %2132
  store i8 0, ptr %161, align 1, !tbaa !31
  br label %2095, !llvm.loop !96

2134:                                             ; preds = %2098
  br label %2485

2135:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 1, ptr %166) #8
  store i8 1, ptr %166, align 1, !tbaa !31
  br label %2136

2136:                                             ; preds = %2174, %2135
  %2137 = load i8, ptr %166, align 1, !tbaa !31, !range !65, !noundef !66
  %2138 = trunc i8 %2137 to i1
  br i1 %2138, label %2140, label %2139

2139:                                             ; preds = %2136
  store i32 186, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %166) #8
  br label %2175

2140:                                             ; preds = %2136
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #8
  %2141 = load ptr, ptr %160, align 8, !tbaa !5
  %2142 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN18StaticTraitResolve8ValuePtr14as_NotYetKnownEv(ptr noundef nonnull align 8 dereferenceable(24) %2141)
          to label %2143 unwind label %2149

2143:                                             ; preds = %2140
  store ptr %2142, ptr %167, align 8, !tbaa !5
  br label %2144

2144:                                             ; preds = %2171, %2143
  %2145 = load ptr, ptr %167, align 8, !tbaa !5
  %2146 = load i8, ptr %166, align 1, !tbaa !31, !range !65, !noundef !66
  %2147 = trunc i8 %2146 to i1
  br i1 %2147, label %2153, label %2148

2148:                                             ; preds = %2144
  store i32 189, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #8
  br label %2173

2149:                                             ; preds = %2140
  %2150 = landingpad { ptr, i32 }
          cleanup
  %2151 = extractvalue { ptr, i32 } %2150, 0
  store ptr %2151, ptr %14, align 8
  %2152 = extractvalue { ptr, i32 } %2150, 1
  store i32 %2152, ptr %15, align 4
  br label %2172

2153:                                             ; preds = %2144
  br label %2154

2154:                                             ; preds = %2153
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %168, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %170) #8
  %2155 = getelementptr inbounds %class.anon.229, ptr %170, i32 0, i32 0
  store ptr %168, ptr %2155, align 8, !tbaa !5
  %2156 = getelementptr inbounds %class.anon.229, ptr %170, i32 0, i32 1
  %2157 = load ptr, ptr %155, align 8, !tbaa !5
  store ptr %2157, ptr %2156, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %169, ptr noundef nonnull align 8 dereferenceable(16) %170) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %169)
          to label %2158 unwind label %2160

2158:                                             ; preds = %2154
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #8
  %2159 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %2159, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2159, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %2164

2160:                                             ; preds = %2154
  %2161 = landingpad { ptr, i32 }
          cleanup
  %2162 = extractvalue { ptr, i32 } %2161, 0
  store ptr %2162, ptr %14, align 8
  %2163 = extractvalue { ptr, i32 } %2161, 1
  store i32 %2163, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %170) #8
  br label %2168

2164:                                             ; preds = %2158
  %2165 = landingpad { ptr, i32 }
          cleanup
  %2166 = extractvalue { ptr, i32 } %2165, 0
  store ptr %2166, ptr %14, align 8
  %2167 = extractvalue { ptr, i32 } %2165, 1
  store i32 %2167, ptr %15, align 4
  br label %2168

2168:                                             ; preds = %2164, %2160
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #8
  br label %2172

2169:                                             ; No predecessors!
  br label %2170

2170:                                             ; preds = %2169
  br label %2171

2171:                                             ; preds = %2170
  store i8 0, ptr %166, align 1, !tbaa !31
  br label %2144, !llvm.loop !97

2172:                                             ; preds = %2168, %2149
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %166) #8
  br label %2487

2173:                                             ; preds = %2148
  br label %2174

2174:                                             ; preds = %2173
  store i8 0, ptr %166, align 1, !tbaa !31
  br label %2136, !llvm.loop !98

2175:                                             ; preds = %2139
  br label %2485

2176:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 1, ptr %171) #8
  store i8 1, ptr %171, align 1, !tbaa !31
  br label %2177

2177:                                             ; preds = %2215, %2176
  %2178 = load i8, ptr %171, align 1, !tbaa !31, !range !65, !noundef !66
  %2179 = trunc i8 %2178 to i1
  br i1 %2179, label %2181, label %2180

2180:                                             ; preds = %2177
  store i32 194, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %171) #8
  br label %2216

2181:                                             ; preds = %2177
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #8
  %2182 = load ptr, ptr %160, align 8, !tbaa !5
  %2183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(24) %2182)
          to label %2184 unwind label %2190

2184:                                             ; preds = %2181
  store ptr %2183, ptr %172, align 8, !tbaa !5
  br label %2185

2185:                                             ; preds = %2212, %2184
  %2186 = load ptr, ptr %172, align 8, !tbaa !5
  %2187 = load i8, ptr %171, align 1, !tbaa !31, !range !65, !noundef !66
  %2188 = trunc i8 %2187 to i1
  br i1 %2188, label %2194, label %2189

2189:                                             ; preds = %2185
  store i32 197, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #8
  br label %2214

2190:                                             ; preds = %2181
  %2191 = landingpad { ptr, i32 }
          cleanup
  %2192 = extractvalue { ptr, i32 } %2191, 0
  store ptr %2192, ptr %14, align 8
  %2193 = extractvalue { ptr, i32 } %2191, 1
  store i32 %2193, ptr %15, align 4
  br label %2213

2194:                                             ; preds = %2185
  br label %2195

2195:                                             ; preds = %2194
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %173, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %175) #8
  %2196 = getelementptr inbounds %class.anon.230, ptr %175, i32 0, i32 0
  store ptr %173, ptr %2196, align 8, !tbaa !5
  %2197 = getelementptr inbounds %class.anon.230, ptr %175, i32 0, i32 1
  %2198 = load ptr, ptr %155, align 8, !tbaa !5
  store ptr %2198, ptr %2197, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull align 8 dereferenceable(16) %175) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %174)
          to label %2199 unwind label %2201

2199:                                             ; preds = %2195
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #8
  %2200 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %2200, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2200, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %2205

2201:                                             ; preds = %2195
  %2202 = landingpad { ptr, i32 }
          cleanup
  %2203 = extractvalue { ptr, i32 } %2202, 0
  store ptr %2203, ptr %14, align 8
  %2204 = extractvalue { ptr, i32 } %2202, 1
  store i32 %2204, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %175) #8
  br label %2209

2205:                                             ; preds = %2199
  %2206 = landingpad { ptr, i32 }
          cleanup
  %2207 = extractvalue { ptr, i32 } %2206, 0
  store ptr %2207, ptr %14, align 8
  %2208 = extractvalue { ptr, i32 } %2206, 1
  store i32 %2208, ptr %15, align 4
  br label %2209

2209:                                             ; preds = %2205, %2201
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #8
  br label %2213

2210:                                             ; No predecessors!
  br label %2211

2211:                                             ; preds = %2210
  br label %2212

2212:                                             ; preds = %2211
  store i8 0, ptr %171, align 1, !tbaa !31
  br label %2185, !llvm.loop !99

2213:                                             ; preds = %2209, %2190
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %171) #8
  br label %2487

2214:                                             ; preds = %2189
  br label %2215

2215:                                             ; preds = %2214
  store i8 0, ptr %171, align 1, !tbaa !31
  br label %2177, !llvm.loop !100

2216:                                             ; preds = %2180
  br label %2485

2217:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 1, ptr %176) #8
  store i8 1, ptr %176, align 1, !tbaa !31
  br label %2218

2218:                                             ; preds = %2256, %2217
  %2219 = load i8, ptr %176, align 1, !tbaa !31, !range !65, !noundef !66
  %2220 = trunc i8 %2219 to i1
  br i1 %2220, label %2222, label %2221

2221:                                             ; preds = %2218
  store i32 202, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #8
  br label %2257

2222:                                             ; preds = %2218
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #8
  %2223 = load ptr, ptr %160, align 8, !tbaa !5
  %2224 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN18StaticTraitResolve8ValuePtr17as_StructConstantEv(ptr noundef nonnull align 8 dereferenceable(24) %2223)
          to label %2225 unwind label %2231

2225:                                             ; preds = %2222
  store ptr %2224, ptr %177, align 8, !tbaa !5
  br label %2226

2226:                                             ; preds = %2253, %2225
  %2227 = load ptr, ptr %177, align 8, !tbaa !5
  %2228 = load i8, ptr %176, align 1, !tbaa !31, !range !65, !noundef !66
  %2229 = trunc i8 %2228 to i1
  br i1 %2229, label %2235, label %2230

2230:                                             ; preds = %2226
  store i32 205, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #8
  br label %2255

2231:                                             ; preds = %2222
  %2232 = landingpad { ptr, i32 }
          cleanup
  %2233 = extractvalue { ptr, i32 } %2232, 0
  store ptr %2233, ptr %14, align 8
  %2234 = extractvalue { ptr, i32 } %2232, 1
  store i32 %2234, ptr %15, align 4
  br label %2254

2235:                                             ; preds = %2226
  br label %2236

2236:                                             ; preds = %2235
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %178, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %180) #8
  %2237 = getelementptr inbounds %class.anon.231, ptr %180, i32 0, i32 0
  store ptr %178, ptr %2237, align 8, !tbaa !5
  %2238 = getelementptr inbounds %class.anon.231, ptr %180, i32 0, i32 1
  %2239 = load ptr, ptr %155, align 8, !tbaa !5
  store ptr %2239, ptr %2238, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_23vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull align 8 dereferenceable(16) %180) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %179)
          to label %2240 unwind label %2242

2240:                                             ; preds = %2236
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %180) #8
  %2241 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %2241, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2241, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %2246

2242:                                             ; preds = %2236
  %2243 = landingpad { ptr, i32 }
          cleanup
  %2244 = extractvalue { ptr, i32 } %2243, 0
  store ptr %2244, ptr %14, align 8
  %2245 = extractvalue { ptr, i32 } %2243, 1
  store i32 %2245, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %180) #8
  br label %2250

2246:                                             ; preds = %2240
  %2247 = landingpad { ptr, i32 }
          cleanup
  %2248 = extractvalue { ptr, i32 } %2247, 0
  store ptr %2248, ptr %14, align 8
  %2249 = extractvalue { ptr, i32 } %2247, 1
  store i32 %2249, ptr %15, align 4
  br label %2250

2250:                                             ; preds = %2246, %2242
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #8
  br label %2254

2251:                                             ; No predecessors!
  br label %2252

2252:                                             ; preds = %2251
  br label %2253

2253:                                             ; preds = %2252
  store i8 0, ptr %176, align 1, !tbaa !31
  br label %2226, !llvm.loop !101

2254:                                             ; preds = %2250, %2231
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #8
  br label %2487

2255:                                             ; preds = %2230
  br label %2256

2256:                                             ; preds = %2255
  store i8 0, ptr %176, align 1, !tbaa !31
  br label %2218, !llvm.loop !102

2257:                                             ; preds = %2221
  br label %2485

2258:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 1, ptr %181) #8
  store i8 1, ptr %181, align 1, !tbaa !31
  br label %2259

2259:                                             ; preds = %2297, %2258
  %2260 = load i8, ptr %181, align 1, !tbaa !31, !range !65, !noundef !66
  %2261 = trunc i8 %2260 to i1
  br i1 %2261, label %2263, label %2262

2262:                                             ; preds = %2259
  store i32 210, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %181) #8
  br label %2298

2263:                                             ; preds = %2259
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #8
  %2264 = load ptr, ptr %160, align 8, !tbaa !5
  %2265 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN18StaticTraitResolve8ValuePtr12as_EnumValueEv(ptr noundef nonnull align 8 dereferenceable(24) %2264)
          to label %2266 unwind label %2272

2266:                                             ; preds = %2263
  store ptr %2265, ptr %182, align 8, !tbaa !5
  br label %2267

2267:                                             ; preds = %2294, %2266
  %2268 = load ptr, ptr %182, align 8, !tbaa !5
  %2269 = load i8, ptr %181, align 1, !tbaa !31, !range !65, !noundef !66
  %2270 = trunc i8 %2269 to i1
  br i1 %2270, label %2276, label %2271

2271:                                             ; preds = %2267
  store i32 213, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #8
  br label %2296

2272:                                             ; preds = %2263
  %2273 = landingpad { ptr, i32 }
          cleanup
  %2274 = extractvalue { ptr, i32 } %2273, 0
  store ptr %2274, ptr %14, align 8
  %2275 = extractvalue { ptr, i32 } %2273, 1
  store i32 %2275, ptr %15, align 4
  br label %2295

2276:                                             ; preds = %2267
  br label %2277

2277:                                             ; preds = %2276
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %183, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %185) #8
  %2278 = getelementptr inbounds %class.anon.232, ptr %185, i32 0, i32 0
  store ptr %183, ptr %2278, align 8, !tbaa !5
  %2279 = getelementptr inbounds %class.anon.232, ptr %185, i32 0, i32 1
  %2280 = load ptr, ptr %155, align 8, !tbaa !5
  store ptr %2280, ptr %2279, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_24vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %184, ptr noundef nonnull align 8 dereferenceable(16) %185) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %184)
          to label %2281 unwind label %2283

2281:                                             ; preds = %2277
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %184) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %185) #8
  %2282 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %2282, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2282, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %2287

2283:                                             ; preds = %2277
  %2284 = landingpad { ptr, i32 }
          cleanup
  %2285 = extractvalue { ptr, i32 } %2284, 0
  store ptr %2285, ptr %14, align 8
  %2286 = extractvalue { ptr, i32 } %2284, 1
  store i32 %2286, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %184) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %185) #8
  br label %2291

2287:                                             ; preds = %2281
  %2288 = landingpad { ptr, i32 }
          cleanup
  %2289 = extractvalue { ptr, i32 } %2288, 0
  store ptr %2289, ptr %14, align 8
  %2290 = extractvalue { ptr, i32 } %2288, 1
  store i32 %2290, ptr %15, align 4
  br label %2291

2291:                                             ; preds = %2287, %2283
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #8
  br label %2295

2292:                                             ; No predecessors!
  br label %2293

2293:                                             ; preds = %2292
  br label %2294

2294:                                             ; preds = %2293
  store i8 0, ptr %181, align 1, !tbaa !31
  br label %2267, !llvm.loop !103

2295:                                             ; preds = %2291, %2272
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %181) #8
  br label %2487

2296:                                             ; preds = %2271
  br label %2297

2297:                                             ; preds = %2296
  store i8 0, ptr %181, align 1, !tbaa !31
  br label %2259, !llvm.loop !104

2298:                                             ; preds = %2262
  br label %2485

2299:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 1, ptr %186) #8
  store i8 1, ptr %186, align 1, !tbaa !31
  br label %2300

2300:                                             ; preds = %2360, %2299
  %2301 = load i8, ptr %186, align 1, !tbaa !31, !range !65, !noundef !66
  %2302 = trunc i8 %2301 to i1
  br i1 %2302, label %2304, label %2303

2303:                                             ; preds = %2300
  store i32 218, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %186) #8
  br label %2361

2304:                                             ; preds = %2300
  call void @llvm.lifetime.start.p0(i64 8, ptr %187) #8
  %2305 = load ptr, ptr %160, align 8, !tbaa !5
  %2306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(24) %2305)
          to label %2307 unwind label %2313

2307:                                             ; preds = %2304
  store ptr %2306, ptr %187, align 8, !tbaa !5
  br label %2308

2308:                                             ; preds = %2334, %2307
  %2309 = load ptr, ptr %187, align 8, !tbaa !5
  %2310 = load i8, ptr %186, align 1, !tbaa !31, !range !65, !noundef !66
  %2311 = trunc i8 %2310 to i1
  br i1 %2311, label %2317, label %2312

2312:                                             ; preds = %2308
  store i32 221, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #8
  br label %2359

2313:                                             ; preds = %2325, %2304
  %2314 = landingpad { ptr, i32 }
          cleanup
  %2315 = extractvalue { ptr, i32 } %2314, 0
  store ptr %2315, ptr %14, align 8
  %2316 = extractvalue { ptr, i32 } %2314, 1
  store i32 %2316, ptr %15, align 4
  br label %2358

2317:                                             ; preds = %2308
  call void @llvm.lifetime.start.p0(i64 8, ptr %188) #8
  %2318 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 1
  %2319 = load ptr, ptr %2318, align 8, !tbaa !94
  %2320 = load ptr, ptr %187, align 8, !tbaa !5
  %2321 = load ptr, ptr %2320, align 8, !tbaa !5
  %2322 = getelementptr inbounds %"class.HIR::Static", ptr %2321, i32 0, i32 3
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %188, ptr noundef nonnull align 8 dereferenceable(96) %156, ptr noundef nonnull align 8 dereferenceable(8) %2319, ptr noundef nonnull align 8 dereferenceable(8) %2322, i1 noundef zeroext true)
          to label %2323 unwind label %2335

2323:                                             ; preds = %2317
  %2324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull align 8 dereferenceable(8) %188)
          to label %2325 unwind label %2339

2325:                                             ; preds = %2323
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #8
  %2326 = load ptr, ptr %6, align 8, !tbaa !5
  %2327 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 1
  %2328 = load ptr, ptr %2327, align 8, !tbaa !94
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %2326, ptr noundef nonnull align 8 dereferenceable(8) %2328, ptr noundef nonnull align 8 dereferenceable(8) %158)
          to label %2329 unwind label %2313

2329:                                             ; preds = %2325
  %2330 = load ptr, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %189) #8
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef nonnull align 8 dereferenceable(8) %158)
          to label %2331 unwind label %2344

2331:                                             ; preds = %2329
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %189, i32 noundef 0, ptr noundef %190)
          to label %2332 unwind label %2348

2332:                                             ; preds = %2331
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %2330, ptr noundef nonnull align 8 dereferenceable(8) %189)
          to label %2333 unwind label %2352

2333:                                             ; preds = %2332
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %189) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %190) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #8
  br label %2334

2334:                                             ; preds = %2333
  store i8 0, ptr %186, align 1, !tbaa !31
  br label %2308, !llvm.loop !105

2335:                                             ; preds = %2317
  %2336 = landingpad { ptr, i32 }
          cleanup
  %2337 = extractvalue { ptr, i32 } %2336, 0
  store ptr %2337, ptr %14, align 8
  %2338 = extractvalue { ptr, i32 } %2336, 1
  store i32 %2338, ptr %15, align 4
  br label %2343

2339:                                             ; preds = %2323
  %2340 = landingpad { ptr, i32 }
          cleanup
  %2341 = extractvalue { ptr, i32 } %2340, 0
  store ptr %2341, ptr %14, align 8
  %2342 = extractvalue { ptr, i32 } %2340, 1
  store i32 %2342, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #8
  br label %2343

2343:                                             ; preds = %2339, %2335
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #8
  br label %2358

2344:                                             ; preds = %2329
  %2345 = landingpad { ptr, i32 }
          cleanup
  %2346 = extractvalue { ptr, i32 } %2345, 0
  store ptr %2346, ptr %14, align 8
  %2347 = extractvalue { ptr, i32 } %2345, 1
  store i32 %2347, ptr %15, align 4
  br label %2357

2348:                                             ; preds = %2331
  %2349 = landingpad { ptr, i32 }
          cleanup
  %2350 = extractvalue { ptr, i32 } %2349, 0
  store ptr %2350, ptr %14, align 8
  %2351 = extractvalue { ptr, i32 } %2349, 1
  store i32 %2351, ptr %15, align 4
  br label %2356

2352:                                             ; preds = %2332
  %2353 = landingpad { ptr, i32 }
          cleanup
  %2354 = extractvalue { ptr, i32 } %2353, 0
  store ptr %2354, ptr %14, align 8
  %2355 = extractvalue { ptr, i32 } %2353, 1
  store i32 %2355, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %189) #8
  br label %2356

2356:                                             ; preds = %2352, %2348
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %190) #8
  br label %2357

2357:                                             ; preds = %2356, %2344
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #8
  br label %2358

2358:                                             ; preds = %2357, %2343, %2313
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %186) #8
  br label %2487

2359:                                             ; preds = %2312
  br label %2360

2360:                                             ; preds = %2359
  store i8 0, ptr %186, align 1, !tbaa !31
  br label %2300, !llvm.loop !106

2361:                                             ; preds = %2303
  br label %2485

2362:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 1, ptr %191) #8
  store i8 1, ptr %191, align 1, !tbaa !31
  br label %2363

2363:                                             ; preds = %2401, %2362
  %2364 = load i8, ptr %191, align 1, !tbaa !31, !range !65, !noundef !66
  %2365 = trunc i8 %2364 to i1
  br i1 %2365, label %2367, label %2366

2366:                                             ; preds = %2363
  store i32 224, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %191) #8
  br label %2402

2367:                                             ; preds = %2363
  call void @llvm.lifetime.start.p0(i64 8, ptr %192) #8
  %2368 = load ptr, ptr %160, align 8, !tbaa !5
  %2369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %2368)
          to label %2370 unwind label %2376

2370:                                             ; preds = %2367
  store ptr %2369, ptr %192, align 8, !tbaa !5
  br label %2371

2371:                                             ; preds = %2398, %2370
  %2372 = load ptr, ptr %192, align 8, !tbaa !5
  %2373 = load i8, ptr %191, align 1, !tbaa !31, !range !65, !noundef !66
  %2374 = trunc i8 %2373 to i1
  br i1 %2374, label %2380, label %2375

2375:                                             ; preds = %2371
  store i32 227, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #8
  br label %2400

2376:                                             ; preds = %2384, %2381, %2367
  %2377 = landingpad { ptr, i32 }
          cleanup
  %2378 = extractvalue { ptr, i32 } %2377, 0
  store ptr %2378, ptr %14, align 8
  %2379 = extractvalue { ptr, i32 } %2377, 1
  store i32 %2379, ptr %15, align 4
  br label %2399

2380:                                             ; preds = %2371
  br label %2381

2381:                                             ; preds = %2380
  %2382 = load ptr, ptr %105, align 8, !tbaa !5
  %2383 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2382)
          to label %2384 unwind label %2376

2384:                                             ; preds = %2381
  %2385 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2383)
          to label %2386 unwind label %2376

2386:                                             ; preds = %2384
  br i1 %2385, label %2395, label %2387

2387:                                             ; preds = %2386
  call void @llvm.lifetime.start.p0(i64 8, ptr %194) #8
  %2388 = getelementptr inbounds %class.anon.244, ptr %194, i32 0, i32 0
  %2389 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2389, ptr %2388, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_25vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %193, ptr noundef nonnull align 8 dereferenceable(8) %194) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %193)
          to label %2390 unwind label %2391

2390:                                             ; preds = %2387
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #8
  br label %2395

2391:                                             ; preds = %2387
  %2392 = landingpad { ptr, i32 }
          cleanup
  %2393 = extractvalue { ptr, i32 } %2392, 0
  store ptr %2393, ptr %14, align 8
  %2394 = extractvalue { ptr, i32 } %2392, 1
  store i32 %2394, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #8
  br label %2399

2395:                                             ; preds = %2390, %2386
  br label %2396

2396:                                             ; preds = %2395
  br label %2397

2397:                                             ; preds = %2396
  br label %2398

2398:                                             ; preds = %2397
  store i8 0, ptr %191, align 1, !tbaa !31
  br label %2371, !llvm.loop !107

2399:                                             ; preds = %2391, %2376
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %191) #8
  br label %2487

2400:                                             ; preds = %2375
  br label %2401

2401:                                             ; preds = %2400
  store i8 0, ptr %191, align 1, !tbaa !31
  br label %2363, !llvm.loop !108

2402:                                             ; preds = %2366
  br label %2485

2403:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 1, ptr %195) #8
  store i8 1, ptr %195, align 1, !tbaa !31
  br label %2404

2404:                                             ; preds = %2442, %2403
  %2405 = load i8, ptr %195, align 1, !tbaa !31, !range !65, !noundef !66
  %2406 = trunc i8 %2405 to i1
  br i1 %2406, label %2408, label %2407

2407:                                             ; preds = %2404
  store i32 232, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %195) #8
  br label %2443

2408:                                             ; preds = %2404
  call void @llvm.lifetime.start.p0(i64 8, ptr %196) #8
  %2409 = load ptr, ptr %160, align 8, !tbaa !5
  %2410 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN18StaticTraitResolve8ValuePtr18as_EnumConstructorEv(ptr noundef nonnull align 8 dereferenceable(24) %2409)
          to label %2411 unwind label %2417

2411:                                             ; preds = %2408
  store ptr %2410, ptr %196, align 8, !tbaa !5
  br label %2412

2412:                                             ; preds = %2439, %2411
  %2413 = load ptr, ptr %196, align 8, !tbaa !5
  %2414 = load i8, ptr %195, align 1, !tbaa !31, !range !65, !noundef !66
  %2415 = trunc i8 %2414 to i1
  br i1 %2415, label %2421, label %2416

2416:                                             ; preds = %2412
  store i32 235, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #8
  br label %2441

2417:                                             ; preds = %2425, %2422, %2408
  %2418 = landingpad { ptr, i32 }
          cleanup
  %2419 = extractvalue { ptr, i32 } %2418, 0
  store ptr %2419, ptr %14, align 8
  %2420 = extractvalue { ptr, i32 } %2418, 1
  store i32 %2420, ptr %15, align 4
  br label %2440

2421:                                             ; preds = %2412
  br label %2422

2422:                                             ; preds = %2421
  %2423 = load ptr, ptr %105, align 8, !tbaa !5
  %2424 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2423)
          to label %2425 unwind label %2417

2425:                                             ; preds = %2422
  %2426 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2424)
          to label %2427 unwind label %2417

2427:                                             ; preds = %2425
  br i1 %2426, label %2436, label %2428

2428:                                             ; preds = %2427
  call void @llvm.lifetime.start.p0(i64 8, ptr %198) #8
  %2429 = getelementptr inbounds %class.anon.245, ptr %198, i32 0, i32 0
  %2430 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2430, ptr %2429, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_26vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %197, ptr noundef nonnull align 8 dereferenceable(8) %198) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %197)
          to label %2431 unwind label %2432

2431:                                             ; preds = %2428
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #8
  br label %2436

2432:                                             ; preds = %2428
  %2433 = landingpad { ptr, i32 }
          cleanup
  %2434 = extractvalue { ptr, i32 } %2433, 0
  store ptr %2434, ptr %14, align 8
  %2435 = extractvalue { ptr, i32 } %2433, 1
  store i32 %2435, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #8
  br label %2440

2436:                                             ; preds = %2431, %2427
  br label %2437

2437:                                             ; preds = %2436
  br label %2438

2438:                                             ; preds = %2437
  br label %2439

2439:                                             ; preds = %2438
  store i8 0, ptr %195, align 1, !tbaa !31
  br label %2412, !llvm.loop !109

2440:                                             ; preds = %2432, %2417
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %195) #8
  br label %2487

2441:                                             ; preds = %2416
  br label %2442

2442:                                             ; preds = %2441
  store i8 0, ptr %195, align 1, !tbaa !31
  br label %2404, !llvm.loop !110

2443:                                             ; preds = %2407
  br label %2485

2444:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 1, ptr %199) #8
  store i8 1, ptr %199, align 1, !tbaa !31
  br label %2445

2445:                                             ; preds = %2483, %2444
  %2446 = load i8, ptr %199, align 1, !tbaa !31, !range !65, !noundef !66
  %2447 = trunc i8 %2446 to i1
  br i1 %2447, label %2449, label %2448

2448:                                             ; preds = %2445
  store i32 240, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %199) #8
  br label %2484

2449:                                             ; preds = %2445
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #8
  %2450 = load ptr, ptr %160, align 8, !tbaa !5
  %2451 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN18StaticTraitResolve8ValuePtr20as_StructConstructorEv(ptr noundef nonnull align 8 dereferenceable(24) %2450)
          to label %2452 unwind label %2458

2452:                                             ; preds = %2449
  store ptr %2451, ptr %200, align 8, !tbaa !5
  br label %2453

2453:                                             ; preds = %2480, %2452
  %2454 = load ptr, ptr %200, align 8, !tbaa !5
  %2455 = load i8, ptr %199, align 1, !tbaa !31, !range !65, !noundef !66
  %2456 = trunc i8 %2455 to i1
  br i1 %2456, label %2462, label %2457

2457:                                             ; preds = %2453
  store i32 243, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #8
  br label %2482

2458:                                             ; preds = %2466, %2463, %2449
  %2459 = landingpad { ptr, i32 }
          cleanup
  %2460 = extractvalue { ptr, i32 } %2459, 0
  store ptr %2460, ptr %14, align 8
  %2461 = extractvalue { ptr, i32 } %2459, 1
  store i32 %2461, ptr %15, align 4
  br label %2481

2462:                                             ; preds = %2453
  br label %2463

2463:                                             ; preds = %2462
  %2464 = load ptr, ptr %105, align 8, !tbaa !5
  %2465 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2464)
          to label %2466 unwind label %2458

2466:                                             ; preds = %2463
  %2467 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2465)
          to label %2468 unwind label %2458

2468:                                             ; preds = %2466
  br i1 %2467, label %2477, label %2469

2469:                                             ; preds = %2468
  call void @llvm.lifetime.start.p0(i64 8, ptr %202) #8
  %2470 = getelementptr inbounds %class.anon.246, ptr %202, i32 0, i32 0
  %2471 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2471, ptr %2470, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_27vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %201, ptr noundef nonnull align 8 dereferenceable(8) %202) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %201)
          to label %2472 unwind label %2473

2472:                                             ; preds = %2469
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #8
  br label %2477

2473:                                             ; preds = %2469
  %2474 = landingpad { ptr, i32 }
          cleanup
  %2475 = extractvalue { ptr, i32 } %2474, 0
  store ptr %2475, ptr %14, align 8
  %2476 = extractvalue { ptr, i32 } %2474, 1
  store i32 %2476, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #8
  br label %2481

2477:                                             ; preds = %2472, %2468
  br label %2478

2478:                                             ; preds = %2477
  br label %2479

2479:                                             ; preds = %2478
  br label %2480

2480:                                             ; preds = %2479
  store i8 0, ptr %199, align 1, !tbaa !31
  br label %2453, !llvm.loop !111

2481:                                             ; preds = %2473, %2458
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %199) #8
  br label %2487

2482:                                             ; preds = %2457
  br label %2483

2483:                                             ; preds = %2482
  store i8 0, ptr %199, align 1, !tbaa !31
  br label %2445, !llvm.loop !112

2484:                                             ; preds = %2448
  br label %2485

2485:                                             ; preds = %2484, %2443, %2402, %2361, %2298, %2257, %2216, %2175, %2134, %2088
  br label %2486

2486:                                             ; preds = %2485
  store i8 0, ptr %159, align 1, !tbaa !31
  br label %2081, !llvm.loop !113

2487:                                             ; preds = %2481, %2440, %2399, %2358, %2295, %2254, %2213, %2172, %2131, %2089
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #8
  br label %2492

2488:                                             ; preds = %2084
  br label %2489

2489:                                             ; preds = %2488
  store i8 0, ptr %159, align 1, !tbaa !31
  br label %2064, !llvm.loop !114

2490:                                             ; preds = %2067
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #8
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %157) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %157) #8
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %156) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %156) #8
  br label %2491

2491:                                             ; preds = %2490
  store i8 0, ptr %154, align 1, !tbaa !31
  br label %2045, !llvm.loop !115

2492:                                             ; preds = %2487, %2076
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #8
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %157) #8
  br label %2493

2493:                                             ; preds = %2492, %2072
  call void @llvm.lifetime.end.p0(i64 24, ptr %157) #8
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %156) #8
  br label %2494

2494:                                             ; preds = %2493, %2068
  call void @llvm.lifetime.end.p0(i64 144, ptr %156) #8
  br label %2495

2495:                                             ; preds = %2494, %2050
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %154) #8
  br label %2501

2496:                                             ; preds = %2049
  br label %2497

2497:                                             ; preds = %2496
  store i8 0, ptr %154, align 1, !tbaa !31
  br label %2037, !llvm.loop !116

2498:                                             ; preds = %2040
  br label %2499

2499:                                             ; preds = %2498, %2035, %1994, %1971, %1948, %1906, %1856, %1820, %1754, %1688, %1617
  br label %2500

2500:                                             ; preds = %2499
  store i8 0, ptr %114, align 1, !tbaa !31
  br label %1610, !llvm.loop !117

2501:                                             ; preds = %2495, %2032, %1986, %1963, %1945, %1903, %1853, %1817, %1751, %1685, %1618
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #8
  br label %2506

2502:                                             ; preds = %1613
  br label %2503

2503:                                             ; preds = %2502
  store i8 0, ptr %114, align 1, !tbaa !31
  br label %1604, !llvm.loop !118

2504:                                             ; preds = %1607
  br label %2505

2505:                                             ; preds = %2504
  store i8 0, ptr %112, align 1, !tbaa !31
  br label %1594, !llvm.loop !119

2506:                                             ; preds = %2501, %1599
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #8
  br label %4162

2507:                                             ; preds = %1598
  br label %2508

2508:                                             ; preds = %2507
  store i8 0, ptr %112, align 1, !tbaa !31
  br label %1586, !llvm.loop !120

2509:                                             ; preds = %1589
  br label %4160

2510:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %203) #8
  store i8 1, ptr %203, align 1, !tbaa !31
  br label %2511

2511:                                             ; preds = %2531, %2510
  %2512 = load i8, ptr %203, align 1, !tbaa !31, !range !65, !noundef !66
  %2513 = trunc i8 %2512 to i1
  br i1 %2513, label %2515, label %2514

2514:                                             ; preds = %2511
  store i32 248, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %203) #8
  br label %2532

2515:                                             ; preds = %2511
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #8
  %2516 = load ptr, ptr %108, align 8, !tbaa !5
  %2517 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %2516)
          to label %2518 unwind label %2524

2518:                                             ; preds = %2515
  store ptr %2517, ptr %204, align 8, !tbaa !5
  br label %2519

2519:                                             ; preds = %2529, %2518
  %2520 = load ptr, ptr %204, align 8, !tbaa !5
  %2521 = load i8, ptr %203, align 1, !tbaa !31, !range !65, !noundef !66
  %2522 = trunc i8 %2521 to i1
  br i1 %2522, label %2528, label %2523

2523:                                             ; preds = %2519
  store i32 251, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #8
  br label %2530

2524:                                             ; preds = %2515
  %2525 = landingpad { ptr, i32 }
          cleanup
  %2526 = extractvalue { ptr, i32 } %2525, 0
  store ptr %2526, ptr %14, align 8
  %2527 = extractvalue { ptr, i32 } %2525, 1
  store i32 %2527, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %203) #8
  br label %4162

2528:                                             ; preds = %2519
  br label %2529

2529:                                             ; preds = %2528
  store i8 0, ptr %203, align 1, !tbaa !31
  br label %2519, !llvm.loop !121

2530:                                             ; preds = %2523
  br label %2531

2531:                                             ; preds = %2530
  store i8 0, ptr %203, align 1, !tbaa !31
  br label %2511, !llvm.loop !122

2532:                                             ; preds = %2514
  br label %4160

2533:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %205) #8
  store i8 1, ptr %205, align 1, !tbaa !31
  br label %2534

2534:                                             ; preds = %2586, %2533
  %2535 = load i8, ptr %205, align 1, !tbaa !31, !range !65, !noundef !66
  %2536 = trunc i8 %2535 to i1
  br i1 %2536, label %2538, label %2537

2537:                                             ; preds = %2534
  store i32 254, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %205) #8
  br label %2587

2538:                                             ; preds = %2534
  call void @llvm.lifetime.start.p0(i64 8, ptr %206) #8
  %2539 = load ptr, ptr %108, align 8, !tbaa !5
  %2540 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %2539)
          to label %2541 unwind label %2547

2541:                                             ; preds = %2538
  store ptr %2540, ptr %206, align 8, !tbaa !5
  br label %2542

2542:                                             ; preds = %2564, %2541
  %2543 = load ptr, ptr %206, align 8, !tbaa !5
  %2544 = load i8, ptr %205, align 1, !tbaa !31, !range !65, !noundef !66
  %2545 = trunc i8 %2544 to i1
  br i1 %2545, label %2551, label %2546

2546:                                             ; preds = %2542
  store i32 257, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #8
  br label %2585

2547:                                             ; preds = %2538
  %2548 = landingpad { ptr, i32 }
          cleanup
  %2549 = extractvalue { ptr, i32 } %2548, 0
  store ptr %2549, ptr %14, align 8
  %2550 = extractvalue { ptr, i32 } %2548, 1
  store i32 %2550, ptr %15, align 4
  br label %2584

2551:                                             ; preds = %2542
  call void @llvm.lifetime.start.p0(i64 8, ptr %207) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %2552 unwind label %2565

2552:                                             ; preds = %2551
  %2553 = load ptr, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %208) #8
  %2554 = load ptr, ptr %206, align 8, !tbaa !5
  %2555 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %2554, i32 0, i32 0
  %2556 = load i32, ptr %2555, align 8, !tbaa !123
  %2557 = load ptr, ptr %206, align 8, !tbaa !5
  %2558 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %2557, i32 0, i32 1
  %2559 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(32) %2558, i32 noundef 0)
          to label %2560 unwind label %2569

2560:                                             ; preds = %2552
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %209, ptr noundef nonnull align 8 dereferenceable(8) %2559)
          to label %2561 unwind label %2569

2561:                                             ; preds = %2560
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %208, i32 noundef %2556, ptr noundef %209)
          to label %2562 unwind label %2573

2562:                                             ; preds = %2561
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %2553, ptr noundef nonnull align 8 dereferenceable(8) %208)
          to label %2563 unwind label %2577

2563:                                             ; preds = %2562
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %209) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #8
  br label %2564

2564:                                             ; preds = %2563
  store i8 0, ptr %205, align 1, !tbaa !31
  br label %2542, !llvm.loop !126

2565:                                             ; preds = %2551
  %2566 = landingpad { ptr, i32 }
          cleanup
  %2567 = extractvalue { ptr, i32 } %2566, 0
  store ptr %2567, ptr %14, align 8
  %2568 = extractvalue { ptr, i32 } %2566, 1
  store i32 %2568, ptr %15, align 4
  br label %2583

2569:                                             ; preds = %2560, %2552
  %2570 = landingpad { ptr, i32 }
          cleanup
  %2571 = extractvalue { ptr, i32 } %2570, 0
  store ptr %2571, ptr %14, align 8
  %2572 = extractvalue { ptr, i32 } %2570, 1
  store i32 %2572, ptr %15, align 4
  br label %2582

2573:                                             ; preds = %2561
  %2574 = landingpad { ptr, i32 }
          cleanup
  %2575 = extractvalue { ptr, i32 } %2574, 0
  store ptr %2575, ptr %14, align 8
  %2576 = extractvalue { ptr, i32 } %2574, 1
  store i32 %2576, ptr %15, align 4
  br label %2581

2577:                                             ; preds = %2562
  %2578 = landingpad { ptr, i32 }
          cleanup
  %2579 = extractvalue { ptr, i32 } %2578, 0
  store ptr %2579, ptr %14, align 8
  %2580 = extractvalue { ptr, i32 } %2578, 1
  store i32 %2580, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #8
  br label %2581

2581:                                             ; preds = %2577, %2573
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %209) #8
  br label %2582

2582:                                             ; preds = %2581, %2569
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #8
  br label %2583

2583:                                             ; preds = %2582, %2565
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #8
  br label %2584

2584:                                             ; preds = %2583, %2547
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %205) #8
  br label %4162

2585:                                             ; preds = %2546
  br label %2586

2586:                                             ; preds = %2585
  store i8 0, ptr %205, align 1, !tbaa !31
  br label %2534, !llvm.loop !127

2587:                                             ; preds = %2537
  br label %4160

2588:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %210) #8
  store i8 1, ptr %210, align 1, !tbaa !31
  br label %2589

2589:                                             ; preds = %3369, %2588
  %2590 = load i8, ptr %210, align 1, !tbaa !31, !range !65, !noundef !66
  %2591 = trunc i8 %2590 to i1
  br i1 %2591, label %2593, label %2592

2592:                                             ; preds = %2589
  store i32 260, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %210) #8
  br label %3370

2593:                                             ; preds = %2589
  call void @llvm.lifetime.start.p0(i64 8, ptr %211) #8
  %2594 = load ptr, ptr %108, align 8, !tbaa !5
  %2595 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %2594)
          to label %2596 unwind label %2602

2596:                                             ; preds = %2593
  store ptr %2595, ptr %211, align 8, !tbaa !5
  br label %2597

2597:                                             ; preds = %3364, %2596
  %2598 = load ptr, ptr %211, align 8, !tbaa !5
  %2599 = load i8, ptr %210, align 1, !tbaa !31, !range !65, !noundef !66
  %2600 = trunc i8 %2599 to i1
  br i1 %2600, label %2606, label %2601

2601:                                             ; preds = %2597
  store i32 263, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #8
  br label %3368

2602:                                             ; preds = %2606, %2593
  %2603 = landingpad { ptr, i32 }
          cleanup
  %2604 = extractvalue { ptr, i32 } %2603, 0
  store ptr %2604, ptr %14, align 8
  %2605 = extractvalue { ptr, i32 } %2603, 1
  store i32 %2605, ptr %15, align 4
  br label %3367

2606:                                             ; preds = %2597
  %2607 = load ptr, ptr %105, align 8, !tbaa !5
  %2608 = load ptr, ptr %211, align 8, !tbaa !5
  %2609 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %2608, i32 0, i32 1
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %2607, ptr noundef nonnull align 8 dereferenceable(8) %2609)
          to label %2610 unwind label %2602

2610:                                             ; preds = %2606
  call void @llvm.lifetime.start.p0(i64 8, ptr %212) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212)
          to label %2611 unwind label %2620

2611:                                             ; preds = %2610
  call void @llvm.lifetime.start.p0(i64 8, ptr %213) #8
  %2612 = load ptr, ptr %211, align 8, !tbaa !5
  %2613 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %2612, i32 0, i32 0
  %2614 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull align 8 dereferenceable(32) %2613, i32 noundef 0)
          to label %2615 unwind label %2624

2615:                                             ; preds = %2611
  store ptr %2614, ptr %213, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %214) #8
  store i8 1, ptr %214, align 1, !tbaa !31
  br label %2616

2616:                                             ; preds = %3362, %2615
  %2617 = load i8, ptr %214, align 1, !tbaa !31, !range !65, !noundef !66
  %2618 = trunc i8 %2617 to i1
  br i1 %2618, label %2628, label %2619

2619:                                             ; preds = %2616
  store i32 266, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %214) #8
  br label %3363

2620:                                             ; preds = %2610
  %2621 = landingpad { ptr, i32 }
          cleanup
  %2622 = extractvalue { ptr, i32 } %2621, 0
  store ptr %2622, ptr %14, align 8
  %2623 = extractvalue { ptr, i32 } %2621, 1
  store i32 %2623, ptr %15, align 4
  br label %3366

2624:                                             ; preds = %2611
  %2625 = landingpad { ptr, i32 }
          cleanup
  %2626 = extractvalue { ptr, i32 } %2625, 0
  store ptr %2626, ptr %14, align 8
  %2627 = extractvalue { ptr, i32 } %2625, 1
  store i32 %2627, ptr %15, align 4
  br label %3365

2628:                                             ; preds = %2616
  call void @llvm.lifetime.start.p0(i64 8, ptr %215) #8
  %2629 = load ptr, ptr %213, align 8, !tbaa !5
  %2630 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2629)
          to label %2631 unwind label %2636

2631:                                             ; preds = %2628
  store ptr %2630, ptr %215, align 8, !tbaa !5
  br label %2632

2632:                                             ; preds = %3359, %2631
  %2633 = load i8, ptr %214, align 1, !tbaa !31, !range !65, !noundef !66
  %2634 = trunc i8 %2633 to i1
  br i1 %2634, label %2640, label %2635

2635:                                             ; preds = %2632
  store i32 269, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #8
  br label %3361

2636:                                             ; preds = %2640, %2628
  %2637 = landingpad { ptr, i32 }
          cleanup
  %2638 = extractvalue { ptr, i32 } %2637, 0
  store ptr %2638, ptr %14, align 8
  %2639 = extractvalue { ptr, i32 } %2637, 1
  store i32 %2639, ptr %15, align 4
  br label %3360

2640:                                             ; preds = %2632
  %2641 = load ptr, ptr %215, align 8, !tbaa !5
  %2642 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %2641)
          to label %2643 unwind label %2636

2643:                                             ; preds = %2640
  switch i32 %2642, label %2645 [
    i32 0, label %2644
    i32 4, label %2671
    i32 14, label %2753
    i32 13, label %2776
    i32 3, label %2799
    i32 11, label %3034
    i32 12, label %3126
  ]

2644:                                             ; preds = %2643
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 900, ptr noundef @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

2645:                                             ; preds = %2643
  br label %2646

2646:                                             ; preds = %2645
  call void @llvm.lifetime.start.p0(i64 8, ptr %216) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %216, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %218) #8
  %2647 = getelementptr inbounds %class.anon.247, ptr %218, i32 0, i32 0
  store ptr %216, ptr %2647, align 8, !tbaa !5
  %2648 = getelementptr inbounds %class.anon.247, ptr %218, i32 0, i32 1
  %2649 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2649, ptr %2648, align 8, !tbaa !5
  %2650 = getelementptr inbounds %class.anon.247, ptr %218, i32 0, i32 2
  %2651 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %2651, ptr %2650, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %217, ptr noundef nonnull align 8 dereferenceable(24) %218)
          to label %2652 unwind label %2655

2652:                                             ; preds = %2646
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %217)
          to label %2653 unwind label %2659

2653:                                             ; preds = %2652
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %218) #8
  %2654 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %2654, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2654, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %2664

2655:                                             ; preds = %2646
  %2656 = landingpad { ptr, i32 }
          cleanup
  %2657 = extractvalue { ptr, i32 } %2656, 0
  store ptr %2657, ptr %14, align 8
  %2658 = extractvalue { ptr, i32 } %2656, 1
  store i32 %2658, ptr %15, align 4
  br label %2663

2659:                                             ; preds = %2652
  %2660 = landingpad { ptr, i32 }
          cleanup
  %2661 = extractvalue { ptr, i32 } %2660, 0
  store ptr %2661, ptr %14, align 8
  %2662 = extractvalue { ptr, i32 } %2660, 1
  store i32 %2662, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #8
  br label %2663

2663:                                             ; preds = %2659, %2655
  call void @llvm.lifetime.end.p0(i64 24, ptr %218) #8
  br label %2668

2664:                                             ; preds = %2653
  %2665 = landingpad { ptr, i32 }
          cleanup
  %2666 = extractvalue { ptr, i32 } %2665, 0
  store ptr %2666, ptr %14, align 8
  %2667 = extractvalue { ptr, i32 } %2665, 1
  store i32 %2667, ptr %15, align 4
  br label %2668

2668:                                             ; preds = %2664, %2663
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #8
  br label %3360

2669:                                             ; No predecessors!
  br label %2670

2670:                                             ; preds = %2669
  br label %3358

2671:                                             ; preds = %2643
  call void @llvm.lifetime.start.p0(i64 1, ptr %219) #8
  store i8 1, ptr %219, align 1, !tbaa !31
  br label %2672

2672:                                             ; preds = %2751, %2671
  %2673 = load i8, ptr %219, align 1, !tbaa !31, !range !65, !noundef !66
  %2674 = trunc i8 %2673 to i1
  br i1 %2674, label %2676, label %2675

2675:                                             ; preds = %2672
  store i32 275, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %219) #8
  br label %2752

2676:                                             ; preds = %2672
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #8
  %2677 = load ptr, ptr %215, align 8, !tbaa !5
  %2678 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2677)
          to label %2679 unwind label %2685

2679:                                             ; preds = %2676
  store ptr %2678, ptr %220, align 8, !tbaa !5
  br label %2680

2680:                                             ; preds = %2748, %2679
  %2681 = load ptr, ptr %220, align 8, !tbaa !5
  %2682 = load i8, ptr %219, align 1, !tbaa !31, !range !65, !noundef !66
  %2683 = trunc i8 %2682 to i1
  br i1 %2683, label %2689, label %2684

2684:                                             ; preds = %2680
  store i32 278, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #8
  br label %2750

2685:                                             ; preds = %2732, %2729, %2712, %2708, %2690, %2676
  %2686 = landingpad { ptr, i32 }
          cleanup
  %2687 = extractvalue { ptr, i32 } %2686, 0
  store ptr %2687, ptr %14, align 8
  %2688 = extractvalue { ptr, i32 } %2686, 1
  store i32 %2688, ptr %15, align 4
  br label %2749

2689:                                             ; preds = %2680
  br label %2690

2690:                                             ; preds = %2689
  %2691 = load ptr, ptr %220, align 8, !tbaa !5
  %2692 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2691, i32 0, i32 1
  %2693 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %2692)
          to label %2694 unwind label %2685

2694:                                             ; preds = %2690
  br i1 %2693, label %2705, label %2695

2695:                                             ; preds = %2694
  call void @llvm.lifetime.start.p0(i64 16, ptr %222) #8
  %2696 = getelementptr inbounds %class.anon.248, ptr %222, i32 0, i32 0
  %2697 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2697, ptr %2696, align 8, !tbaa !5
  %2698 = getelementptr inbounds %class.anon.248, ptr %222, i32 0, i32 1
  %2699 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %2699, ptr %2698, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %221, ptr noundef nonnull align 8 dereferenceable(16) %222) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %221)
          to label %2700 unwind label %2701

2700:                                             ; preds = %2695
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #8
  br label %2705

2701:                                             ; preds = %2695
  %2702 = landingpad { ptr, i32 }
          cleanup
  %2703 = extractvalue { ptr, i32 } %2702, 0
  store ptr %2703, ptr %14, align 8
  %2704 = extractvalue { ptr, i32 } %2702, 1
  store i32 %2704, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #8
  br label %2749

2705:                                             ; preds = %2700, %2694
  br label %2706

2706:                                             ; preds = %2705
  br label %2707

2707:                                             ; preds = %2706
  br label %2708

2708:                                             ; preds = %2707
  %2709 = load ptr, ptr %220, align 8, !tbaa !5
  %2710 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2709, i32 0, i32 1
  %2711 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %2710)
          to label %2712 unwind label %2685

2712:                                             ; preds = %2708
  %2713 = load ptr, ptr %2711, align 8, !tbaa !5
  %2714 = invoke noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200) %2713)
          to label %2715 unwind label %2685

2715:                                             ; preds = %2712
  br i1 %2714, label %2726, label %2716

2716:                                             ; preds = %2715
  call void @llvm.lifetime.start.p0(i64 16, ptr %224) #8
  %2717 = getelementptr inbounds %class.anon.265, ptr %224, i32 0, i32 0
  %2718 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2718, ptr %2717, align 8, !tbaa !5
  %2719 = getelementptr inbounds %class.anon.265, ptr %224, i32 0, i32 1
  %2720 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %2720, ptr %2719, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_30vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %223, ptr noundef nonnull align 8 dereferenceable(16) %224) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %223)
          to label %2721 unwind label %2722

2721:                                             ; preds = %2716
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %224) #8
  br label %2726

2722:                                             ; preds = %2716
  %2723 = landingpad { ptr, i32 }
          cleanup
  %2724 = extractvalue { ptr, i32 } %2723, 0
  store ptr %2724, ptr %14, align 8
  %2725 = extractvalue { ptr, i32 } %2723, 1
  store i32 %2725, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %224) #8
  br label %2749

2726:                                             ; preds = %2721, %2715
  br label %2727

2727:                                             ; preds = %2726
  br label %2728

2728:                                             ; preds = %2727
  br label %2729

2729:                                             ; preds = %2728
  %2730 = load ptr, ptr %105, align 8, !tbaa !5
  %2731 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2730)
          to label %2732 unwind label %2685

2732:                                             ; preds = %2729
  %2733 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2731)
          to label %2734 unwind label %2685

2734:                                             ; preds = %2732
  br i1 %2733, label %2745, label %2735

2735:                                             ; preds = %2734
  call void @llvm.lifetime.start.p0(i64 16, ptr %226) #8
  %2736 = getelementptr inbounds %class.anon.266, ptr %226, i32 0, i32 0
  %2737 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2737, ptr %2736, align 8, !tbaa !5
  %2738 = getelementptr inbounds %class.anon.266, ptr %226, i32 0, i32 1
  %2739 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %2739, ptr %2738, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %225, ptr noundef nonnull align 8 dereferenceable(16) %226) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %225)
          to label %2740 unwind label %2741

2740:                                             ; preds = %2735
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %225) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %226) #8
  br label %2745

2741:                                             ; preds = %2735
  %2742 = landingpad { ptr, i32 }
          cleanup
  %2743 = extractvalue { ptr, i32 } %2742, 0
  store ptr %2743, ptr %14, align 8
  %2744 = extractvalue { ptr, i32 } %2742, 1
  store i32 %2744, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %225) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %226) #8
  br label %2749

2745:                                             ; preds = %2740, %2734
  br label %2746

2746:                                             ; preds = %2745
  br label %2747

2747:                                             ; preds = %2746
  br label %2748

2748:                                             ; preds = %2747
  store i8 0, ptr %219, align 1, !tbaa !31
  br label %2680, !llvm.loop !128

2749:                                             ; preds = %2741, %2722, %2701, %2685
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %219) #8
  br label %3360

2750:                                             ; preds = %2684
  br label %2751

2751:                                             ; preds = %2750
  store i8 0, ptr %219, align 1, !tbaa !31
  br label %2672, !llvm.loop !129

2752:                                             ; preds = %2675
  br label %3358

2753:                                             ; preds = %2643
  call void @llvm.lifetime.start.p0(i64 1, ptr %227) #8
  store i8 1, ptr %227, align 1, !tbaa !31
  br label %2754

2754:                                             ; preds = %2774, %2753
  %2755 = load i8, ptr %227, align 1, !tbaa !31, !range !65, !noundef !66
  %2756 = trunc i8 %2755 to i1
  br i1 %2756, label %2758, label %2757

2757:                                             ; preds = %2754
  store i32 287, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %227) #8
  br label %2775

2758:                                             ; preds = %2754
  call void @llvm.lifetime.start.p0(i64 8, ptr %228) #8
  %2759 = load ptr, ptr %215, align 8, !tbaa !5
  %2760 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2759)
          to label %2761 unwind label %2767

2761:                                             ; preds = %2758
  store ptr %2760, ptr %228, align 8, !tbaa !5
  br label %2762

2762:                                             ; preds = %2772, %2761
  %2763 = load ptr, ptr %228, align 8, !tbaa !5
  %2764 = load i8, ptr %227, align 1, !tbaa !31, !range !65, !noundef !66
  %2765 = trunc i8 %2764 to i1
  br i1 %2765, label %2771, label %2766

2766:                                             ; preds = %2762
  store i32 290, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #8
  br label %2773

2767:                                             ; preds = %2758
  %2768 = landingpad { ptr, i32 }
          cleanup
  %2769 = extractvalue { ptr, i32 } %2768, 0
  store ptr %2769, ptr %14, align 8
  %2770 = extractvalue { ptr, i32 } %2768, 1
  store i32 %2770, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %227) #8
  br label %3360

2771:                                             ; preds = %2762
  br label %2772

2772:                                             ; preds = %2771
  store i8 0, ptr %227, align 1, !tbaa !31
  br label %2762, !llvm.loop !130

2773:                                             ; preds = %2766
  br label %2774

2774:                                             ; preds = %2773
  store i8 0, ptr %227, align 1, !tbaa !31
  br label %2754, !llvm.loop !131

2775:                                             ; preds = %2757
  br label %3358

2776:                                             ; preds = %2643
  call void @llvm.lifetime.start.p0(i64 1, ptr %229) #8
  store i8 1, ptr %229, align 1, !tbaa !31
  br label %2777

2777:                                             ; preds = %2797, %2776
  %2778 = load i8, ptr %229, align 1, !tbaa !31, !range !65, !noundef !66
  %2779 = trunc i8 %2778 to i1
  br i1 %2779, label %2781, label %2780

2780:                                             ; preds = %2777
  store i32 293, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #8
  br label %2798

2781:                                             ; preds = %2777
  call void @llvm.lifetime.start.p0(i64 8, ptr %230) #8
  %2782 = load ptr, ptr %215, align 8, !tbaa !5
  %2783 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2782)
          to label %2784 unwind label %2790

2784:                                             ; preds = %2781
  store ptr %2783, ptr %230, align 8, !tbaa !5
  br label %2785

2785:                                             ; preds = %2795, %2784
  %2786 = load ptr, ptr %230, align 8, !tbaa !5
  %2787 = load i8, ptr %229, align 1, !tbaa !31, !range !65, !noundef !66
  %2788 = trunc i8 %2787 to i1
  br i1 %2788, label %2794, label %2789

2789:                                             ; preds = %2785
  store i32 296, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #8
  br label %2796

2790:                                             ; preds = %2781
  %2791 = landingpad { ptr, i32 }
          cleanup
  %2792 = extractvalue { ptr, i32 } %2791, 0
  store ptr %2792, ptr %14, align 8
  %2793 = extractvalue { ptr, i32 } %2791, 1
  store i32 %2793, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #8
  br label %3360

2794:                                             ; preds = %2785
  br label %2795

2795:                                             ; preds = %2794
  store i8 0, ptr %229, align 1, !tbaa !31
  br label %2785, !llvm.loop !132

2796:                                             ; preds = %2789
  br label %2797

2797:                                             ; preds = %2796
  store i8 0, ptr %229, align 1, !tbaa !31
  br label %2777, !llvm.loop !133

2798:                                             ; preds = %2780
  br label %3358

2799:                                             ; preds = %2643
  call void @llvm.lifetime.start.p0(i64 1, ptr %231) #8
  store i8 1, ptr %231, align 1, !tbaa !31
  br label %2800

2800:                                             ; preds = %3032, %2799
  %2801 = load i8, ptr %231, align 1, !tbaa !31, !range !65, !noundef !66
  %2802 = trunc i8 %2801 to i1
  br i1 %2802, label %2804, label %2803

2803:                                             ; preds = %2800
  store i32 299, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %231) #8
  br label %3033

2804:                                             ; preds = %2800
  call void @llvm.lifetime.start.p0(i64 8, ptr %232) #8
  %2805 = load ptr, ptr %215, align 8, !tbaa !5
  %2806 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2805)
          to label %2807 unwind label %2813

2807:                                             ; preds = %2804
  store ptr %2806, ptr %232, align 8, !tbaa !5
  br label %2808

2808:                                             ; preds = %3029, %2807
  %2809 = load ptr, ptr %232, align 8, !tbaa !5
  %2810 = load i8, ptr %231, align 1, !tbaa !31, !range !65, !noundef !66
  %2811 = trunc i8 %2810 to i1
  br i1 %2811, label %2817, label %2812

2812:                                             ; preds = %2808
  store i32 302, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #8
  br label %3031

2813:                                             ; preds = %2804
  %2814 = landingpad { ptr, i32 }
          cleanup
  %2815 = extractvalue { ptr, i32 } %2814, 0
  store ptr %2815, ptr %14, align 8
  %2816 = extractvalue { ptr, i32 } %2814, 1
  store i32 %2816, ptr %15, align 4
  br label %3030

2817:                                             ; preds = %2808
  br label %2818

2818:                                             ; preds = %2817
  %2819 = load ptr, ptr %232, align 8, !tbaa !5
  %2820 = load i32, ptr %2819, align 4, !tbaa !69
  %2821 = icmp ne i32 %2820, 16
  br i1 %2821, label %2828, label %2822

2822:                                             ; preds = %2818
  call void @llvm.lifetime.start.p0(i64 1, ptr %234) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_32vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %233, ptr noundef nonnull align 1 dereferenceable(1) %234) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %233)
          to label %2823 unwind label %2824

2823:                                             ; preds = %2822
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %234) #8
  br label %2828

2824:                                             ; preds = %2822
  %2825 = landingpad { ptr, i32 }
          cleanup
  %2826 = extractvalue { ptr, i32 } %2825, 0
  store ptr %2826, ptr %14, align 8
  %2827 = extractvalue { ptr, i32 } %2825, 1
  store i32 %2827, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %234) #8
  br label %3030

2828:                                             ; preds = %2823, %2818
  br label %2829

2829:                                             ; preds = %2828
  br label %2830

2830:                                             ; preds = %2829
  call void @llvm.lifetime.start.p0(i64 1, ptr %235) #8
  store i8 1, ptr %235, align 1, !tbaa !31
  br label %2831

2831:                                             ; preds = %3027, %2830
  %2832 = load i8, ptr %235, align 1, !tbaa !31, !range !65, !noundef !66
  %2833 = trunc i8 %2832 to i1
  br i1 %2833, label %2835, label %2834

2834:                                             ; preds = %2831
  store i32 307, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %235) #8
  br label %3028

2835:                                             ; preds = %2831
  call void @llvm.lifetime.start.p0(i64 8, ptr %236) #8
  %2836 = load ptr, ptr %105, align 8, !tbaa !5
  %2837 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2836)
          to label %2838 unwind label %2843

2838:                                             ; preds = %2835
  store ptr %2837, ptr %236, align 8, !tbaa !5
  br label %2839

2839:                                             ; preds = %3024, %2838
  %2840 = load i8, ptr %235, align 1, !tbaa !31, !range !65, !noundef !66
  %2841 = trunc i8 %2840 to i1
  br i1 %2841, label %2847, label %2842

2842:                                             ; preds = %2839
  store i32 310, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #8
  br label %3026

2843:                                             ; preds = %2847, %2835
  %2844 = landingpad { ptr, i32 }
          cleanup
  %2845 = extractvalue { ptr, i32 } %2844, 0
  store ptr %2845, ptr %14, align 8
  %2846 = extractvalue { ptr, i32 } %2844, 1
  store i32 %2846, ptr %15, align 4
  br label %3025

2847:                                             ; preds = %2839
  %2848 = load ptr, ptr %236, align 8, !tbaa !5
  %2849 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %2848)
          to label %2850 unwind label %2843

2850:                                             ; preds = %2847
  switch i32 %2849, label %2852 [
    i32 0, label %2851
    i32 12, label %2878
    i32 3, label %2964
  ]

2851:                                             ; preds = %2850
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 924, ptr noundef @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

2852:                                             ; preds = %2850
  br label %2853

2853:                                             ; preds = %2852
  call void @llvm.lifetime.start.p0(i64 8, ptr %237) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %237, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %239) #8
  %2854 = getelementptr inbounds %class.anon.269, ptr %239, i32 0, i32 0
  store ptr %237, ptr %2854, align 8, !tbaa !5
  %2855 = getelementptr inbounds %class.anon.269, ptr %239, i32 0, i32 1
  %2856 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2856, ptr %2855, align 8, !tbaa !5
  %2857 = getelementptr inbounds %class.anon.269, ptr %239, i32 0, i32 2
  %2858 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %2858, ptr %2857, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %238, ptr noundef nonnull align 8 dereferenceable(24) %239)
          to label %2859 unwind label %2862

2859:                                             ; preds = %2853
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %238)
          to label %2860 unwind label %2866

2860:                                             ; preds = %2859
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %239) #8
  %2861 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %2861, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2861, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %2871

2862:                                             ; preds = %2853
  %2863 = landingpad { ptr, i32 }
          cleanup
  %2864 = extractvalue { ptr, i32 } %2863, 0
  store ptr %2864, ptr %14, align 8
  %2865 = extractvalue { ptr, i32 } %2863, 1
  store i32 %2865, ptr %15, align 4
  br label %2870

2866:                                             ; preds = %2859
  %2867 = landingpad { ptr, i32 }
          cleanup
  %2868 = extractvalue { ptr, i32 } %2867, 0
  store ptr %2868, ptr %14, align 8
  %2869 = extractvalue { ptr, i32 } %2867, 1
  store i32 %2869, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #8
  br label %2870

2870:                                             ; preds = %2866, %2862
  call void @llvm.lifetime.end.p0(i64 24, ptr %239) #8
  br label %2875

2871:                                             ; preds = %2860
  %2872 = landingpad { ptr, i32 }
          cleanup
  %2873 = extractvalue { ptr, i32 } %2872, 0
  store ptr %2873, ptr %14, align 8
  %2874 = extractvalue { ptr, i32 } %2872, 1
  store i32 %2874, ptr %15, align 4
  br label %2875

2875:                                             ; preds = %2871, %2870
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #8
  br label %3025

2876:                                             ; No predecessors!
  br label %2877

2877:                                             ; preds = %2876
  br label %3023

2878:                                             ; preds = %2850
  call void @llvm.lifetime.start.p0(i64 1, ptr %240) #8
  store i8 1, ptr %240, align 1, !tbaa !31
  br label %2879

2879:                                             ; preds = %2962, %2878
  %2880 = load i8, ptr %240, align 1, !tbaa !31, !range !65, !noundef !66
  %2881 = trunc i8 %2880 to i1
  br i1 %2881, label %2883, label %2882

2882:                                             ; preds = %2879
  store i32 316, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #8
  br label %2963

2883:                                             ; preds = %2879
  call void @llvm.lifetime.start.p0(i64 8, ptr %241) #8
  %2884 = load ptr, ptr %236, align 8, !tbaa !5
  %2885 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %2884)
          to label %2886 unwind label %2892

2886:                                             ; preds = %2883
  store ptr %2885, ptr %241, align 8, !tbaa !5
  br label %2887

2887:                                             ; preds = %2958, %2886
  %2888 = load ptr, ptr %241, align 8, !tbaa !5
  %2889 = load i8, ptr %240, align 1, !tbaa !31, !range !65, !noundef !66
  %2890 = trunc i8 %2889 to i1
  br i1 %2890, label %2896, label %2891

2891:                                             ; preds = %2887
  store i32 319, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #8
  br label %2961

2892:                                             ; preds = %2883
  %2893 = landingpad { ptr, i32 }
          cleanup
  %2894 = extractvalue { ptr, i32 } %2893, 0
  store ptr %2894, ptr %14, align 8
  %2895 = extractvalue { ptr, i32 } %2893, 1
  store i32 %2895, ptr %15, align 4
  br label %2960

2896:                                             ; preds = %2887
  %2897 = load ptr, ptr %232, align 8, !tbaa !5
  %2898 = load i32, ptr %2897, align 4, !tbaa !69
  switch i32 %2898, label %2925 [
    i32 16, label %2899
    i32 15, label %2899
    i32 12, label %2899
    i32 13, label %2899
  ]

2899:                                             ; preds = %2896, %2896, %2896, %2896
  br label %2900

2900:                                             ; preds = %2899
  call void @llvm.lifetime.start.p0(i64 8, ptr %242) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %242, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %244) #8
  %2901 = getelementptr inbounds %class.anon.270, ptr %244, i32 0, i32 0
  store ptr %242, ptr %2901, align 8, !tbaa !5
  %2902 = getelementptr inbounds %class.anon.270, ptr %244, i32 0, i32 1
  %2903 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2903, ptr %2902, align 8, !tbaa !5
  %2904 = getelementptr inbounds %class.anon.270, ptr %244, i32 0, i32 2
  %2905 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %2905, ptr %2904, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_34vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %243, ptr noundef nonnull align 8 dereferenceable(24) %244)
          to label %2906 unwind label %2909

2906:                                             ; preds = %2900
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %243)
          to label %2907 unwind label %2913

2907:                                             ; preds = %2906
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %243) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %244) #8
  %2908 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %2908, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %2908, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %2918

2909:                                             ; preds = %2900
  %2910 = landingpad { ptr, i32 }
          cleanup
  %2911 = extractvalue { ptr, i32 } %2910, 0
  store ptr %2911, ptr %14, align 8
  %2912 = extractvalue { ptr, i32 } %2910, 1
  store i32 %2912, ptr %15, align 4
  br label %2917

2913:                                             ; preds = %2906
  %2914 = landingpad { ptr, i32 }
          cleanup
  %2915 = extractvalue { ptr, i32 } %2914, 0
  store ptr %2915, ptr %14, align 8
  %2916 = extractvalue { ptr, i32 } %2914, 1
  store i32 %2916, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %243) #8
  br label %2917

2917:                                             ; preds = %2913, %2909
  call void @llvm.lifetime.end.p0(i64 24, ptr %244) #8
  br label %2922

2918:                                             ; preds = %2907
  %2919 = landingpad { ptr, i32 }
          cleanup
  %2920 = extractvalue { ptr, i32 } %2919, 0
  store ptr %2920, ptr %14, align 8
  %2921 = extractvalue { ptr, i32 } %2919, 1
  store i32 %2921, ptr %15, align 4
  br label %2922

2922:                                             ; preds = %2918, %2917
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #8
  br label %2960

2923:                                             ; No predecessors!
  br label %2924

2924:                                             ; preds = %2923
  br label %2926

2925:                                             ; preds = %2896
  br label %2926

2926:                                             ; preds = %2925, %2924
  call void @llvm.lifetime.start.p0(i64 4, ptr %245) #8
  %2927 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 2
  %2928 = load ptr, ptr %2927, align 8, !tbaa !89
  %2929 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 1
  %2930 = load ptr, ptr %2929, align 8, !tbaa !94
  %2931 = load ptr, ptr %241, align 8, !tbaa !5
  %2932 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %2931, i32 0, i32 1
  %2933 = invoke noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %2928, ptr noundef nonnull align 8 dereferenceable(8) %2930, ptr noundef nonnull align 8 dereferenceable(8) %2932, i1 noundef zeroext false)
          to label %2934 unwind label %2947

2934:                                             ; preds = %2926
  store i32 %2933, ptr %245, align 4, !tbaa !134
  br label %2935

2935:                                             ; preds = %2934
  %2936 = load i32, ptr %245, align 4, !tbaa !134
  %2937 = icmp eq i32 %2936, 1
  br i1 %2937, label %2955, label %2938

2938:                                             ; preds = %2935
  %2939 = load i32, ptr %245, align 4, !tbaa !134
  %2940 = icmp eq i32 %2939, 2
  br i1 %2940, label %2955, label %2941

2941:                                             ; preds = %2938
  call void @llvm.lifetime.start.p0(i64 16, ptr %247) #8
  %2942 = getelementptr inbounds %class.anon.271, ptr %247, i32 0, i32 0
  %2943 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %2943, ptr %2942, align 8, !tbaa !5
  %2944 = getelementptr inbounds %class.anon.271, ptr %247, i32 0, i32 1
  %2945 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %2945, ptr %2944, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_35vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %246, ptr noundef nonnull align 8 dereferenceable(16) %247) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %246)
          to label %2946 unwind label %2951

2946:                                             ; preds = %2941
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %246) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %247) #8
  br label %2955

2947:                                             ; preds = %2926
  %2948 = landingpad { ptr, i32 }
          cleanup
  %2949 = extractvalue { ptr, i32 } %2948, 0
  store ptr %2949, ptr %14, align 8
  %2950 = extractvalue { ptr, i32 } %2948, 1
  store i32 %2950, ptr %15, align 4
  br label %2959

2951:                                             ; preds = %2941
  %2952 = landingpad { ptr, i32 }
          cleanup
  %2953 = extractvalue { ptr, i32 } %2952, 0
  store ptr %2953, ptr %14, align 8
  %2954 = extractvalue { ptr, i32 } %2952, 1
  store i32 %2954, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %246) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %247) #8
  br label %2959

2955:                                             ; preds = %2946, %2938, %2935
  br label %2956

2956:                                             ; preds = %2955
  br label %2957

2957:                                             ; preds = %2956
  call void @llvm.lifetime.end.p0(i64 4, ptr %245) #8
  br label %2958

2958:                                             ; preds = %2957
  store i8 0, ptr %240, align 1, !tbaa !31
  br label %2887, !llvm.loop !136

2959:                                             ; preds = %2951, %2947
  call void @llvm.lifetime.end.p0(i64 4, ptr %245) #8
  br label %2960

2960:                                             ; preds = %2959, %2922, %2892
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #8
  br label %3025

2961:                                             ; preds = %2891
  br label %2962

2962:                                             ; preds = %2961
  store i8 0, ptr %240, align 1, !tbaa !31
  br label %2879, !llvm.loop !137

2963:                                             ; preds = %2882
  br label %3023

2964:                                             ; preds = %2850
  call void @llvm.lifetime.start.p0(i64 1, ptr %248) #8
  store i8 1, ptr %248, align 1, !tbaa !31
  br label %2965

2965:                                             ; preds = %3021, %2964
  %2966 = load i8, ptr %248, align 1, !tbaa !31, !range !65, !noundef !66
  %2967 = trunc i8 %2966 to i1
  br i1 %2967, label %2969, label %2968

2968:                                             ; preds = %2965
  store i32 327, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #8
  br label %3022

2969:                                             ; preds = %2965
  call void @llvm.lifetime.start.p0(i64 8, ptr %249) #8
  %2970 = load ptr, ptr %236, align 8, !tbaa !5
  %2971 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %2970)
          to label %2972 unwind label %2978

2972:                                             ; preds = %2969
  store ptr %2971, ptr %249, align 8, !tbaa !5
  br label %2973

2973:                                             ; preds = %3018, %2972
  %2974 = load ptr, ptr %249, align 8, !tbaa !5
  %2975 = load i8, ptr %248, align 1, !tbaa !31, !range !65, !noundef !66
  %2976 = trunc i8 %2975 to i1
  br i1 %2976, label %2982, label %2977

2977:                                             ; preds = %2973
  store i32 330, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #8
  br label %3020

2978:                                             ; preds = %2969
  %2979 = landingpad { ptr, i32 }
          cleanup
  %2980 = extractvalue { ptr, i32 } %2979, 0
  store ptr %2980, ptr %14, align 8
  %2981 = extractvalue { ptr, i32 } %2979, 1
  store i32 %2981, ptr %15, align 4
  br label %3019

2982:                                             ; preds = %2973
  br label %2983

2983:                                             ; preds = %2982
  %2984 = load ptr, ptr %249, align 8, !tbaa !5
  %2985 = load i32, ptr %2984, align 4, !tbaa !69
  %2986 = icmp ne i32 %2985, 16
  br i1 %2986, label %2993, label %2987

2987:                                             ; preds = %2983
  call void @llvm.lifetime.start.p0(i64 1, ptr %251) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_36vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %250, ptr noundef nonnull align 1 dereferenceable(1) %251) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %250)
          to label %2988 unwind label %2989

2988:                                             ; preds = %2987
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %251) #8
  br label %2993

2989:                                             ; preds = %2987
  %2990 = landingpad { ptr, i32 }
          cleanup
  %2991 = extractvalue { ptr, i32 } %2990, 0
  store ptr %2991, ptr %14, align 8
  %2992 = extractvalue { ptr, i32 } %2990, 1
  store i32 %2992, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %250) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %251) #8
  br label %3019

2993:                                             ; preds = %2988, %2983
  br label %2994

2994:                                             ; preds = %2993
  br label %2995

2995:                                             ; preds = %2994
  %2996 = load ptr, ptr %249, align 8, !tbaa !5
  %2997 = load i32, ptr %2996, align 4, !tbaa !69
  %2998 = icmp eq i32 %2997, 15
  br i1 %2998, label %2999, label %3017

2999:                                             ; preds = %2995
  br label %3000

3000:                                             ; preds = %2999
  %3001 = load ptr, ptr %232, align 8, !tbaa !5
  %3002 = load i32, ptr %3001, align 4, !tbaa !69
  %3003 = icmp eq i32 %3002, 2
  br i1 %3003, label %3014, label %3004

3004:                                             ; preds = %3000
  call void @llvm.lifetime.start.p0(i64 16, ptr %253) #8
  %3005 = getelementptr inbounds %class.anon.274, ptr %253, i32 0, i32 0
  %3006 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3006, ptr %3005, align 8, !tbaa !5
  %3007 = getelementptr inbounds %class.anon.274, ptr %253, i32 0, i32 1
  %3008 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %3008, ptr %3007, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_37vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %252, ptr noundef nonnull align 8 dereferenceable(16) %253) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %252)
          to label %3009 unwind label %3010

3009:                                             ; preds = %3004
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %253) #8
  br label %3014

3010:                                             ; preds = %3004
  %3011 = landingpad { ptr, i32 }
          cleanup
  %3012 = extractvalue { ptr, i32 } %3011, 0
  store ptr %3012, ptr %14, align 8
  %3013 = extractvalue { ptr, i32 } %3011, 1
  store i32 %3013, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %253) #8
  br label %3019

3014:                                             ; preds = %3009, %3000
  br label %3015

3015:                                             ; preds = %3014
  br label %3016

3016:                                             ; preds = %3015
  br label %3017

3017:                                             ; preds = %3016, %2995
  br label %3018

3018:                                             ; preds = %3017
  store i8 0, ptr %248, align 1, !tbaa !31
  br label %2973, !llvm.loop !138

3019:                                             ; preds = %3010, %2989, %2978
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #8
  br label %3025

3020:                                             ; preds = %2977
  br label %3021

3021:                                             ; preds = %3020
  store i8 0, ptr %248, align 1, !tbaa !31
  br label %2965, !llvm.loop !139

3022:                                             ; preds = %2968
  br label %3023

3023:                                             ; preds = %3022, %2963, %2877
  br label %3024

3024:                                             ; preds = %3023
  store i8 0, ptr %235, align 1, !tbaa !31
  br label %2839, !llvm.loop !140

3025:                                             ; preds = %3019, %2960, %2875, %2843
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %235) #8
  br label %3030

3026:                                             ; preds = %2842
  br label %3027

3027:                                             ; preds = %3026
  store i8 0, ptr %235, align 1, !tbaa !31
  br label %2831, !llvm.loop !141

3028:                                             ; preds = %2834
  br label %3029

3029:                                             ; preds = %3028
  store i8 0, ptr %231, align 1, !tbaa !31
  br label %2808, !llvm.loop !142

3030:                                             ; preds = %3025, %2824, %2813
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %231) #8
  br label %3360

3031:                                             ; preds = %2812
  br label %3032

3032:                                             ; preds = %3031
  store i8 0, ptr %231, align 1, !tbaa !31
  br label %2800, !llvm.loop !143

3033:                                             ; preds = %2803
  br label %3358

3034:                                             ; preds = %2643
  call void @llvm.lifetime.start.p0(i64 1, ptr %254) #8
  store i8 1, ptr %254, align 1, !tbaa !31
  br label %3035

3035:                                             ; preds = %3124, %3034
  %3036 = load i8, ptr %254, align 1, !tbaa !31, !range !65, !noundef !66
  %3037 = trunc i8 %3036 to i1
  br i1 %3037, label %3039, label %3038

3038:                                             ; preds = %3035
  store i32 337, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %254) #8
  br label %3125

3039:                                             ; preds = %3035
  call void @llvm.lifetime.start.p0(i64 8, ptr %255) #8
  %3040 = load ptr, ptr %215, align 8, !tbaa !5
  %3041 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %3040)
          to label %3042 unwind label %3048

3042:                                             ; preds = %3039
  store ptr %3041, ptr %255, align 8, !tbaa !5
  br label %3043

3043:                                             ; preds = %3121, %3042
  %3044 = load ptr, ptr %255, align 8, !tbaa !5
  %3045 = load i8, ptr %254, align 1, !tbaa !31, !range !65, !noundef !66
  %3046 = trunc i8 %3045 to i1
  br i1 %3046, label %3052, label %3047

3047:                                             ; preds = %3043
  store i32 340, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #8
  br label %3123

3048:                                             ; preds = %3102, %3100, %3097, %3075, %3072, %3056, %3053, %3039
  %3049 = landingpad { ptr, i32 }
          cleanup
  %3050 = extractvalue { ptr, i32 } %3049, 0
  store ptr %3050, ptr %14, align 8
  %3051 = extractvalue { ptr, i32 } %3049, 1
  store i32 %3051, ptr %15, align 4
  br label %3122

3052:                                             ; preds = %3043
  br label %3053

3053:                                             ; preds = %3052
  %3054 = load ptr, ptr %105, align 8, !tbaa !5
  %3055 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3054)
          to label %3056 unwind label %3048

3056:                                             ; preds = %3053
  %3057 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %3055)
          to label %3058 unwind label %3048

3058:                                             ; preds = %3056
  br i1 %3057, label %3069, label %3059

3059:                                             ; preds = %3058
  call void @llvm.lifetime.start.p0(i64 16, ptr %257) #8
  %3060 = getelementptr inbounds %class.anon.275, ptr %257, i32 0, i32 0
  %3061 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3061, ptr %3060, align 8, !tbaa !5
  %3062 = getelementptr inbounds %class.anon.275, ptr %257, i32 0, i32 1
  %3063 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %3063, ptr %3062, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_38vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %256, ptr noundef nonnull align 8 dereferenceable(16) %257) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %256)
          to label %3064 unwind label %3065

3064:                                             ; preds = %3059
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %257) #8
  br label %3069

3065:                                             ; preds = %3059
  %3066 = landingpad { ptr, i32 }
          cleanup
  %3067 = extractvalue { ptr, i32 } %3066, 0
  store ptr %3067, ptr %14, align 8
  %3068 = extractvalue { ptr, i32 } %3066, 1
  store i32 %3068, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %257) #8
  br label %3122

3069:                                             ; preds = %3064, %3058
  br label %3070

3070:                                             ; preds = %3069
  br label %3071

3071:                                             ; preds = %3070
  br label %3072

3072:                                             ; preds = %3071
  %3073 = load ptr, ptr %105, align 8, !tbaa !5
  %3074 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3073)
          to label %3075 unwind label %3048

3075:                                             ; preds = %3072
  %3076 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %3074)
          to label %3077 unwind label %3048

3077:                                             ; preds = %3075
  %3078 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %3076, i32 0, i32 0
  %3079 = load i32, ptr %3078, align 8, !tbaa !144
  %3080 = load ptr, ptr %255, align 8, !tbaa !5
  %3081 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %3080, i32 0, i32 1
  %3082 = load i32, ptr %3081, align 4, !tbaa !147
  %3083 = icmp sle i32 %3079, %3082
  br i1 %3083, label %3094, label %3084

3084:                                             ; preds = %3077
  call void @llvm.lifetime.start.p0(i64 16, ptr %259) #8
  %3085 = getelementptr inbounds %class.anon.276, ptr %259, i32 0, i32 0
  %3086 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3086, ptr %3085, align 8, !tbaa !5
  %3087 = getelementptr inbounds %class.anon.276, ptr %259, i32 0, i32 1
  %3088 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %3088, ptr %3087, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_39vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull align 8 dereferenceable(16) %259) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %258)
          to label %3089 unwind label %3090

3089:                                             ; preds = %3084
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %259) #8
  br label %3094

3090:                                             ; preds = %3084
  %3091 = landingpad { ptr, i32 }
          cleanup
  %3092 = extractvalue { ptr, i32 } %3091, 0
  store ptr %3092, ptr %14, align 8
  %3093 = extractvalue { ptr, i32 } %3091, 1
  store i32 %3093, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %259) #8
  br label %3122

3094:                                             ; preds = %3089, %3077
  br label %3095

3095:                                             ; preds = %3094
  br label %3096

3096:                                             ; preds = %3095
  br label %3097

3097:                                             ; preds = %3096
  %3098 = load ptr, ptr %105, align 8, !tbaa !5
  %3099 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3098)
          to label %3100 unwind label %3048

3100:                                             ; preds = %3097
  %3101 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %3099)
          to label %3102 unwind label %3048

3102:                                             ; preds = %3100
  %3103 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %3101, i32 0, i32 1
  %3104 = load ptr, ptr %255, align 8, !tbaa !5
  %3105 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %3104, i32 0, i32 2
  %3106 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %3103, ptr noundef nonnull align 8 dereferenceable(8) %3105)
          to label %3107 unwind label %3048

3107:                                             ; preds = %3102
  br i1 %3106, label %3118, label %3108

3108:                                             ; preds = %3107
  call void @llvm.lifetime.start.p0(i64 16, ptr %261) #8
  %3109 = getelementptr inbounds %class.anon.277, ptr %261, i32 0, i32 0
  %3110 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3110, ptr %3109, align 8, !tbaa !5
  %3111 = getelementptr inbounds %class.anon.277, ptr %261, i32 0, i32 1
  %3112 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %3112, ptr %3111, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_40vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %260, ptr noundef nonnull align 8 dereferenceable(16) %261) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %260)
          to label %3113 unwind label %3114

3113:                                             ; preds = %3108
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %261) #8
  br label %3118

3114:                                             ; preds = %3108
  %3115 = landingpad { ptr, i32 }
          cleanup
  %3116 = extractvalue { ptr, i32 } %3115, 0
  store ptr %3116, ptr %14, align 8
  %3117 = extractvalue { ptr, i32 } %3115, 1
  store i32 %3117, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %261) #8
  br label %3122

3118:                                             ; preds = %3113, %3107
  br label %3119

3119:                                             ; preds = %3118
  br label %3120

3120:                                             ; preds = %3119
  br label %3121

3121:                                             ; preds = %3120
  store i8 0, ptr %254, align 1, !tbaa !31
  br label %3043, !llvm.loop !150

3122:                                             ; preds = %3114, %3090, %3065, %3048
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %254) #8
  br label %3360

3123:                                             ; preds = %3047
  br label %3124

3124:                                             ; preds = %3123
  store i8 0, ptr %254, align 1, !tbaa !31
  br label %3035, !llvm.loop !151

3125:                                             ; preds = %3038
  br label %3358

3126:                                             ; preds = %2643
  call void @llvm.lifetime.start.p0(i64 1, ptr %262) #8
  store i8 1, ptr %262, align 1, !tbaa !31
  br label %3127

3127:                                             ; preds = %3356, %3126
  %3128 = load i8, ptr %262, align 1, !tbaa !31, !range !65, !noundef !66
  %3129 = trunc i8 %3128 to i1
  br i1 %3129, label %3131, label %3130

3130:                                             ; preds = %3127
  store i32 349, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %262) #8
  br label %3357

3131:                                             ; preds = %3127
  call void @llvm.lifetime.start.p0(i64 8, ptr %263) #8
  %3132 = load ptr, ptr %215, align 8, !tbaa !5
  %3133 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %3132)
          to label %3134 unwind label %3140

3134:                                             ; preds = %3131
  store ptr %3133, ptr %263, align 8, !tbaa !5
  br label %3135

3135:                                             ; preds = %3352, %3134
  %3136 = load ptr, ptr %263, align 8, !tbaa !5
  %3137 = load i8, ptr %262, align 1, !tbaa !31, !range !65, !noundef !66
  %3138 = trunc i8 %3137 to i1
  br i1 %3138, label %3144, label %3139

3139:                                             ; preds = %3135
  store i32 352, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #8
  br label %3355

3140:                                             ; preds = %3131
  %3141 = landingpad { ptr, i32 }
          cleanup
  %3142 = extractvalue { ptr, i32 } %3141, 0
  store ptr %3142, ptr %14, align 8
  %3143 = extractvalue { ptr, i32 } %3141, 1
  store i32 %3143, ptr %15, align 4
  br label %3354

3144:                                             ; preds = %3135
  call void @llvm.lifetime.start.p0(i64 4, ptr %264) #8
  %3145 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 2
  %3146 = load ptr, ptr %3145, align 8, !tbaa !89
  %3147 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 1
  %3148 = load ptr, ptr %3147, align 8, !tbaa !94
  %3149 = load ptr, ptr %263, align 8, !tbaa !5
  %3150 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %3149, i32 0, i32 1
  %3151 = invoke noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %3146, ptr noundef nonnull align 8 dereferenceable(8) %3148, ptr noundef nonnull align 8 dereferenceable(8) %3150, i1 noundef zeroext false)
          to label %3152 unwind label %3157

3152:                                             ; preds = %3144
  store i32 %3151, ptr %264, align 4, !tbaa !134
  call void @llvm.lifetime.start.p0(i64 1, ptr %265) #8
  store i8 1, ptr %265, align 1, !tbaa !31
  br label %3153

3153:                                             ; preds = %3350, %3152
  %3154 = load i8, ptr %265, align 1, !tbaa !31, !range !65, !noundef !66
  %3155 = trunc i8 %3154 to i1
  br i1 %3155, label %3161, label %3156

3156:                                             ; preds = %3153
  store i32 355, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %265) #8
  br label %3351

3157:                                             ; preds = %3144
  %3158 = landingpad { ptr, i32 }
          cleanup
  %3159 = extractvalue { ptr, i32 } %3158, 0
  store ptr %3159, ptr %14, align 8
  %3160 = extractvalue { ptr, i32 } %3158, 1
  store i32 %3160, ptr %15, align 4
  br label %3353

3161:                                             ; preds = %3153
  call void @llvm.lifetime.start.p0(i64 8, ptr %266) #8
  %3162 = load ptr, ptr %105, align 8, !tbaa !5
  %3163 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3162)
          to label %3164 unwind label %3169

3164:                                             ; preds = %3161
  store ptr %3163, ptr %266, align 8, !tbaa !5
  br label %3165

3165:                                             ; preds = %3347, %3164
  %3166 = load i8, ptr %265, align 1, !tbaa !31, !range !65, !noundef !66
  %3167 = trunc i8 %3166 to i1
  br i1 %3167, label %3173, label %3168

3168:                                             ; preds = %3165
  store i32 358, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #8
  br label %3349

3169:                                             ; preds = %3173, %3161
  %3170 = landingpad { ptr, i32 }
          cleanup
  %3171 = extractvalue { ptr, i32 } %3170, 0
  store ptr %3171, ptr %14, align 8
  %3172 = extractvalue { ptr, i32 } %3170, 1
  store i32 %3172, ptr %15, align 4
  br label %3348

3173:                                             ; preds = %3165
  %3174 = load ptr, ptr %266, align 8, !tbaa !5
  %3175 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %3174)
          to label %3176 unwind label %3169

3176:                                             ; preds = %3173
  switch i32 %3175, label %3178 [
    i32 0, label %3177
    i32 12, label %3204
    i32 3, label %3273
  ]

3177:                                             ; preds = %3176
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 958, ptr noundef @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

3178:                                             ; preds = %3176
  br label %3179

3179:                                             ; preds = %3178
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %267, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %269) #8
  %3180 = getelementptr inbounds %class.anon.278, ptr %269, i32 0, i32 0
  store ptr %267, ptr %3180, align 8, !tbaa !5
  %3181 = getelementptr inbounds %class.anon.278, ptr %269, i32 0, i32 1
  %3182 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3182, ptr %3181, align 8, !tbaa !5
  %3183 = getelementptr inbounds %class.anon.278, ptr %269, i32 0, i32 2
  %3184 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %3184, ptr %3183, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_41vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %268, ptr noundef nonnull align 8 dereferenceable(24) %269)
          to label %3185 unwind label %3188

3185:                                             ; preds = %3179
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %268)
          to label %3186 unwind label %3192

3186:                                             ; preds = %3185
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %269) #8
  %3187 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %3187, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3187, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %3197

3188:                                             ; preds = %3179
  %3189 = landingpad { ptr, i32 }
          cleanup
  %3190 = extractvalue { ptr, i32 } %3189, 0
  store ptr %3190, ptr %14, align 8
  %3191 = extractvalue { ptr, i32 } %3189, 1
  store i32 %3191, ptr %15, align 4
  br label %3196

3192:                                             ; preds = %3185
  %3193 = landingpad { ptr, i32 }
          cleanup
  %3194 = extractvalue { ptr, i32 } %3193, 0
  store ptr %3194, ptr %14, align 8
  %3195 = extractvalue { ptr, i32 } %3193, 1
  store i32 %3195, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #8
  br label %3196

3196:                                             ; preds = %3192, %3188
  call void @llvm.lifetime.end.p0(i64 24, ptr %269) #8
  br label %3201

3197:                                             ; preds = %3186
  %3198 = landingpad { ptr, i32 }
          cleanup
  %3199 = extractvalue { ptr, i32 } %3198, 0
  store ptr %3199, ptr %14, align 8
  %3200 = extractvalue { ptr, i32 } %3198, 1
  store i32 %3200, ptr %15, align 4
  br label %3201

3201:                                             ; preds = %3197, %3196
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #8
  br label %3348

3202:                                             ; No predecessors!
  br label %3203

3203:                                             ; preds = %3202
  br label %3346

3204:                                             ; preds = %3176
  call void @llvm.lifetime.start.p0(i64 1, ptr %270) #8
  store i8 1, ptr %270, align 1, !tbaa !31
  br label %3205

3205:                                             ; preds = %3271, %3204
  %3206 = load i8, ptr %270, align 1, !tbaa !31, !range !65, !noundef !66
  %3207 = trunc i8 %3206 to i1
  br i1 %3207, label %3209, label %3208

3208:                                             ; preds = %3205
  store i32 364, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %270) #8
  br label %3272

3209:                                             ; preds = %3205
  call void @llvm.lifetime.start.p0(i64 8, ptr %271) #8
  %3210 = load ptr, ptr %266, align 8, !tbaa !5
  %3211 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %3210)
          to label %3212 unwind label %3218

3212:                                             ; preds = %3209
  store ptr %3211, ptr %271, align 8, !tbaa !5
  br label %3213

3213:                                             ; preds = %3268, %3212
  %3214 = load ptr, ptr %271, align 8, !tbaa !5
  %3215 = load i8, ptr %270, align 1, !tbaa !31, !range !65, !noundef !66
  %3216 = trunc i8 %3215 to i1
  br i1 %3216, label %3222, label %3217

3217:                                             ; preds = %3213
  store i32 367, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %271) #8
  br label %3270

3218:                                             ; preds = %3222, %3209
  %3219 = landingpad { ptr, i32 }
          cleanup
  %3220 = extractvalue { ptr, i32 } %3219, 0
  store ptr %3220, ptr %14, align 8
  %3221 = extractvalue { ptr, i32 } %3219, 1
  store i32 %3221, ptr %15, align 4
  br label %3269

3222:                                             ; preds = %3213
  %3223 = load ptr, ptr %263, align 8, !tbaa !5
  %3224 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %3223, i32 0, i32 1
  %3225 = load ptr, ptr %271, align 8, !tbaa !5
  %3226 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %3225, i32 0, i32 1
  %3227 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %3224, ptr noundef nonnull align 8 dereferenceable(8) %3226)
          to label %3228 unwind label %3218

3228:                                             ; preds = %3222
  br i1 %3227, label %3229, label %3267

3229:                                             ; preds = %3228
  call void @llvm.lifetime.start.p0(i64 4, ptr %272) #8
  %3230 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 2
  %3231 = load ptr, ptr %3230, align 8, !tbaa !89
  %3232 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 1
  %3233 = load ptr, ptr %3232, align 8, !tbaa !94
  %3234 = load ptr, ptr %271, align 8, !tbaa !5
  %3235 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %3234, i32 0, i32 1
  %3236 = invoke noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %3231, ptr noundef nonnull align 8 dereferenceable(8) %3233, ptr noundef nonnull align 8 dereferenceable(8) %3235, i1 noundef zeroext false)
          to label %3237 unwind label %3254

3237:                                             ; preds = %3229
  store i32 %3236, ptr %272, align 4, !tbaa !134
  %3238 = load i32, ptr %272, align 4, !tbaa !134
  %3239 = icmp ne i32 %3238, 1
  br i1 %3239, label %3240, label %3265

3240:                                             ; preds = %3237
  %3241 = load i32, ptr %272, align 4, !tbaa !134
  %3242 = icmp ne i32 %3241, 2
  br i1 %3242, label %3243, label %3265

3243:                                             ; preds = %3240
  br label %3244

3244:                                             ; preds = %3243
  %3245 = load i32, ptr %272, align 4, !tbaa !134
  %3246 = load i32, ptr %264, align 4, !tbaa !134
  %3247 = icmp eq i32 %3245, %3246
  br i1 %3247, label %3262, label %3248

3248:                                             ; preds = %3244
  call void @llvm.lifetime.start.p0(i64 16, ptr %274) #8
  %3249 = getelementptr inbounds %class.anon.279, ptr %274, i32 0, i32 0
  %3250 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3250, ptr %3249, align 8, !tbaa !5
  %3251 = getelementptr inbounds %class.anon.279, ptr %274, i32 0, i32 1
  %3252 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %3252, ptr %3251, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_42vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %273, ptr noundef nonnull align 8 dereferenceable(16) %274) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %273)
          to label %3253 unwind label %3258

3253:                                             ; preds = %3248
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %274) #8
  br label %3262

3254:                                             ; preds = %3229
  %3255 = landingpad { ptr, i32 }
          cleanup
  %3256 = extractvalue { ptr, i32 } %3255, 0
  store ptr %3256, ptr %14, align 8
  %3257 = extractvalue { ptr, i32 } %3255, 1
  store i32 %3257, ptr %15, align 4
  br label %3266

3258:                                             ; preds = %3248
  %3259 = landingpad { ptr, i32 }
          cleanup
  %3260 = extractvalue { ptr, i32 } %3259, 0
  store ptr %3260, ptr %14, align 8
  %3261 = extractvalue { ptr, i32 } %3259, 1
  store i32 %3261, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %274) #8
  br label %3266

3262:                                             ; preds = %3253, %3244
  br label %3263

3263:                                             ; preds = %3262
  br label %3264

3264:                                             ; preds = %3263
  br label %3265

3265:                                             ; preds = %3264, %3240, %3237
  call void @llvm.lifetime.end.p0(i64 4, ptr %272) #8
  br label %3267

3266:                                             ; preds = %3258, %3254
  call void @llvm.lifetime.end.p0(i64 4, ptr %272) #8
  br label %3269

3267:                                             ; preds = %3265, %3228
  br label %3268

3268:                                             ; preds = %3267
  store i8 0, ptr %270, align 1, !tbaa !31
  br label %3213, !llvm.loop !152

3269:                                             ; preds = %3266, %3218
  call void @llvm.lifetime.end.p0(i64 8, ptr %271) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %270) #8
  br label %3348

3270:                                             ; preds = %3217
  br label %3271

3271:                                             ; preds = %3270
  store i8 0, ptr %270, align 1, !tbaa !31
  br label %3205, !llvm.loop !153

3272:                                             ; preds = %3208
  br label %3346

3273:                                             ; preds = %3176
  call void @llvm.lifetime.start.p0(i64 1, ptr %275) #8
  store i8 1, ptr %275, align 1, !tbaa !31
  br label %3274

3274:                                             ; preds = %3344, %3273
  %3275 = load i8, ptr %275, align 1, !tbaa !31, !range !65, !noundef !66
  %3276 = trunc i8 %3275 to i1
  br i1 %3276, label %3278, label %3277

3277:                                             ; preds = %3274
  store i32 372, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %275) #8
  br label %3345

3278:                                             ; preds = %3274
  call void @llvm.lifetime.start.p0(i64 8, ptr %276) #8
  %3279 = load ptr, ptr %266, align 8, !tbaa !5
  %3280 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %3279)
          to label %3281 unwind label %3287

3281:                                             ; preds = %3278
  store ptr %3280, ptr %276, align 8, !tbaa !5
  br label %3282

3282:                                             ; preds = %3341, %3281
  %3283 = load ptr, ptr %276, align 8, !tbaa !5
  %3284 = load i8, ptr %275, align 1, !tbaa !31, !range !65, !noundef !66
  %3285 = trunc i8 %3284 to i1
  br i1 %3285, label %3291, label %3286

3286:                                             ; preds = %3282
  store i32 375, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %276) #8
  br label %3343

3287:                                             ; preds = %3278
  %3288 = landingpad { ptr, i32 }
          cleanup
  %3289 = extractvalue { ptr, i32 } %3288, 0
  store ptr %3289, ptr %14, align 8
  %3290 = extractvalue { ptr, i32 } %3288, 1
  store i32 %3290, ptr %15, align 4
  br label %3342

3291:                                             ; preds = %3282
  %3292 = load ptr, ptr %276, align 8, !tbaa !5
  %3293 = load i32, ptr %3292, align 4, !tbaa !69
  switch i32 %3293, label %3320 [
    i32 16, label %3294
    i32 15, label %3294
    i32 12, label %3294
    i32 13, label %3294
  ]

3294:                                             ; preds = %3291, %3291, %3291, %3291
  br label %3295

3295:                                             ; preds = %3294
  call void @llvm.lifetime.start.p0(i64 8, ptr %277) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %277, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %279) #8
  %3296 = getelementptr inbounds %class.anon.280, ptr %279, i32 0, i32 0
  store ptr %277, ptr %3296, align 8, !tbaa !5
  %3297 = getelementptr inbounds %class.anon.280, ptr %279, i32 0, i32 1
  %3298 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3298, ptr %3297, align 8, !tbaa !5
  %3299 = getelementptr inbounds %class.anon.280, ptr %279, i32 0, i32 2
  %3300 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %3300, ptr %3299, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_43vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %278, ptr noundef nonnull align 8 dereferenceable(24) %279)
          to label %3301 unwind label %3304

3301:                                             ; preds = %3295
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %278)
          to label %3302 unwind label %3308

3302:                                             ; preds = %3301
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %278) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %279) #8
  %3303 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %3303, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3303, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %3313

3304:                                             ; preds = %3295
  %3305 = landingpad { ptr, i32 }
          cleanup
  %3306 = extractvalue { ptr, i32 } %3305, 0
  store ptr %3306, ptr %14, align 8
  %3307 = extractvalue { ptr, i32 } %3305, 1
  store i32 %3307, ptr %15, align 4
  br label %3312

3308:                                             ; preds = %3301
  %3309 = landingpad { ptr, i32 }
          cleanup
  %3310 = extractvalue { ptr, i32 } %3309, 0
  store ptr %3310, ptr %14, align 8
  %3311 = extractvalue { ptr, i32 } %3309, 1
  store i32 %3311, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %278) #8
  br label %3312

3312:                                             ; preds = %3308, %3304
  call void @llvm.lifetime.end.p0(i64 24, ptr %279) #8
  br label %3317

3313:                                             ; preds = %3302
  %3314 = landingpad { ptr, i32 }
          cleanup
  %3315 = extractvalue { ptr, i32 } %3314, 0
  store ptr %3315, ptr %14, align 8
  %3316 = extractvalue { ptr, i32 } %3314, 1
  store i32 %3316, ptr %15, align 4
  br label %3317

3317:                                             ; preds = %3313, %3312
  call void @llvm.lifetime.end.p0(i64 8, ptr %277) #8
  br label %3342

3318:                                             ; No predecessors!
  br label %3319

3319:                                             ; preds = %3318
  br label %3340

3320:                                             ; preds = %3291
  br label %3321

3321:                                             ; preds = %3320
  %3322 = load i32, ptr %264, align 4, !tbaa !134
  %3323 = icmp eq i32 %3322, 1
  br i1 %3323, label %3337, label %3324

3324:                                             ; preds = %3321
  %3325 = load i32, ptr %264, align 4, !tbaa !134
  %3326 = icmp eq i32 %3325, 2
  br i1 %3326, label %3337, label %3327

3327:                                             ; preds = %3324
  call void @llvm.lifetime.start.p0(i64 16, ptr %281) #8
  %3328 = getelementptr inbounds %class.anon.281, ptr %281, i32 0, i32 0
  %3329 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3329, ptr %3328, align 8, !tbaa !5
  %3330 = getelementptr inbounds %class.anon.281, ptr %281, i32 0, i32 1
  %3331 = load ptr, ptr %213, align 8, !tbaa !5
  store ptr %3331, ptr %3330, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_44vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %280, ptr noundef nonnull align 8 dereferenceable(16) %281) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %280)
          to label %3332 unwind label %3333

3332:                                             ; preds = %3327
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %281) #8
  br label %3337

3333:                                             ; preds = %3327
  %3334 = landingpad { ptr, i32 }
          cleanup
  %3335 = extractvalue { ptr, i32 } %3334, 0
  store ptr %3335, ptr %14, align 8
  %3336 = extractvalue { ptr, i32 } %3334, 1
  store i32 %3336, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %281) #8
  br label %3342

3337:                                             ; preds = %3332, %3324, %3321
  br label %3338

3338:                                             ; preds = %3337
  br label %3339

3339:                                             ; preds = %3338
  br label %3340

3340:                                             ; preds = %3339, %3319
  br label %3341

3341:                                             ; preds = %3340
  store i8 0, ptr %275, align 1, !tbaa !31
  br label %3282, !llvm.loop !154

3342:                                             ; preds = %3333, %3317, %3287
  call void @llvm.lifetime.end.p0(i64 8, ptr %276) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %275) #8
  br label %3348

3343:                                             ; preds = %3286
  br label %3344

3344:                                             ; preds = %3343
  store i8 0, ptr %275, align 1, !tbaa !31
  br label %3274, !llvm.loop !155

3345:                                             ; preds = %3277
  br label %3346

3346:                                             ; preds = %3345, %3272, %3203
  br label %3347

3347:                                             ; preds = %3346
  store i8 0, ptr %265, align 1, !tbaa !31
  br label %3165, !llvm.loop !156

3348:                                             ; preds = %3342, %3269, %3201, %3169
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %265) #8
  br label %3353

3349:                                             ; preds = %3168
  br label %3350

3350:                                             ; preds = %3349
  store i8 0, ptr %265, align 1, !tbaa !31
  br label %3153, !llvm.loop !157

3351:                                             ; preds = %3156
  call void @llvm.lifetime.end.p0(i64 4, ptr %264) #8
  br label %3352

3352:                                             ; preds = %3351
  store i8 0, ptr %262, align 1, !tbaa !31
  br label %3135, !llvm.loop !158

3353:                                             ; preds = %3348, %3157
  call void @llvm.lifetime.end.p0(i64 4, ptr %264) #8
  br label %3354

3354:                                             ; preds = %3353, %3140
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %262) #8
  br label %3360

3355:                                             ; preds = %3139
  br label %3356

3356:                                             ; preds = %3355
  store i8 0, ptr %262, align 1, !tbaa !31
  br label %3127, !llvm.loop !159

3357:                                             ; preds = %3130
  br label %3358

3358:                                             ; preds = %3357, %3125, %3033, %2798, %2775, %2752, %2670
  br label %3359

3359:                                             ; preds = %3358
  store i8 0, ptr %214, align 1, !tbaa !31
  br label %2632, !llvm.loop !160

3360:                                             ; preds = %3354, %3122, %3030, %2790, %2767, %2749, %2668, %2636
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %214) #8
  br label %3365

3361:                                             ; preds = %2635
  br label %3362

3362:                                             ; preds = %3361
  store i8 0, ptr %214, align 1, !tbaa !31
  br label %2616, !llvm.loop !161

3363:                                             ; preds = %2619
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #8
  br label %3364

3364:                                             ; preds = %3363
  store i8 0, ptr %210, align 1, !tbaa !31
  br label %2597, !llvm.loop !162

3365:                                             ; preds = %3360, %2624
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #8
  br label %3366

3366:                                             ; preds = %3365, %2620
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #8
  br label %3367

3367:                                             ; preds = %3366, %2602
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %210) #8
  br label %4162

3368:                                             ; preds = %2601
  br label %3369

3369:                                             ; preds = %3368
  store i8 0, ptr %210, align 1, !tbaa !31
  br label %2589, !llvm.loop !163

3370:                                             ; preds = %2592
  br label %4160

3371:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %282) #8
  store i8 1, ptr %282, align 1, !tbaa !31
  br label %3372

3372:                                             ; preds = %3392, %3371
  %3373 = load i8, ptr %282, align 1, !tbaa !31, !range !65, !noundef !66
  %3374 = trunc i8 %3373 to i1
  br i1 %3374, label %3376, label %3375

3375:                                             ; preds = %3372
  store i32 383, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %282) #8
  br label %3393

3376:                                             ; preds = %3372
  call void @llvm.lifetime.start.p0(i64 8, ptr %283) #8
  %3377 = load ptr, ptr %108, align 8, !tbaa !5
  %3378 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %3377)
          to label %3379 unwind label %3385

3379:                                             ; preds = %3376
  store ptr %3378, ptr %283, align 8, !tbaa !5
  br label %3380

3380:                                             ; preds = %3390, %3379
  %3381 = load ptr, ptr %283, align 8, !tbaa !5
  %3382 = load i8, ptr %282, align 1, !tbaa !31, !range !65, !noundef !66
  %3383 = trunc i8 %3382 to i1
  br i1 %3383, label %3389, label %3384

3384:                                             ; preds = %3380
  store i32 386, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #8
  br label %3391

3385:                                             ; preds = %3376
  %3386 = landingpad { ptr, i32 }
          cleanup
  %3387 = extractvalue { ptr, i32 } %3386, 0
  store ptr %3387, ptr %14, align 8
  %3388 = extractvalue { ptr, i32 } %3386, 1
  store i32 %3388, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %282) #8
  br label %4162

3389:                                             ; preds = %3380
  br label %3390

3390:                                             ; preds = %3389
  store i8 0, ptr %282, align 1, !tbaa !31
  br label %3380, !llvm.loop !164

3391:                                             ; preds = %3384
  br label %3392

3392:                                             ; preds = %3391
  store i8 0, ptr %282, align 1, !tbaa !31
  br label %3372, !llvm.loop !165

3393:                                             ; preds = %3375
  br label %4160

3394:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %284) #8
  store i8 1, ptr %284, align 1, !tbaa !31
  br label %3395

3395:                                             ; preds = %3415, %3394
  %3396 = load i8, ptr %284, align 1, !tbaa !31, !range !65, !noundef !66
  %3397 = trunc i8 %3396 to i1
  br i1 %3397, label %3399, label %3398

3398:                                             ; preds = %3395
  store i32 389, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %284) #8
  br label %3416

3399:                                             ; preds = %3395
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #8
  %3400 = load ptr, ptr %108, align 8, !tbaa !5
  %3401 = invoke noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %3400)
          to label %3402 unwind label %3408

3402:                                             ; preds = %3399
  store ptr %3401, ptr %285, align 8, !tbaa !5
  br label %3403

3403:                                             ; preds = %3413, %3402
  %3404 = load ptr, ptr %285, align 8, !tbaa !5
  %3405 = load i8, ptr %284, align 1, !tbaa !31, !range !65, !noundef !66
  %3406 = trunc i8 %3405 to i1
  br i1 %3406, label %3412, label %3407

3407:                                             ; preds = %3403
  store i32 392, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #8
  br label %3414

3408:                                             ; preds = %3399
  %3409 = landingpad { ptr, i32 }
          cleanup
  %3410 = extractvalue { ptr, i32 } %3409, 0
  store ptr %3410, ptr %14, align 8
  %3411 = extractvalue { ptr, i32 } %3409, 1
  store i32 %3411, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %284) #8
  br label %4162

3412:                                             ; preds = %3403
  br label %3413

3413:                                             ; preds = %3412
  store i8 0, ptr %284, align 1, !tbaa !31
  br label %3403, !llvm.loop !166

3414:                                             ; preds = %3407
  br label %3415

3415:                                             ; preds = %3414
  store i8 0, ptr %284, align 1, !tbaa !31
  br label %3395, !llvm.loop !167

3416:                                             ; preds = %3398
  br label %4160

3417:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %286) #8
  store i8 1, ptr %286, align 1, !tbaa !31
  br label %3418

3418:                                             ; preds = %3619, %3417
  %3419 = load i8, ptr %286, align 1, !tbaa !31, !range !65, !noundef !66
  %3420 = trunc i8 %3419 to i1
  br i1 %3420, label %3422, label %3421

3421:                                             ; preds = %3418
  store i32 395, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %286) #8
  br label %3620

3422:                                             ; preds = %3418
  call void @llvm.lifetime.start.p0(i64 8, ptr %287) #8
  %3423 = load ptr, ptr %108, align 8, !tbaa !5
  %3424 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %3423)
          to label %3425 unwind label %3431

3425:                                             ; preds = %3422
  store ptr %3424, ptr %287, align 8, !tbaa !5
  br label %3426

3426:                                             ; preds = %3611, %3425
  %3427 = load ptr, ptr %287, align 8, !tbaa !5
  %3428 = load i8, ptr %286, align 1, !tbaa !31, !range !65, !noundef !66
  %3429 = trunc i8 %3428 to i1
  br i1 %3429, label %3435, label %3430

3430:                                             ; preds = %3426
  store i32 398, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %287) #8
  br label %3618

3431:                                             ; preds = %3422
  %3432 = landingpad { ptr, i32 }
          cleanup
  %3433 = extractvalue { ptr, i32 } %3432, 0
  store ptr %3433, ptr %14, align 8
  %3434 = extractvalue { ptr, i32 } %3432, 1
  store i32 %3434, ptr %15, align 4
  br label %3617

3435:                                             ; preds = %3426
  call void @llvm.lifetime.start.p0(i64 8, ptr %288) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %288)
          to label %3436 unwind label %3446

3436:                                             ; preds = %3435
  call void @llvm.lifetime.start.p0(i64 8, ptr %289) #8
  %3437 = load ptr, ptr %287, align 8, !tbaa !5
  %3438 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %3437, i32 0, i32 0
  %3439 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %288, ptr noundef nonnull align 8 dereferenceable(32) %3438, i32 noundef 0)
          to label %3440 unwind label %3450

3440:                                             ; preds = %3436
  store ptr %3439, ptr %289, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %290) #8
  store ptr null, ptr %290, align 8, !tbaa !5
  %3441 = load ptr, ptr %289, align 8, !tbaa !5
  %3442 = invoke noundef ptr @_ZNK3MIR11TypeResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %3441)
          to label %3443 unwind label %3454

3443:                                             ; preds = %3440
  store ptr %3442, ptr %290, align 8, !tbaa !5
  %3444 = icmp ne ptr %3442, null
  br i1 %3444, label %3445, label %3458

3445:                                             ; preds = %3443
  br label %3504

3446:                                             ; preds = %3435
  %3447 = landingpad { ptr, i32 }
          cleanup
  %3448 = extractvalue { ptr, i32 } %3447, 0
  store ptr %3448, ptr %14, align 8
  %3449 = extractvalue { ptr, i32 } %3447, 1
  store i32 %3449, ptr %15, align 4
  br label %3616

3450:                                             ; preds = %3436
  %3451 = landingpad { ptr, i32 }
          cleanup
  %3452 = extractvalue { ptr, i32 } %3451, 0
  store ptr %3452, ptr %14, align 8
  %3453 = extractvalue { ptr, i32 } %3451, 1
  store i32 %3453, ptr %15, align 4
  br label %3615

3454:                                             ; preds = %3480, %3477, %3474, %3471, %3467, %3464, %3461, %3458, %3440
  %3455 = landingpad { ptr, i32 }
          cleanup
  %3456 = extractvalue { ptr, i32 } %3455, 0
  store ptr %3456, ptr %14, align 8
  %3457 = extractvalue { ptr, i32 } %3455, 1
  store i32 %3457, ptr %15, align 4
  br label %3614

3458:                                             ; preds = %3443
  %3459 = load ptr, ptr %289, align 8, !tbaa !5
  %3460 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3459)
          to label %3461 unwind label %3454

3461:                                             ; preds = %3458
  %3462 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %3460)
          to label %3463 unwind label %3454

3463:                                             ; preds = %3461
  br i1 %3462, label %3464, label %3471

3464:                                             ; preds = %3463
  %3465 = load ptr, ptr %289, align 8, !tbaa !5
  %3466 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3465)
          to label %3467 unwind label %3454

3467:                                             ; preds = %3464
  %3468 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %3466)
          to label %3469 unwind label %3454

3469:                                             ; preds = %3467
  %3470 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %3468, i32 0, i32 2
  store ptr %3470, ptr %290, align 8, !tbaa !5
  br label %3503

3471:                                             ; preds = %3463
  %3472 = load ptr, ptr %289, align 8, !tbaa !5
  %3473 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3472)
          to label %3474 unwind label %3454

3474:                                             ; preds = %3471
  %3475 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %3473)
          to label %3476 unwind label %3454

3476:                                             ; preds = %3474
  br i1 %3475, label %3477, label %3484

3477:                                             ; preds = %3476
  %3478 = load ptr, ptr %289, align 8, !tbaa !5
  %3479 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3478)
          to label %3480 unwind label %3454

3480:                                             ; preds = %3477
  %3481 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %3479)
          to label %3482 unwind label %3454

3482:                                             ; preds = %3480
  %3483 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %3481, i32 0, i32 1
  store ptr %3483, ptr %290, align 8, !tbaa !5
  br label %3502

3484:                                             ; preds = %3476
  br label %3485

3485:                                             ; preds = %3484
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %291, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %293) #8
  %3486 = getelementptr inbounds %class.anon.282, ptr %293, i32 0, i32 0
  store ptr %291, ptr %3486, align 8, !tbaa !5
  %3487 = getelementptr inbounds %class.anon.282, ptr %293, i32 0, i32 1
  %3488 = load ptr, ptr %289, align 8, !tbaa !5
  store ptr %3488, ptr %3487, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_45vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %292, ptr noundef nonnull align 8 dereferenceable(16) %293) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %292)
          to label %3489 unwind label %3491

3489:                                             ; preds = %3485
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %292) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %293) #8
  %3490 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %3490, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3490, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %3495

3491:                                             ; preds = %3485
  %3492 = landingpad { ptr, i32 }
          cleanup
  %3493 = extractvalue { ptr, i32 } %3492, 0
  store ptr %3493, ptr %14, align 8
  %3494 = extractvalue { ptr, i32 } %3492, 1
  store i32 %3494, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %292) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %293) #8
  br label %3499

3495:                                             ; preds = %3489
  %3496 = landingpad { ptr, i32 }
          cleanup
  %3497 = extractvalue { ptr, i32 } %3496, 0
  store ptr %3497, ptr %14, align 8
  %3498 = extractvalue { ptr, i32 } %3496, 1
  store i32 %3498, ptr %15, align 4
  br label %3499

3499:                                             ; preds = %3495, %3491
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #8
  br label %3614

3500:                                             ; No predecessors!
  br label %3501

3501:                                             ; preds = %3500
  br label %3502

3502:                                             ; preds = %3501, %3482
  br label %3503

3503:                                             ; preds = %3502, %3469
  br label %3504

3504:                                             ; preds = %3503, %3445
  call void @llvm.lifetime.start.p0(i64 8, ptr %294) #8
  %3505 = load ptr, ptr %290, align 8, !tbaa !5
  store ptr %3505, ptr %294, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %295) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %295)
          to label %3506 unwind label %3528

3506:                                             ; preds = %3504
  %3507 = load ptr, ptr %294, align 8, !tbaa !5
  %3508 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3507)
          to label %3509 unwind label %3532

3509:                                             ; preds = %3506
  %3510 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %3508)
          to label %3511 unwind label %3532

3511:                                             ; preds = %3509
  br i1 %3510, label %3527, label %3512

3512:                                             ; preds = %3511
  %3513 = load ptr, ptr %294, align 8, !tbaa !5
  %3514 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3513)
          to label %3515 unwind label %3532

3515:                                             ; preds = %3512
  %3516 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %3514)
          to label %3517 unwind label %3532

3517:                                             ; preds = %3515
  br i1 %3516, label %3518, label %3536

3518:                                             ; preds = %3517
  %3519 = load ptr, ptr %294, align 8, !tbaa !5
  %3520 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3519)
          to label %3521 unwind label %3532

3521:                                             ; preds = %3518
  %3522 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %3520)
          to label %3523 unwind label %3532

3523:                                             ; preds = %3521
  %3524 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %3522, i32 0, i32 1
  %3525 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %3524)
          to label %3526 unwind label %3532

3526:                                             ; preds = %3523
  br i1 %3525, label %3527, label %3536

3527:                                             ; preds = %3526, %3511
  br label %3610

3528:                                             ; preds = %3504
  %3529 = landingpad { ptr, i32 }
          cleanup
  %3530 = extractvalue { ptr, i32 } %3529, 0
  store ptr %3530, ptr %14, align 8
  %3531 = extractvalue { ptr, i32 } %3529, 1
  store i32 %3531, ptr %15, align 4
  br label %3613

3532:                                             ; preds = %3584, %3581, %3577, %3574, %3558, %3555, %3539, %3536, %3523, %3521, %3518, %3515, %3512, %3509, %3506
  %3533 = landingpad { ptr, i32 }
          cleanup
  %3534 = extractvalue { ptr, i32 } %3533, 0
  store ptr %3534, ptr %14, align 8
  %3535 = extractvalue { ptr, i32 } %3533, 1
  store i32 %3535, ptr %15, align 4
  br label %3612

3536:                                             ; preds = %3526, %3517
  %3537 = load ptr, ptr %294, align 8, !tbaa !5
  %3538 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3537)
          to label %3539 unwind label %3532

3539:                                             ; preds = %3536
  %3540 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %3538)
          to label %3541 unwind label %3532

3541:                                             ; preds = %3539
  br i1 %3540, label %3542, label %3555

3542:                                             ; preds = %3541
  call void @llvm.lifetime.start.p0(i64 8, ptr %296) #8
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %296, i32 noundef 0)
          to label %3543 unwind label %3546

3543:                                             ; preds = %3542
  %3544 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull align 8 dereferenceable(8) %296)
          to label %3545 unwind label %3550

3545:                                             ; preds = %3543
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #8
  br label %3609

3546:                                             ; preds = %3542
  %3547 = landingpad { ptr, i32 }
          cleanup
  %3548 = extractvalue { ptr, i32 } %3547, 0
  store ptr %3548, ptr %14, align 8
  %3549 = extractvalue { ptr, i32 } %3547, 1
  store i32 %3549, ptr %15, align 4
  br label %3554

3550:                                             ; preds = %3543
  %3551 = landingpad { ptr, i32 }
          cleanup
  %3552 = extractvalue { ptr, i32 } %3551, 0
  store ptr %3552, ptr %14, align 8
  %3553 = extractvalue { ptr, i32 } %3551, 1
  store i32 %3553, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #8
  br label %3554

3554:                                             ; preds = %3550, %3546
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #8
  br label %3612

3555:                                             ; preds = %3541
  %3556 = load ptr, ptr %294, align 8, !tbaa !5
  %3557 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3556)
          to label %3558 unwind label %3532

3558:                                             ; preds = %3555
  %3559 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %3557)
          to label %3560 unwind label %3532

3560:                                             ; preds = %3558
  br i1 %3559, label %3561, label %3574

3561:                                             ; preds = %3560
  call void @llvm.lifetime.start.p0(i64 8, ptr %297) #8
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %297, i32 noundef 0)
          to label %3562 unwind label %3565

3562:                                             ; preds = %3561
  %3563 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull align 8 dereferenceable(8) %297)
          to label %3564 unwind label %3569

3564:                                             ; preds = %3562
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %297) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #8
  br label %3608

3565:                                             ; preds = %3561
  %3566 = landingpad { ptr, i32 }
          cleanup
  %3567 = extractvalue { ptr, i32 } %3566, 0
  store ptr %3567, ptr %14, align 8
  %3568 = extractvalue { ptr, i32 } %3566, 1
  store i32 %3568, ptr %15, align 4
  br label %3573

3569:                                             ; preds = %3562
  %3570 = landingpad { ptr, i32 }
          cleanup
  %3571 = extractvalue { ptr, i32 } %3570, 0
  store ptr %3571, ptr %14, align 8
  %3572 = extractvalue { ptr, i32 } %3570, 1
  store i32 %3572, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %297) #8
  br label %3573

3573:                                             ; preds = %3569, %3565
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #8
  br label %3612

3574:                                             ; preds = %3560
  %3575 = load ptr, ptr %294, align 8, !tbaa !5
  %3576 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3575)
          to label %3577 unwind label %3532

3577:                                             ; preds = %3574
  %3578 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %3576)
          to label %3579 unwind label %3532

3579:                                             ; preds = %3577
  br i1 %3578, label %3580, label %3581

3580:                                             ; preds = %3579
  br label %3607

3581:                                             ; preds = %3579
  %3582 = load ptr, ptr %294, align 8, !tbaa !5
  %3583 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3582)
          to label %3584 unwind label %3532

3584:                                             ; preds = %3581
  %3585 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %3583)
          to label %3586 unwind label %3532

3586:                                             ; preds = %3584
  br i1 %3585, label %3587, label %3588

3587:                                             ; preds = %3586
  br label %3606

3588:                                             ; preds = %3586
  br label %3589

3589:                                             ; preds = %3588
  call void @llvm.lifetime.start.p0(i64 8, ptr %298) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %298, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %300) #8
  %3590 = getelementptr inbounds %class.anon.283, ptr %300, i32 0, i32 0
  store ptr %298, ptr %3590, align 8, !tbaa !5
  %3591 = getelementptr inbounds %class.anon.283, ptr %300, i32 0, i32 1
  %3592 = load ptr, ptr %294, align 8, !tbaa !5
  store ptr %3592, ptr %3591, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_46vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %299, ptr noundef nonnull align 8 dereferenceable(16) %300) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %299)
          to label %3593 unwind label %3595

3593:                                             ; preds = %3589
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %299) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %300) #8
  %3594 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %3594, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3594, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %3599

3595:                                             ; preds = %3589
  %3596 = landingpad { ptr, i32 }
          cleanup
  %3597 = extractvalue { ptr, i32 } %3596, 0
  store ptr %3597, ptr %14, align 8
  %3598 = extractvalue { ptr, i32 } %3596, 1
  store i32 %3598, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %299) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %300) #8
  br label %3603

3599:                                             ; preds = %3593
  %3600 = landingpad { ptr, i32 }
          cleanup
  %3601 = extractvalue { ptr, i32 } %3600, 0
  store ptr %3601, ptr %14, align 8
  %3602 = extractvalue { ptr, i32 } %3600, 1
  store i32 %3602, ptr %15, align 4
  br label %3603

3603:                                             ; preds = %3599, %3595
  call void @llvm.lifetime.end.p0(i64 8, ptr %298) #8
  br label %3612

3604:                                             ; No predecessors!
  br label %3605

3605:                                             ; preds = %3604
  br label %3606

3606:                                             ; preds = %3605, %3587
  br label %3607

3607:                                             ; preds = %3606, %3580
  br label %3608

3608:                                             ; preds = %3607, %3564
  br label %3609

3609:                                             ; preds = %3608, %3545
  br label %3610

3610:                                             ; preds = %3609, %3527
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %289) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %288) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %288) #8
  br label %3611

3611:                                             ; preds = %3610
  store i8 0, ptr %286, align 1, !tbaa !31
  br label %3426, !llvm.loop !168

3612:                                             ; preds = %3603, %3573, %3554, %3532
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %295) #8
  br label %3613

3613:                                             ; preds = %3612, %3528
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #8
  br label %3614

3614:                                             ; preds = %3613, %3499, %3454
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #8
  br label %3615

3615:                                             ; preds = %3614, %3450
  call void @llvm.lifetime.end.p0(i64 8, ptr %289) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %288) #8
  br label %3616

3616:                                             ; preds = %3615, %3446
  call void @llvm.lifetime.end.p0(i64 8, ptr %288) #8
  br label %3617

3617:                                             ; preds = %3616, %3431
  call void @llvm.lifetime.end.p0(i64 8, ptr %287) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %286) #8
  br label %4162

3618:                                             ; preds = %3430
  br label %3619

3619:                                             ; preds = %3618
  store i8 0, ptr %286, align 1, !tbaa !31
  br label %3418, !llvm.loop !169

3620:                                             ; preds = %3421
  br label %4160

3621:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %301) #8
  store i8 1, ptr %301, align 1, !tbaa !31
  br label %3622

3622:                                             ; preds = %3799, %3621
  %3623 = load i8, ptr %301, align 1, !tbaa !31, !range !65, !noundef !66
  %3624 = trunc i8 %3623 to i1
  br i1 %3624, label %3626, label %3625

3625:                                             ; preds = %3622
  store i32 405, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %301) #8
  br label %3800

3626:                                             ; preds = %3622
  call void @llvm.lifetime.start.p0(i64 8, ptr %302) #8
  %3627 = load ptr, ptr %108, align 8, !tbaa !5
  %3628 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %3627)
          to label %3629 unwind label %3635

3629:                                             ; preds = %3626
  store ptr %3628, ptr %302, align 8, !tbaa !5
  br label %3630

3630:                                             ; preds = %3792, %3629
  %3631 = load ptr, ptr %302, align 8, !tbaa !5
  %3632 = load i8, ptr %301, align 1, !tbaa !31, !range !65, !noundef !66
  %3633 = trunc i8 %3632 to i1
  br i1 %3633, label %3639, label %3634

3634:                                             ; preds = %3630
  store i32 408, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #8
  br label %3798

3635:                                             ; preds = %3626
  %3636 = landingpad { ptr, i32 }
          cleanup
  %3637 = extractvalue { ptr, i32 } %3636, 0
  store ptr %3637, ptr %14, align 8
  %3638 = extractvalue { ptr, i32 } %3636, 1
  store i32 %3638, ptr %15, align 4
  br label %3797

3639:                                             ; preds = %3630
  call void @llvm.lifetime.start.p0(i64 8, ptr %303) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %303)
          to label %3640 unwind label %3650

3640:                                             ; preds = %3639
  call void @llvm.lifetime.start.p0(i64 8, ptr %304) #8
  %3641 = load ptr, ptr %302, align 8, !tbaa !5
  %3642 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %3641, i32 0, i32 0
  %3643 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %303, ptr noundef nonnull align 8 dereferenceable(32) %3642, i32 noundef 0)
          to label %3644 unwind label %3654

3644:                                             ; preds = %3640
  store ptr %3643, ptr %304, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %305) #8
  store ptr null, ptr %305, align 8, !tbaa !5
  %3645 = load ptr, ptr %304, align 8, !tbaa !5
  %3646 = invoke noundef ptr @_ZNK3MIR11TypeResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %3645)
          to label %3647 unwind label %3658

3647:                                             ; preds = %3644
  store ptr %3646, ptr %305, align 8, !tbaa !5
  %3648 = icmp ne ptr %3646, null
  br i1 %3648, label %3649, label %3662

3649:                                             ; preds = %3647
  br label %3708

3650:                                             ; preds = %3639
  %3651 = landingpad { ptr, i32 }
          cleanup
  %3652 = extractvalue { ptr, i32 } %3651, 0
  store ptr %3652, ptr %14, align 8
  %3653 = extractvalue { ptr, i32 } %3651, 1
  store i32 %3653, ptr %15, align 4
  br label %3796

3654:                                             ; preds = %3640
  %3655 = landingpad { ptr, i32 }
          cleanup
  %3656 = extractvalue { ptr, i32 } %3655, 0
  store ptr %3656, ptr %14, align 8
  %3657 = extractvalue { ptr, i32 } %3655, 1
  store i32 %3657, ptr %15, align 4
  br label %3795

3658:                                             ; preds = %3684, %3681, %3678, %3675, %3671, %3668, %3665, %3662, %3644
  %3659 = landingpad { ptr, i32 }
          cleanup
  %3660 = extractvalue { ptr, i32 } %3659, 0
  store ptr %3660, ptr %14, align 8
  %3661 = extractvalue { ptr, i32 } %3659, 1
  store i32 %3661, ptr %15, align 4
  br label %3794

3662:                                             ; preds = %3647
  %3663 = load ptr, ptr %304, align 8, !tbaa !5
  %3664 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3663)
          to label %3665 unwind label %3658

3665:                                             ; preds = %3662
  %3666 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %3664)
          to label %3667 unwind label %3658

3667:                                             ; preds = %3665
  br i1 %3666, label %3668, label %3675

3668:                                             ; preds = %3667
  %3669 = load ptr, ptr %304, align 8, !tbaa !5
  %3670 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3669)
          to label %3671 unwind label %3658

3671:                                             ; preds = %3668
  %3672 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %3670)
          to label %3673 unwind label %3658

3673:                                             ; preds = %3671
  %3674 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %3672, i32 0, i32 2
  store ptr %3674, ptr %305, align 8, !tbaa !5
  br label %3707

3675:                                             ; preds = %3667
  %3676 = load ptr, ptr %304, align 8, !tbaa !5
  %3677 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3676)
          to label %3678 unwind label %3658

3678:                                             ; preds = %3675
  %3679 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %3677)
          to label %3680 unwind label %3658

3680:                                             ; preds = %3678
  br i1 %3679, label %3681, label %3688

3681:                                             ; preds = %3680
  %3682 = load ptr, ptr %304, align 8, !tbaa !5
  %3683 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3682)
          to label %3684 unwind label %3658

3684:                                             ; preds = %3681
  %3685 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %3683)
          to label %3686 unwind label %3658

3686:                                             ; preds = %3684
  %3687 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %3685, i32 0, i32 1
  store ptr %3687, ptr %305, align 8, !tbaa !5
  br label %3706

3688:                                             ; preds = %3680
  br label %3689

3689:                                             ; preds = %3688
  call void @llvm.lifetime.start.p0(i64 8, ptr %306) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %306, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %308) #8
  %3690 = getelementptr inbounds %class.anon.284, ptr %308, i32 0, i32 0
  store ptr %306, ptr %3690, align 8, !tbaa !5
  %3691 = getelementptr inbounds %class.anon.284, ptr %308, i32 0, i32 1
  %3692 = load ptr, ptr %304, align 8, !tbaa !5
  store ptr %3692, ptr %3691, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_47vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %307, ptr noundef nonnull align 8 dereferenceable(16) %308) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %307)
          to label %3693 unwind label %3695

3693:                                             ; preds = %3689
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %307) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %308) #8
  %3694 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %3694, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3694, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %3699

3695:                                             ; preds = %3689
  %3696 = landingpad { ptr, i32 }
          cleanup
  %3697 = extractvalue { ptr, i32 } %3696, 0
  store ptr %3697, ptr %14, align 8
  %3698 = extractvalue { ptr, i32 } %3696, 1
  store i32 %3698, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %307) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %308) #8
  br label %3703

3699:                                             ; preds = %3693
  %3700 = landingpad { ptr, i32 }
          cleanup
  %3701 = extractvalue { ptr, i32 } %3700, 0
  store ptr %3701, ptr %14, align 8
  %3702 = extractvalue { ptr, i32 } %3700, 1
  store i32 %3702, ptr %15, align 4
  br label %3703

3703:                                             ; preds = %3699, %3695
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #8
  br label %3794

3704:                                             ; No predecessors!
  br label %3705

3705:                                             ; preds = %3704
  br label %3706

3706:                                             ; preds = %3705, %3686
  br label %3707

3707:                                             ; preds = %3706, %3673
  br label %3708

3708:                                             ; preds = %3707, %3649
  call void @llvm.lifetime.start.p0(i64 8, ptr %309) #8
  %3709 = load ptr, ptr %305, align 8, !tbaa !5
  store ptr %3709, ptr %309, align 8, !tbaa !5
  %3710 = load ptr, ptr %309, align 8, !tbaa !5
  %3711 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3710)
          to label %3712 unwind label %3730

3712:                                             ; preds = %3708
  %3713 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %3711)
          to label %3714 unwind label %3730

3714:                                             ; preds = %3712
  br i1 %3713, label %3729, label %3715

3715:                                             ; preds = %3714
  %3716 = load ptr, ptr %309, align 8, !tbaa !5
  %3717 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3716)
          to label %3718 unwind label %3730

3718:                                             ; preds = %3715
  %3719 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %3717)
          to label %3720 unwind label %3730

3720:                                             ; preds = %3718
  br i1 %3719, label %3721, label %3734

3721:                                             ; preds = %3720
  %3722 = load ptr, ptr %309, align 8, !tbaa !5
  %3723 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3722)
          to label %3724 unwind label %3730

3724:                                             ; preds = %3721
  %3725 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %3723)
          to label %3726 unwind label %3730

3726:                                             ; preds = %3724
  %3727 = load i32, ptr %3725, align 4, !tbaa !69
  %3728 = icmp eq i32 %3727, 16
  br i1 %3728, label %3729, label %3734

3729:                                             ; preds = %3726, %3714
  br label %3791

3730:                                             ; preds = %3766, %3763, %3758, %3756, %3753, %3750, %3747, %3744, %3741, %3737, %3734, %3724, %3721, %3718, %3715, %3712, %3708
  %3731 = landingpad { ptr, i32 }
          cleanup
  %3732 = extractvalue { ptr, i32 } %3731, 0
  store ptr %3732, ptr %14, align 8
  %3733 = extractvalue { ptr, i32 } %3731, 1
  store i32 %3733, ptr %15, align 4
  br label %3793

3734:                                             ; preds = %3726, %3720
  %3735 = load ptr, ptr %309, align 8, !tbaa !5
  %3736 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3735)
          to label %3737 unwind label %3730

3737:                                             ; preds = %3734
  %3738 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %3736)
          to label %3739 unwind label %3730

3739:                                             ; preds = %3737
  br i1 %3738, label %3740, label %3741

3740:                                             ; preds = %3739
  br label %3790

3741:                                             ; preds = %3739
  %3742 = load ptr, ptr %309, align 8, !tbaa !5
  %3743 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3742)
          to label %3744 unwind label %3730

3744:                                             ; preds = %3741
  %3745 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %3743)
          to label %3746 unwind label %3730

3746:                                             ; preds = %3744
  br i1 %3745, label %3762, label %3747

3747:                                             ; preds = %3746
  %3748 = load ptr, ptr %309, align 8, !tbaa !5
  %3749 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3748)
          to label %3750 unwind label %3730

3750:                                             ; preds = %3747
  %3751 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %3749)
          to label %3752 unwind label %3730

3752:                                             ; preds = %3750
  br i1 %3751, label %3753, label %3763

3753:                                             ; preds = %3752
  %3754 = load ptr, ptr %309, align 8, !tbaa !5
  %3755 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3754)
          to label %3756 unwind label %3730

3756:                                             ; preds = %3753
  %3757 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %3755)
          to label %3758 unwind label %3730

3758:                                             ; preds = %3756
  %3759 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %3757, i32 0, i32 1
  %3760 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %3759)
          to label %3761 unwind label %3730

3761:                                             ; preds = %3758
  br i1 %3760, label %3762, label %3763

3762:                                             ; preds = %3761, %3746
  br label %3789

3763:                                             ; preds = %3761, %3752
  %3764 = load ptr, ptr %309, align 8, !tbaa !5
  %3765 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3764)
          to label %3766 unwind label %3730

3766:                                             ; preds = %3763
  %3767 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %3765)
          to label %3768 unwind label %3730

3768:                                             ; preds = %3766
  br i1 %3767, label %3769, label %3770

3769:                                             ; preds = %3768
  br label %3788

3770:                                             ; preds = %3768
  br label %3771

3771:                                             ; preds = %3770
  call void @llvm.lifetime.start.p0(i64 8, ptr %310) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %310, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %312) #8
  %3772 = getelementptr inbounds %class.anon.285, ptr %312, i32 0, i32 0
  store ptr %310, ptr %3772, align 8, !tbaa !5
  %3773 = getelementptr inbounds %class.anon.285, ptr %312, i32 0, i32 1
  %3774 = load ptr, ptr %309, align 8, !tbaa !5
  store ptr %3774, ptr %3773, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_48vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %311, ptr noundef nonnull align 8 dereferenceable(16) %312) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %311)
          to label %3775 unwind label %3777

3775:                                             ; preds = %3771
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %311) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %312) #8
  %3776 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %3776, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3776, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %3781

3777:                                             ; preds = %3771
  %3778 = landingpad { ptr, i32 }
          cleanup
  %3779 = extractvalue { ptr, i32 } %3778, 0
  store ptr %3779, ptr %14, align 8
  %3780 = extractvalue { ptr, i32 } %3778, 1
  store i32 %3780, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %311) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %312) #8
  br label %3785

3781:                                             ; preds = %3775
  %3782 = landingpad { ptr, i32 }
          cleanup
  %3783 = extractvalue { ptr, i32 } %3782, 0
  store ptr %3783, ptr %14, align 8
  %3784 = extractvalue { ptr, i32 } %3782, 1
  store i32 %3784, ptr %15, align 4
  br label %3785

3785:                                             ; preds = %3781, %3777
  call void @llvm.lifetime.end.p0(i64 8, ptr %310) #8
  br label %3793

3786:                                             ; No predecessors!
  br label %3787

3787:                                             ; preds = %3786
  br label %3788

3788:                                             ; preds = %3787, %3769
  br label %3789

3789:                                             ; preds = %3788, %3762
  br label %3790

3790:                                             ; preds = %3789, %3740
  br label %3791

3791:                                             ; preds = %3790, %3729
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %303) #8
  br label %3792

3792:                                             ; preds = %3791
  store i8 0, ptr %301, align 1, !tbaa !31
  br label %3630, !llvm.loop !170

3793:                                             ; preds = %3785, %3730
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #8
  br label %3794

3794:                                             ; preds = %3793, %3703, %3658
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #8
  br label %3795

3795:                                             ; preds = %3794, %3654
  call void @llvm.lifetime.end.p0(i64 8, ptr %304) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %303) #8
  br label %3796

3796:                                             ; preds = %3795, %3650
  call void @llvm.lifetime.end.p0(i64 8, ptr %303) #8
  br label %3797

3797:                                             ; preds = %3796, %3635
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %301) #8
  br label %4162

3798:                                             ; preds = %3634
  br label %3799

3799:                                             ; preds = %3798
  store i8 0, ptr %301, align 1, !tbaa !31
  br label %3622, !llvm.loop !171

3800:                                             ; preds = %3625
  br label %4160

3801:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %313) #8
  store i8 1, ptr %313, align 1, !tbaa !31
  br label %3802

3802:                                             ; preds = %3943, %3801
  %3803 = load i8, ptr %313, align 1, !tbaa !31, !range !65, !noundef !66
  %3804 = trunc i8 %3803 to i1
  br i1 %3804, label %3806, label %3805

3805:                                             ; preds = %3802
  store i32 415, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %313) #8
  br label %3944

3806:                                             ; preds = %3802
  call void @llvm.lifetime.start.p0(i64 8, ptr %314) #8
  %3807 = load ptr, ptr %108, align 8, !tbaa !5
  %3808 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %3807)
          to label %3809 unwind label %3815

3809:                                             ; preds = %3806
  store ptr %3808, ptr %314, align 8, !tbaa !5
  br label %3810

3810:                                             ; preds = %3936, %3809
  %3811 = load ptr, ptr %314, align 8, !tbaa !5
  %3812 = load i8, ptr %313, align 1, !tbaa !31, !range !65, !noundef !66
  %3813 = trunc i8 %3812 to i1
  br i1 %3813, label %3819, label %3814

3814:                                             ; preds = %3810
  store i32 418, ptr %47, align 4
  br label %3940

3815:                                             ; preds = %3835, %3831, %3828, %3824, %3819, %3806
  %3816 = landingpad { ptr, i32 }
          cleanup
  %3817 = extractvalue { ptr, i32 } %3816, 0
  store ptr %3817, ptr %14, align 8
  %3818 = extractvalue { ptr, i32 } %3816, 1
  store i32 %3818, ptr %15, align 4
  br label %3941

3819:                                             ; preds = %3810
  %3820 = load ptr, ptr %314, align 8, !tbaa !5
  %3821 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %3820, i32 0, i32 1
  %3822 = invoke noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %3821)
          to label %3823 unwind label %3815

3823:                                             ; preds = %3819
  br i1 %3822, label %3824, label %3841

3824:                                             ; preds = %3823
  %3825 = load ptr, ptr %314, align 8, !tbaa !5
  %3826 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %3825, i32 0, i32 1
  %3827 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %3826)
          to label %3828 unwind label %3815

3828:                                             ; preds = %3824
  %3829 = invoke noundef zeroext i1 @_ZNK3MIR8Constant11is_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %3827)
          to label %3830 unwind label %3815

3830:                                             ; preds = %3828
  br i1 %3829, label %3831, label %3841

3831:                                             ; preds = %3830
  %3832 = load ptr, ptr %314, align 8, !tbaa !5
  %3833 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %3832, i32 0, i32 1
  %3834 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %3833)
          to label %3835 unwind label %3815

3835:                                             ; preds = %3831
  %3836 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR8Constant11as_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %3834)
          to label %3837 unwind label %3815

3837:                                             ; preds = %3835
  %3838 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %3836) #8
  %3839 = icmp eq ptr %3838, null
  br i1 %3839, label %3840, label %3841

3840:                                             ; preds = %3837
  store i32 418, ptr %47, align 4
  br label %3940

3841:                                             ; preds = %3837, %3830, %3823
  call void @llvm.lifetime.start.p0(i64 8, ptr %315) #8
  store ptr null, ptr %315, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %316) #8
  %3842 = load ptr, ptr %105, align 8, !tbaa !5
  %3843 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3842)
          to label %3844 unwind label %3852

3844:                                             ; preds = %3841
  %3845 = invoke noundef ptr @_ZNK3HIR8TypeData10opt_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %3843)
          to label %3846 unwind label %3852

3846:                                             ; preds = %3844
  store ptr %3845, ptr %316, align 8, !tbaa !5
  %3847 = load ptr, ptr %316, align 8, !tbaa !5
  %3848 = icmp ne ptr %3847, null
  br i1 %3848, label %3849, label %3856

3849:                                             ; preds = %3846
  %3850 = load ptr, ptr %316, align 8, !tbaa !5
  %3851 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %3850, i32 0, i32 2
  store ptr %3851, ptr %315, align 8, !tbaa !5
  br label %3891

3852:                                             ; preds = %3844, %3841
  %3853 = landingpad { ptr, i32 }
          cleanup
  %3854 = extractvalue { ptr, i32 } %3853, 0
  store ptr %3854, ptr %14, align 8
  %3855 = extractvalue { ptr, i32 } %3853, 1
  store i32 %3855, ptr %15, align 4
  br label %3896

3856:                                             ; preds = %3846
  call void @llvm.lifetime.start.p0(i64 8, ptr %317) #8
  %3857 = load ptr, ptr %105, align 8, !tbaa !5
  %3858 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3857)
          to label %3859 unwind label %3867

3859:                                             ; preds = %3856
  %3860 = invoke noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %3858)
          to label %3861 unwind label %3867

3861:                                             ; preds = %3859
  store ptr %3860, ptr %317, align 8, !tbaa !5
  %3862 = load ptr, ptr %317, align 8, !tbaa !5
  %3863 = icmp ne ptr %3862, null
  br i1 %3863, label %3864, label %3871

3864:                                             ; preds = %3861
  %3865 = load ptr, ptr %317, align 8, !tbaa !5
  %3866 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %3865, i32 0, i32 1
  store ptr %3866, ptr %315, align 8, !tbaa !5
  br label %3889

3867:                                             ; preds = %3859, %3856
  %3868 = landingpad { ptr, i32 }
          cleanup
  %3869 = extractvalue { ptr, i32 } %3868, 0
  store ptr %3869, ptr %14, align 8
  %3870 = extractvalue { ptr, i32 } %3868, 1
  store i32 %3870, ptr %15, align 4
  br label %3890

3871:                                             ; preds = %3861
  br label %3872

3872:                                             ; preds = %3871
  call void @llvm.lifetime.start.p0(i64 8, ptr %318) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %318, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %320) #8
  %3873 = getelementptr inbounds %class.anon.286, ptr %320, i32 0, i32 0
  store ptr %318, ptr %3873, align 8, !tbaa !5
  %3874 = getelementptr inbounds %class.anon.286, ptr %320, i32 0, i32 1
  %3875 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3875, ptr %3874, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_49vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %319, ptr noundef nonnull align 8 dereferenceable(16) %320) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %319)
          to label %3876 unwind label %3878

3876:                                             ; preds = %3872
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %319) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %320) #8
  %3877 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %3877, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3877, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %3882

3878:                                             ; preds = %3872
  %3879 = landingpad { ptr, i32 }
          cleanup
  %3880 = extractvalue { ptr, i32 } %3879, 0
  store ptr %3880, ptr %14, align 8
  %3881 = extractvalue { ptr, i32 } %3879, 1
  store i32 %3881, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %319) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %320) #8
  br label %3886

3882:                                             ; preds = %3876
  %3883 = landingpad { ptr, i32 }
          cleanup
  %3884 = extractvalue { ptr, i32 } %3883, 0
  store ptr %3884, ptr %14, align 8
  %3885 = extractvalue { ptr, i32 } %3883, 1
  store i32 %3885, ptr %15, align 4
  br label %3886

3886:                                             ; preds = %3882, %3878
  call void @llvm.lifetime.end.p0(i64 8, ptr %318) #8
  br label %3890

3887:                                             ; No predecessors!
  br label %3888

3888:                                             ; preds = %3887
  br label %3889

3889:                                             ; preds = %3888, %3864
  call void @llvm.lifetime.end.p0(i64 8, ptr %317) #8
  br label %3891

3890:                                             ; preds = %3886, %3867
  call void @llvm.lifetime.end.p0(i64 8, ptr %317) #8
  br label %3896

3891:                                             ; preds = %3889, %3849
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #8
  %3892 = load ptr, ptr %315, align 8, !tbaa !5
  %3893 = icmp ne ptr %3892, null
  br i1 %3893, label %3894, label %3895

3894:                                             ; preds = %3891
  br label %3898

3895:                                             ; preds = %3891
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.1, i32 noundef 1094, ptr noundef @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

3896:                                             ; preds = %3890, %3852
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #8
  br label %3939

3897:                                             ; No predecessors!
  br label %3898

3898:                                             ; preds = %3897, %3894
  call void @llvm.lifetime.start.p0(i64 8, ptr %321) #8
  %3899 = load ptr, ptr %315, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_117get_metadata_typeERKN3MIR11TypeResolveERKN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %321, ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %3899)
          to label %3900 unwind label %3911

3900:                                             ; preds = %3898
  call void @llvm.lifetime.start.p0(i64 8, ptr %322) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %322)
          to label %3901 unwind label %3915

3901:                                             ; preds = %3900
  %3902 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull align 8 dereferenceable(8) %322)
          to label %3903 unwind label %3919

3903:                                             ; preds = %3901
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %322) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %322) #8
  br i1 %3902, label %3904, label %3935

3904:                                             ; preds = %3903
  br label %3905

3905:                                             ; preds = %3904
  call void @llvm.lifetime.start.p0(i64 8, ptr %323) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %323, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %325) #8
  %3906 = getelementptr inbounds %class.anon.287, ptr %325, i32 0, i32 0
  store ptr %323, ptr %3906, align 8, !tbaa !5
  %3907 = getelementptr inbounds %class.anon.287, ptr %325, i32 0, i32 1
  %3908 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3908, ptr %3907, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_50vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %324, ptr noundef nonnull align 8 dereferenceable(16) %325) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %324)
          to label %3909 unwind label %3924

3909:                                             ; preds = %3905
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %324) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %325) #8
  %3910 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %3910, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3910, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %3928

3911:                                             ; preds = %3898
  %3912 = landingpad { ptr, i32 }
          cleanup
  %3913 = extractvalue { ptr, i32 } %3912, 0
  store ptr %3913, ptr %14, align 8
  %3914 = extractvalue { ptr, i32 } %3912, 1
  store i32 %3914, ptr %15, align 4
  br label %3938

3915:                                             ; preds = %3900
  %3916 = landingpad { ptr, i32 }
          cleanup
  %3917 = extractvalue { ptr, i32 } %3916, 0
  store ptr %3917, ptr %14, align 8
  %3918 = extractvalue { ptr, i32 } %3916, 1
  store i32 %3918, ptr %15, align 4
  br label %3923

3919:                                             ; preds = %3901
  %3920 = landingpad { ptr, i32 }
          cleanup
  %3921 = extractvalue { ptr, i32 } %3920, 0
  store ptr %3921, ptr %14, align 8
  %3922 = extractvalue { ptr, i32 } %3920, 1
  store i32 %3922, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %322) #8
  br label %3923

3923:                                             ; preds = %3919, %3915
  call void @llvm.lifetime.end.p0(i64 8, ptr %322) #8
  br label %3937

3924:                                             ; preds = %3905
  %3925 = landingpad { ptr, i32 }
          cleanup
  %3926 = extractvalue { ptr, i32 } %3925, 0
  store ptr %3926, ptr %14, align 8
  %3927 = extractvalue { ptr, i32 } %3925, 1
  store i32 %3927, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %324) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %325) #8
  br label %3932

3928:                                             ; preds = %3909
  %3929 = landingpad { ptr, i32 }
          cleanup
  %3930 = extractvalue { ptr, i32 } %3929, 0
  store ptr %3930, ptr %14, align 8
  %3931 = extractvalue { ptr, i32 } %3929, 1
  store i32 %3931, ptr %15, align 4
  br label %3932

3932:                                             ; preds = %3928, %3924
  call void @llvm.lifetime.end.p0(i64 8, ptr %323) #8
  br label %3937

3933:                                             ; No predecessors!
  br label %3934

3934:                                             ; preds = %3933
  br label %3935

3935:                                             ; preds = %3934, %3903
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #8
  br label %3936

3936:                                             ; preds = %3935
  store i8 0, ptr %313, align 1, !tbaa !31
  br label %3810, !llvm.loop !172

3937:                                             ; preds = %3932, %3923
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #8
  br label %3938

3938:                                             ; preds = %3937, %3911
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #8
  br label %3939

3939:                                             ; preds = %3938, %3896
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #8
  br label %3941

3940:                                             ; preds = %3840, %3814
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #8
  br label %3942

3941:                                             ; preds = %3939, %3815
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %313) #8
  br label %4162

3942:                                             ; preds = %3940
  br label %3943

3943:                                             ; preds = %3942
  store i8 0, ptr %313, align 1, !tbaa !31
  br label %3802, !llvm.loop !173

3944:                                             ; preds = %3805
  br label %4160

3945:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %326) #8
  store i8 1, ptr %326, align 1, !tbaa !31
  br label %3946

3946:                                             ; preds = %4066, %3945
  %3947 = load i8, ptr %326, align 1, !tbaa !31, !range !65, !noundef !66
  %3948 = trunc i8 %3947 to i1
  br i1 %3948, label %3950, label %3949

3949:                                             ; preds = %3946
  store i32 425, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %326) #8
  br label %4067

3950:                                             ; preds = %3946
  call void @llvm.lifetime.start.p0(i64 8, ptr %327) #8
  %3951 = load ptr, ptr %108, align 8, !tbaa !5
  %3952 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %3951)
          to label %3953 unwind label %3959

3953:                                             ; preds = %3950
  store ptr %3952, ptr %327, align 8, !tbaa !5
  br label %3954

3954:                                             ; preds = %4062, %3953
  %3955 = load ptr, ptr %327, align 8, !tbaa !5
  %3956 = load i8, ptr %326, align 1, !tbaa !31, !range !65, !noundef !66
  %3957 = trunc i8 %3956 to i1
  br i1 %3957, label %3963, label %3958

3958:                                             ; preds = %3954
  store i32 428, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #8
  br label %4065

3959:                                             ; preds = %3966, %3963, %3950
  %3960 = landingpad { ptr, i32 }
          cleanup
  %3961 = extractvalue { ptr, i32 } %3960, 0
  store ptr %3961, ptr %14, align 8
  %3962 = extractvalue { ptr, i32 } %3960, 1
  store i32 %3962, ptr %15, align 4
  br label %4064

3963:                                             ; preds = %3954
  %3964 = load ptr, ptr %105, align 8, !tbaa !5
  %3965 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3964)
          to label %3966 unwind label %3959

3966:                                             ; preds = %3963
  %3967 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %3965)
          to label %3968 unwind label %3959

3968:                                             ; preds = %3966
  br i1 %3967, label %3987, label %3969

3969:                                             ; preds = %3968
  br label %3970

3970:                                             ; preds = %3969
  call void @llvm.lifetime.start.p0(i64 8, ptr %328) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %328, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %330) #8
  %3971 = getelementptr inbounds %class.anon.288, ptr %330, i32 0, i32 0
  store ptr %328, ptr %3971, align 8, !tbaa !5
  %3972 = getelementptr inbounds %class.anon.288, ptr %330, i32 0, i32 1
  %3973 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %3973, ptr %3972, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_51vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %329, ptr noundef nonnull align 8 dereferenceable(16) %330) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %329)
          to label %3974 unwind label %3976

3974:                                             ; preds = %3970
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %329) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %330) #8
  %3975 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %3975, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %3975, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %3980

3976:                                             ; preds = %3970
  %3977 = landingpad { ptr, i32 }
          cleanup
  %3978 = extractvalue { ptr, i32 } %3977, 0
  store ptr %3978, ptr %14, align 8
  %3979 = extractvalue { ptr, i32 } %3977, 1
  store i32 %3979, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %329) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %330) #8
  br label %3984

3980:                                             ; preds = %3974
  %3981 = landingpad { ptr, i32 }
          cleanup
  %3982 = extractvalue { ptr, i32 } %3981, 0
  store ptr %3982, ptr %14, align 8
  %3983 = extractvalue { ptr, i32 } %3981, 1
  store i32 %3983, ptr %15, align 4
  br label %3984

3984:                                             ; preds = %3980, %3976
  call void @llvm.lifetime.end.p0(i64 8, ptr %328) #8
  br label %4064

3985:                                             ; No predecessors!
  br label %3986

3986:                                             ; preds = %3985
  br label %3987

3987:                                             ; preds = %3986, %3968
  call void @llvm.lifetime.start.p0(i64 8, ptr %331) #8
  %3988 = load ptr, ptr %105, align 8, !tbaa !5
  %3989 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3988)
          to label %3990 unwind label %4009

3990:                                             ; preds = %3987
  %3991 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %3989)
          to label %3992 unwind label %4009

3992:                                             ; preds = %3990
  store ptr %3991, ptr %331, align 8, !tbaa !5
  %3993 = load ptr, ptr %331, align 8, !tbaa !5
  %3994 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3993) #8
  %3995 = load ptr, ptr %327, align 8, !tbaa !5
  %3996 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %3995, i32 0, i32 0
  %3997 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3996) #8
  %3998 = icmp ne i64 %3994, %3997
  br i1 %3998, label %3999, label %4029

3999:                                             ; preds = %3992
  br label %4000

4000:                                             ; preds = %3999
  call void @llvm.lifetime.start.p0(i64 8, ptr %332) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %332, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %334) #8
  %4001 = getelementptr inbounds %class.anon.289, ptr %334, i32 0, i32 0
  store ptr %332, ptr %4001, align 8, !tbaa !5
  %4002 = getelementptr inbounds %class.anon.289, ptr %334, i32 0, i32 1
  %4003 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %4003, ptr %4002, align 8, !tbaa !5
  %4004 = getelementptr inbounds %class.anon.289, ptr %334, i32 0, i32 2
  %4005 = load ptr, ptr %327, align 8, !tbaa !5
  store ptr %4005, ptr %4004, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_52vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %333, ptr noundef nonnull align 8 dereferenceable(24) %334)
          to label %4006 unwind label %4013

4006:                                             ; preds = %4000
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %333)
          to label %4007 unwind label %4017

4007:                                             ; preds = %4006
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %333) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %334) #8
  %4008 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %4008, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %4008, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %4022

4009:                                             ; preds = %3990, %3987
  %4010 = landingpad { ptr, i32 }
          cleanup
  %4011 = extractvalue { ptr, i32 } %4010, 0
  store ptr %4011, ptr %14, align 8
  %4012 = extractvalue { ptr, i32 } %4010, 1
  store i32 %4012, ptr %15, align 4
  br label %4063

4013:                                             ; preds = %4000
  %4014 = landingpad { ptr, i32 }
          cleanup
  %4015 = extractvalue { ptr, i32 } %4014, 0
  store ptr %4015, ptr %14, align 8
  %4016 = extractvalue { ptr, i32 } %4014, 1
  store i32 %4016, ptr %15, align 4
  br label %4021

4017:                                             ; preds = %4006
  %4018 = landingpad { ptr, i32 }
          cleanup
  %4019 = extractvalue { ptr, i32 } %4018, 0
  store ptr %4019, ptr %14, align 8
  %4020 = extractvalue { ptr, i32 } %4018, 1
  store i32 %4020, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %333) #8
  br label %4021

4021:                                             ; preds = %4017, %4013
  call void @llvm.lifetime.end.p0(i64 24, ptr %334) #8
  br label %4026

4022:                                             ; preds = %4007
  %4023 = landingpad { ptr, i32 }
          cleanup
  %4024 = extractvalue { ptr, i32 } %4023, 0
  store ptr %4024, ptr %14, align 8
  %4025 = extractvalue { ptr, i32 } %4023, 1
  store i32 %4025, ptr %15, align 4
  br label %4026

4026:                                             ; preds = %4022, %4021
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #8
  br label %4063

4027:                                             ; No predecessors!
  br label %4028

4028:                                             ; preds = %4027
  br label %4029

4029:                                             ; preds = %4028, %3992
  call void @llvm.lifetime.start.p0(i64 8, ptr %335) #8
  store i64 0, ptr %335, align 8, !tbaa !174
  br label %4030

4030:                                             ; preds = %4049, %4029
  %4031 = load i64, ptr %335, align 8, !tbaa !174
  %4032 = load ptr, ptr %327, align 8, !tbaa !5
  %4033 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %4032, i32 0, i32 0
  %4034 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4033) #8
  %4035 = icmp ult i64 %4031, %4034
  br i1 %4035, label %4037, label %4036

4036:                                             ; preds = %4030
  store i32 435, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %335) #8
  br label %4061

4037:                                             ; preds = %4030
  call void @llvm.lifetime.start.p0(i64 8, ptr %336) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %336)
          to label %4038 unwind label %4052

4038:                                             ; preds = %4037
  %4039 = load ptr, ptr %331, align 8, !tbaa !5
  %4040 = load i64, ptr %335, align 8, !tbaa !174
  %4041 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4039, i64 noundef %4040) #8
  %4042 = load ptr, ptr %327, align 8, !tbaa !5
  %4043 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %4042, i32 0, i32 0
  %4044 = load i64, ptr %335, align 8, !tbaa !174
  %4045 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4043, i64 noundef %4044) #8
  %4046 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull align 8 dereferenceable(48) %4045)
          to label %4047 unwind label %4056

4047:                                             ; preds = %4038
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %4041, ptr noundef nonnull align 8 dereferenceable(8) %4046)
          to label %4048 unwind label %4056

4048:                                             ; preds = %4047
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %336) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %336) #8
  br label %4049

4049:                                             ; preds = %4048
  %4050 = load i64, ptr %335, align 8, !tbaa !174
  %4051 = add i64 %4050, 1
  store i64 %4051, ptr %335, align 8, !tbaa !174
  br label %4030, !llvm.loop !175

4052:                                             ; preds = %4037
  %4053 = landingpad { ptr, i32 }
          cleanup
  %4054 = extractvalue { ptr, i32 } %4053, 0
  store ptr %4054, ptr %14, align 8
  %4055 = extractvalue { ptr, i32 } %4053, 1
  store i32 %4055, ptr %15, align 4
  br label %4060

4056:                                             ; preds = %4047, %4038
  %4057 = landingpad { ptr, i32 }
          cleanup
  %4058 = extractvalue { ptr, i32 } %4057, 0
  store ptr %4058, ptr %14, align 8
  %4059 = extractvalue { ptr, i32 } %4057, 1
  store i32 %4059, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %336) #8
  br label %4060

4060:                                             ; preds = %4056, %4052
  call void @llvm.lifetime.end.p0(i64 8, ptr %336) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %335) #8
  br label %4063

4061:                                             ; preds = %4036
  call void @llvm.lifetime.end.p0(i64 8, ptr %331) #8
  br label %4062

4062:                                             ; preds = %4061
  store i8 0, ptr %326, align 1, !tbaa !31
  br label %3954, !llvm.loop !176

4063:                                             ; preds = %4060, %4026, %4009
  call void @llvm.lifetime.end.p0(i64 8, ptr %331) #8
  br label %4064

4064:                                             ; preds = %4063, %3984, %3959
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %326) #8
  br label %4162

4065:                                             ; preds = %3958
  br label %4066

4066:                                             ; preds = %4065
  store i8 0, ptr %326, align 1, !tbaa !31
  br label %3946, !llvm.loop !177

4067:                                             ; preds = %3949
  br label %4160

4068:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %337) #8
  store i8 1, ptr %337, align 1, !tbaa !31
  br label %4069

4069:                                             ; preds = %4089, %4068
  %4070 = load i8, ptr %337, align 1, !tbaa !31, !range !65, !noundef !66
  %4071 = trunc i8 %4070 to i1
  br i1 %4071, label %4073, label %4072

4072:                                             ; preds = %4069
  store i32 438, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %337) #8
  br label %4090

4073:                                             ; preds = %4069
  call void @llvm.lifetime.start.p0(i64 8, ptr %338) #8
  %4074 = load ptr, ptr %108, align 8, !tbaa !5
  %4075 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %4074)
          to label %4076 unwind label %4082

4076:                                             ; preds = %4073
  store ptr %4075, ptr %338, align 8, !tbaa !5
  br label %4077

4077:                                             ; preds = %4087, %4076
  %4078 = load ptr, ptr %338, align 8, !tbaa !5
  %4079 = load i8, ptr %337, align 1, !tbaa !31, !range !65, !noundef !66
  %4080 = trunc i8 %4079 to i1
  br i1 %4080, label %4086, label %4081

4081:                                             ; preds = %4077
  store i32 441, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %338) #8
  br label %4088

4082:                                             ; preds = %4073
  %4083 = landingpad { ptr, i32 }
          cleanup
  %4084 = extractvalue { ptr, i32 } %4083, 0
  store ptr %4084, ptr %14, align 8
  %4085 = extractvalue { ptr, i32 } %4083, 1
  store i32 %4085, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %338) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %337) #8
  br label %4162

4086:                                             ; preds = %4077
  br label %4087

4087:                                             ; preds = %4086
  store i8 0, ptr %337, align 1, !tbaa !31
  br label %4077, !llvm.loop !178

4088:                                             ; preds = %4081
  br label %4089

4089:                                             ; preds = %4088
  store i8 0, ptr %337, align 1, !tbaa !31
  br label %4069, !llvm.loop !179

4090:                                             ; preds = %4072
  br label %4160

4091:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %339) #8
  store i8 1, ptr %339, align 1, !tbaa !31
  br label %4092

4092:                                             ; preds = %4112, %4091
  %4093 = load i8, ptr %339, align 1, !tbaa !31, !range !65, !noundef !66
  %4094 = trunc i8 %4093 to i1
  br i1 %4094, label %4096, label %4095

4095:                                             ; preds = %4092
  store i32 444, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %339) #8
  br label %4113

4096:                                             ; preds = %4092
  call void @llvm.lifetime.start.p0(i64 8, ptr %340) #8
  %4097 = load ptr, ptr %108, align 8, !tbaa !5
  %4098 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %4097)
          to label %4099 unwind label %4105

4099:                                             ; preds = %4096
  store ptr %4098, ptr %340, align 8, !tbaa !5
  br label %4100

4100:                                             ; preds = %4110, %4099
  %4101 = load ptr, ptr %340, align 8, !tbaa !5
  %4102 = load i8, ptr %339, align 1, !tbaa !31, !range !65, !noundef !66
  %4103 = trunc i8 %4102 to i1
  br i1 %4103, label %4109, label %4104

4104:                                             ; preds = %4100
  store i32 447, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %340) #8
  br label %4111

4105:                                             ; preds = %4096
  %4106 = landingpad { ptr, i32 }
          cleanup
  %4107 = extractvalue { ptr, i32 } %4106, 0
  store ptr %4107, ptr %14, align 8
  %4108 = extractvalue { ptr, i32 } %4106, 1
  store i32 %4108, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %340) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %339) #8
  br label %4162

4109:                                             ; preds = %4100
  br label %4110

4110:                                             ; preds = %4109
  store i8 0, ptr %339, align 1, !tbaa !31
  br label %4100, !llvm.loop !180

4111:                                             ; preds = %4104
  br label %4112

4112:                                             ; preds = %4111
  store i8 0, ptr %339, align 1, !tbaa !31
  br label %4092, !llvm.loop !181

4113:                                             ; preds = %4095
  br label %4160

4114:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %341) #8
  store i8 1, ptr %341, align 1, !tbaa !31
  br label %4115

4115:                                             ; preds = %4135, %4114
  %4116 = load i8, ptr %341, align 1, !tbaa !31, !range !65, !noundef !66
  %4117 = trunc i8 %4116 to i1
  br i1 %4117, label %4119, label %4118

4118:                                             ; preds = %4115
  store i32 450, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %341) #8
  br label %4136

4119:                                             ; preds = %4115
  call void @llvm.lifetime.start.p0(i64 8, ptr %342) #8
  %4120 = load ptr, ptr %108, align 8, !tbaa !5
  %4121 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %4120)
          to label %4122 unwind label %4128

4122:                                             ; preds = %4119
  store ptr %4121, ptr %342, align 8, !tbaa !5
  br label %4123

4123:                                             ; preds = %4133, %4122
  %4124 = load ptr, ptr %342, align 8, !tbaa !5
  %4125 = load i8, ptr %341, align 1, !tbaa !31, !range !65, !noundef !66
  %4126 = trunc i8 %4125 to i1
  br i1 %4126, label %4132, label %4127

4127:                                             ; preds = %4123
  store i32 453, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %342) #8
  br label %4134

4128:                                             ; preds = %4119
  %4129 = landingpad { ptr, i32 }
          cleanup
  %4130 = extractvalue { ptr, i32 } %4129, 0
  store ptr %4130, ptr %14, align 8
  %4131 = extractvalue { ptr, i32 } %4129, 1
  store i32 %4131, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %342) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %341) #8
  br label %4162

4132:                                             ; preds = %4123
  br label %4133

4133:                                             ; preds = %4132
  store i8 0, ptr %341, align 1, !tbaa !31
  br label %4123, !llvm.loop !182

4134:                                             ; preds = %4127
  br label %4135

4135:                                             ; preds = %4134
  store i8 0, ptr %341, align 1, !tbaa !31
  br label %4115, !llvm.loop !183

4136:                                             ; preds = %4118
  br label %4160

4137:                                             ; preds = %1540
  call void @llvm.lifetime.start.p0(i64 1, ptr %343) #8
  store i8 1, ptr %343, align 1, !tbaa !31
  br label %4138

4138:                                             ; preds = %4158, %4137
  %4139 = load i8, ptr %343, align 1, !tbaa !31, !range !65, !noundef !66
  %4140 = trunc i8 %4139 to i1
  br i1 %4140, label %4142, label %4141

4141:                                             ; preds = %4138
  store i32 456, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %343) #8
  br label %4159

4142:                                             ; preds = %4138
  call void @llvm.lifetime.start.p0(i64 8, ptr %344) #8
  %4143 = load ptr, ptr %108, align 8, !tbaa !5
  %4144 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %4143)
          to label %4145 unwind label %4151

4145:                                             ; preds = %4142
  store ptr %4144, ptr %344, align 8, !tbaa !5
  br label %4146

4146:                                             ; preds = %4156, %4145
  %4147 = load ptr, ptr %344, align 8, !tbaa !5
  %4148 = load i8, ptr %343, align 1, !tbaa !31, !range !65, !noundef !66
  %4149 = trunc i8 %4148 to i1
  br i1 %4149, label %4155, label %4150

4150:                                             ; preds = %4146
  store i32 459, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %344) #8
  br label %4157

4151:                                             ; preds = %4142
  %4152 = landingpad { ptr, i32 }
          cleanup
  %4153 = extractvalue { ptr, i32 } %4152, 0
  store ptr %4153, ptr %14, align 8
  %4154 = extractvalue { ptr, i32 } %4152, 1
  store i32 %4154, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %344) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %343) #8
  br label %4162

4155:                                             ; preds = %4146
  br label %4156

4156:                                             ; preds = %4155
  store i8 0, ptr %343, align 1, !tbaa !31
  br label %4146, !llvm.loop !184

4157:                                             ; preds = %4150
  br label %4158

4158:                                             ; preds = %4157
  store i8 0, ptr %343, align 1, !tbaa !31
  br label %4138, !llvm.loop !185

4159:                                             ; preds = %4141
  br label %4160

4160:                                             ; preds = %4159, %4136, %4113, %4090, %4067, %3944, %3800, %3620, %3416, %3393, %3370, %2587, %2532, %2509, %1584, %1540
  br label %4161

4161:                                             ; preds = %4160
  store i8 0, ptr %107, align 1, !tbaa !31
  br label %1533, !llvm.loop !186

4162:                                             ; preds = %4151, %4128, %4105, %4082, %4064, %3941, %3797, %3617, %3408, %3385, %3367, %2584, %2524, %2506, %1581, %1541
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  br label %4166

4163:                                             ; preds = %1536
  br label %4164

4164:                                             ; preds = %4163
  store i8 0, ptr %107, align 1, !tbaa !31
  br label %1514, !llvm.loop !187

4165:                                             ; preds = %1517
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %4170

4166:                                             ; preds = %4162, %1526
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  br label %4167

4167:                                             ; preds = %4166, %1522
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  br label %4168

4168:                                             ; preds = %4167, %1518
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %4174

4169:                                             ; preds = %1501, %1501
  br label %4170

4170:                                             ; preds = %4169, %4165, %1501, %1501, %1501, %1501
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  br label %4171

4171:                                             ; preds = %4170
  %4172 = load i32, ptr %101, align 4, !tbaa !29
  %4173 = add i32 %4172, 1
  store i32 %4173, ptr %101, align 4, !tbaa !29
  br label %1459, !llvm.loop !188

4174:                                             ; preds = %4168, %1492
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #8
  br label %4838

4175:                                             ; preds = %1466
  %4176 = load i32, ptr %99, align 4, !tbaa !29
  invoke void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %17, i32 noundef %4176)
          to label %4177 unwind label %4195

4177:                                             ; preds = %4175
  br label %4178

4178:                                             ; preds = %4177
  %4179 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %4180 unwind label %4195

4180:                                             ; preds = %4178
  br i1 %4179, label %4181, label %4199

4181:                                             ; preds = %4180
  %4182 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %4183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %4182, ptr noundef @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %4184 unwind label %4195

4184:                                             ; preds = %4181
  %4185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %4183, ptr noundef nonnull align 8 dereferenceable(120) %17)
          to label %4186 unwind label %4195

4186:                                             ; preds = %4184
  %4187 = load ptr, ptr %100, align 8, !tbaa !5
  %4188 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %4187, i32 0, i32 1
  %4189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %4185, ptr noundef nonnull align 8 dereferenceable(168) %4188)
          to label %4190 unwind label %4195

4190:                                             ; preds = %4186
  %4191 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %4189, ptr noundef @_ZSt3decRSt8ios_base)
          to label %4192 unwind label %4195

4192:                                             ; preds = %4190
  %4193 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %4191, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %4194 unwind label %4195

4194:                                             ; preds = %4192
  br label %4199

4195:                                             ; preds = %4192, %4190, %4186, %4184, %4181, %4178, %4175
  %4196 = landingpad { ptr, i32 }
          cleanup
  %4197 = extractvalue { ptr, i32 } %4196, 0
  store ptr %4197, ptr %14, align 8
  %4198 = extractvalue { ptr, i32 } %4196, 1
  store i32 %4198, ptr %15, align 4
  br label %4838

4199:                                             ; preds = %4194, %4180
  br label %4200

4200:                                             ; preds = %4199
  br label %4201

4201:                                             ; preds = %4200
  call void @llvm.lifetime.start.p0(i64 1, ptr %345) #8
  store i8 1, ptr %345, align 1, !tbaa !31
  br label %4202

4202:                                             ; preds = %4833, %4201
  %4203 = load i8, ptr %345, align 1, !tbaa !31, !range !65, !noundef !66
  %4204 = trunc i8 %4203 to i1
  br i1 %4204, label %4206, label %4205

4205:                                             ; preds = %4202
  store i32 464, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %345) #8
  br label %4834

4206:                                             ; preds = %4202
  call void @llvm.lifetime.start.p0(i64 8, ptr %346) #8
  %4207 = load ptr, ptr %100, align 8, !tbaa !5
  %4208 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %4207, i32 0, i32 1
  store ptr %4208, ptr %346, align 8, !tbaa !5
  br label %4209

4209:                                             ; preds = %4830, %4206
  %4210 = load i8, ptr %345, align 1, !tbaa !31, !range !65, !noundef !66
  %4211 = trunc i8 %4210 to i1
  br i1 %4211, label %4213, label %4212

4212:                                             ; preds = %4209
  store i32 467, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %346) #8
  br label %4832

4213:                                             ; preds = %4209
  %4214 = load ptr, ptr %346, align 8, !tbaa !5
  %4215 = invoke noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %4214)
          to label %4216 unwind label %4217

4216:                                             ; preds = %4213
  switch i32 %4215, label %4829 [
    i32 0, label %4221
    i32 1, label %4222
    i32 2, label %4245
    i32 3, label %4268
    i32 4, label %4291
    i32 5, label %4314
    i32 6, label %4337
    i32 7, label %4402
    i32 8, label %4425
    i32 9, label %4448
  ]

4217:                                             ; preds = %4213
  %4218 = landingpad { ptr, i32 }
          cleanup
  %4219 = extractvalue { ptr, i32 } %4218, 0
  store ptr %4219, ptr %14, align 8
  %4220 = extractvalue { ptr, i32 } %4218, 1
  store i32 %4220, ptr %15, align 4
  br label %4831

4221:                                             ; preds = %4216
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.1, i32 noundef 1145, ptr noundef @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

4222:                                             ; preds = %4216
  call void @llvm.lifetime.start.p0(i64 1, ptr %347) #8
  store i8 1, ptr %347, align 1, !tbaa !31
  br label %4223

4223:                                             ; preds = %4243, %4222
  %4224 = load i8, ptr %347, align 1, !tbaa !31, !range !65, !noundef !66
  %4225 = trunc i8 %4224 to i1
  br i1 %4225, label %4227, label %4226

4226:                                             ; preds = %4223
  store i32 471, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %347) #8
  br label %4244

4227:                                             ; preds = %4223
  call void @llvm.lifetime.start.p0(i64 8, ptr %348) #8
  %4228 = load ptr, ptr %346, align 8, !tbaa !5
  %4229 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %4228)
          to label %4230 unwind label %4236

4230:                                             ; preds = %4227
  store ptr %4229, ptr %348, align 8, !tbaa !5
  br label %4231

4231:                                             ; preds = %4241, %4230
  %4232 = load ptr, ptr %348, align 8, !tbaa !5
  %4233 = load i8, ptr %347, align 1, !tbaa !31, !range !65, !noundef !66
  %4234 = trunc i8 %4233 to i1
  br i1 %4234, label %4240, label %4235

4235:                                             ; preds = %4231
  store i32 474, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %348) #8
  br label %4242

4236:                                             ; preds = %4227
  %4237 = landingpad { ptr, i32 }
          cleanup
  %4238 = extractvalue { ptr, i32 } %4237, 0
  store ptr %4238, ptr %14, align 8
  %4239 = extractvalue { ptr, i32 } %4237, 1
  store i32 %4239, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %348) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %347) #8
  br label %4831

4240:                                             ; preds = %4231
  br label %4241

4241:                                             ; preds = %4240
  store i8 0, ptr %347, align 1, !tbaa !31
  br label %4231, !llvm.loop !189

4242:                                             ; preds = %4235
  br label %4243

4243:                                             ; preds = %4242
  store i8 0, ptr %347, align 1, !tbaa !31
  br label %4223, !llvm.loop !190

4244:                                             ; preds = %4226
  br label %4829

4245:                                             ; preds = %4216
  call void @llvm.lifetime.start.p0(i64 1, ptr %349) #8
  store i8 1, ptr %349, align 1, !tbaa !31
  br label %4246

4246:                                             ; preds = %4266, %4245
  %4247 = load i8, ptr %349, align 1, !tbaa !31, !range !65, !noundef !66
  %4248 = trunc i8 %4247 to i1
  br i1 %4248, label %4250, label %4249

4249:                                             ; preds = %4246
  store i32 477, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %349) #8
  br label %4267

4250:                                             ; preds = %4246
  call void @llvm.lifetime.start.p0(i64 8, ptr %350) #8
  %4251 = load ptr, ptr %346, align 8, !tbaa !5
  %4252 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %4251)
          to label %4253 unwind label %4259

4253:                                             ; preds = %4250
  store ptr %4252, ptr %350, align 8, !tbaa !5
  br label %4254

4254:                                             ; preds = %4264, %4253
  %4255 = load ptr, ptr %350, align 8, !tbaa !5
  %4256 = load i8, ptr %349, align 1, !tbaa !31, !range !65, !noundef !66
  %4257 = trunc i8 %4256 to i1
  br i1 %4257, label %4263, label %4258

4258:                                             ; preds = %4254
  store i32 480, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %350) #8
  br label %4265

4259:                                             ; preds = %4250
  %4260 = landingpad { ptr, i32 }
          cleanup
  %4261 = extractvalue { ptr, i32 } %4260, 0
  store ptr %4261, ptr %14, align 8
  %4262 = extractvalue { ptr, i32 } %4260, 1
  store i32 %4262, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %350) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %349) #8
  br label %4831

4263:                                             ; preds = %4254
  br label %4264

4264:                                             ; preds = %4263
  store i8 0, ptr %349, align 1, !tbaa !31
  br label %4254, !llvm.loop !191

4265:                                             ; preds = %4258
  br label %4266

4266:                                             ; preds = %4265
  store i8 0, ptr %349, align 1, !tbaa !31
  br label %4246, !llvm.loop !192

4267:                                             ; preds = %4249
  br label %4829

4268:                                             ; preds = %4216
  call void @llvm.lifetime.start.p0(i64 1, ptr %351) #8
  store i8 1, ptr %351, align 1, !tbaa !31
  br label %4269

4269:                                             ; preds = %4289, %4268
  %4270 = load i8, ptr %351, align 1, !tbaa !31, !range !65, !noundef !66
  %4271 = trunc i8 %4270 to i1
  br i1 %4271, label %4273, label %4272

4272:                                             ; preds = %4269
  store i32 483, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %351) #8
  br label %4290

4273:                                             ; preds = %4269
  call void @llvm.lifetime.start.p0(i64 8, ptr %352) #8
  %4274 = load ptr, ptr %346, align 8, !tbaa !5
  %4275 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %4274)
          to label %4276 unwind label %4282

4276:                                             ; preds = %4273
  store ptr %4275, ptr %352, align 8, !tbaa !5
  br label %4277

4277:                                             ; preds = %4287, %4276
  %4278 = load ptr, ptr %352, align 8, !tbaa !5
  %4279 = load i8, ptr %351, align 1, !tbaa !31, !range !65, !noundef !66
  %4280 = trunc i8 %4279 to i1
  br i1 %4280, label %4286, label %4281

4281:                                             ; preds = %4277
  store i32 486, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %352) #8
  br label %4288

4282:                                             ; preds = %4273
  %4283 = landingpad { ptr, i32 }
          cleanup
  %4284 = extractvalue { ptr, i32 } %4283, 0
  store ptr %4284, ptr %14, align 8
  %4285 = extractvalue { ptr, i32 } %4283, 1
  store i32 %4285, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %352) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %351) #8
  br label %4831

4286:                                             ; preds = %4277
  br label %4287

4287:                                             ; preds = %4286
  store i8 0, ptr %351, align 1, !tbaa !31
  br label %4277, !llvm.loop !193

4288:                                             ; preds = %4281
  br label %4289

4289:                                             ; preds = %4288
  store i8 0, ptr %351, align 1, !tbaa !31
  br label %4269, !llvm.loop !194

4290:                                             ; preds = %4272
  br label %4829

4291:                                             ; preds = %4216
  call void @llvm.lifetime.start.p0(i64 1, ptr %353) #8
  store i8 1, ptr %353, align 1, !tbaa !31
  br label %4292

4292:                                             ; preds = %4312, %4291
  %4293 = load i8, ptr %353, align 1, !tbaa !31, !range !65, !noundef !66
  %4294 = trunc i8 %4293 to i1
  br i1 %4294, label %4296, label %4295

4295:                                             ; preds = %4292
  store i32 489, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %353) #8
  br label %4313

4296:                                             ; preds = %4292
  call void @llvm.lifetime.start.p0(i64 8, ptr %354) #8
  %4297 = load ptr, ptr %346, align 8, !tbaa !5
  %4298 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %4297)
          to label %4299 unwind label %4305

4299:                                             ; preds = %4296
  store ptr %4298, ptr %354, align 8, !tbaa !5
  br label %4300

4300:                                             ; preds = %4310, %4299
  %4301 = load ptr, ptr %354, align 8, !tbaa !5
  %4302 = load i8, ptr %353, align 1, !tbaa !31, !range !65, !noundef !66
  %4303 = trunc i8 %4302 to i1
  br i1 %4303, label %4309, label %4304

4304:                                             ; preds = %4300
  store i32 492, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %354) #8
  br label %4311

4305:                                             ; preds = %4296
  %4306 = landingpad { ptr, i32 }
          cleanup
  %4307 = extractvalue { ptr, i32 } %4306, 0
  store ptr %4307, ptr %14, align 8
  %4308 = extractvalue { ptr, i32 } %4306, 1
  store i32 %4308, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %354) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %353) #8
  br label %4831

4309:                                             ; preds = %4300
  br label %4310

4310:                                             ; preds = %4309
  store i8 0, ptr %353, align 1, !tbaa !31
  br label %4300, !llvm.loop !195

4311:                                             ; preds = %4304
  br label %4312

4312:                                             ; preds = %4311
  store i8 0, ptr %353, align 1, !tbaa !31
  br label %4292, !llvm.loop !196

4313:                                             ; preds = %4295
  br label %4829

4314:                                             ; preds = %4216
  call void @llvm.lifetime.start.p0(i64 1, ptr %355) #8
  store i8 1, ptr %355, align 1, !tbaa !31
  br label %4315

4315:                                             ; preds = %4335, %4314
  %4316 = load i8, ptr %355, align 1, !tbaa !31, !range !65, !noundef !66
  %4317 = trunc i8 %4316 to i1
  br i1 %4317, label %4319, label %4318

4318:                                             ; preds = %4315
  store i32 495, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %355) #8
  br label %4336

4319:                                             ; preds = %4315
  call void @llvm.lifetime.start.p0(i64 8, ptr %356) #8
  %4320 = load ptr, ptr %346, align 8, !tbaa !5
  %4321 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %4320)
          to label %4322 unwind label %4328

4322:                                             ; preds = %4319
  store ptr %4321, ptr %356, align 8, !tbaa !5
  br label %4323

4323:                                             ; preds = %4333, %4322
  %4324 = load ptr, ptr %356, align 8, !tbaa !5
  %4325 = load i8, ptr %355, align 1, !tbaa !31, !range !65, !noundef !66
  %4326 = trunc i8 %4325 to i1
  br i1 %4326, label %4332, label %4327

4327:                                             ; preds = %4323
  store i32 498, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %356) #8
  br label %4334

4328:                                             ; preds = %4319
  %4329 = landingpad { ptr, i32 }
          cleanup
  %4330 = extractvalue { ptr, i32 } %4329, 0
  store ptr %4330, ptr %14, align 8
  %4331 = extractvalue { ptr, i32 } %4329, 1
  store i32 %4331, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %356) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %355) #8
  br label %4831

4332:                                             ; preds = %4323
  br label %4333

4333:                                             ; preds = %4332
  store i8 0, ptr %355, align 1, !tbaa !31
  br label %4323, !llvm.loop !197

4334:                                             ; preds = %4327
  br label %4335

4335:                                             ; preds = %4334
  store i8 0, ptr %355, align 1, !tbaa !31
  br label %4315, !llvm.loop !198

4336:                                             ; preds = %4318
  br label %4829

4337:                                             ; preds = %4216
  call void @llvm.lifetime.start.p0(i64 1, ptr %357) #8
  store i8 1, ptr %357, align 1, !tbaa !31
  br label %4338

4338:                                             ; preds = %4400, %4337
  %4339 = load i8, ptr %357, align 1, !tbaa !31, !range !65, !noundef !66
  %4340 = trunc i8 %4339 to i1
  br i1 %4340, label %4342, label %4341

4341:                                             ; preds = %4338
  store i32 501, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %357) #8
  br label %4401

4342:                                             ; preds = %4338
  call void @llvm.lifetime.start.p0(i64 8, ptr %358) #8
  %4343 = load ptr, ptr %346, align 8, !tbaa !5
  %4344 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %4343)
          to label %4345 unwind label %4351

4345:                                             ; preds = %4342
  store ptr %4344, ptr %358, align 8, !tbaa !5
  br label %4346

4346:                                             ; preds = %4395, %4345
  %4347 = load ptr, ptr %358, align 8, !tbaa !5
  %4348 = load i8, ptr %357, align 1, !tbaa !31, !range !65, !noundef !66
  %4349 = trunc i8 %4348 to i1
  br i1 %4349, label %4355, label %4350

4350:                                             ; preds = %4346
  store i32 504, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %358) #8
  br label %4399

4351:                                             ; preds = %4342
  %4352 = landingpad { ptr, i32 }
          cleanup
  %4353 = extractvalue { ptr, i32 } %4352, 0
  store ptr %4353, ptr %14, align 8
  %4354 = extractvalue { ptr, i32 } %4352, 1
  store i32 %4354, ptr %15, align 4
  br label %4398

4355:                                             ; preds = %4346
  call void @llvm.lifetime.start.p0(i64 8, ptr %359) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %359)
          to label %4356 unwind label %4371

4356:                                             ; preds = %4355
  call void @llvm.lifetime.start.p0(i64 8, ptr %360) #8
  %4357 = load ptr, ptr %358, align 8, !tbaa !5
  %4358 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %4357, i32 0, i32 0
  %4359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef nonnull align 8 dereferenceable(32) %4358, i32 noundef 0)
          to label %4360 unwind label %4375

4360:                                             ; preds = %4356
  store ptr %4359, ptr %360, align 8, !tbaa !5
  %4361 = load ptr, ptr %360, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %361) #8
  store i32 14, ptr %361, align 4, !tbaa !69
  %4362 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %4361, ptr noundef nonnull align 4 dereferenceable(4) %361)
          to label %4363 unwind label %4379

4363:                                             ; preds = %4360
  call void @llvm.lifetime.end.p0(i64 4, ptr %361) #8
  br i1 %4362, label %4364, label %4394

4364:                                             ; preds = %4363
  br label %4365

4365:                                             ; preds = %4364
  call void @llvm.lifetime.start.p0(i64 8, ptr %362) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %362, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %364) #8
  %4366 = getelementptr inbounds %class.anon.290, ptr %364, i32 0, i32 0
  store ptr %362, ptr %4366, align 8, !tbaa !5
  %4367 = getelementptr inbounds %class.anon.290, ptr %364, i32 0, i32 1
  %4368 = load ptr, ptr %360, align 8, !tbaa !5
  store ptr %4368, ptr %4367, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_53vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %363, ptr noundef nonnull align 8 dereferenceable(16) %364) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %363)
          to label %4369 unwind label %4383

4369:                                             ; preds = %4365
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %363) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %364) #8
  %4370 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %4370, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %4370, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %4387

4371:                                             ; preds = %4355
  %4372 = landingpad { ptr, i32 }
          cleanup
  %4373 = extractvalue { ptr, i32 } %4372, 0
  store ptr %4373, ptr %14, align 8
  %4374 = extractvalue { ptr, i32 } %4372, 1
  store i32 %4374, ptr %15, align 4
  br label %4397

4375:                                             ; preds = %4356
  %4376 = landingpad { ptr, i32 }
          cleanup
  %4377 = extractvalue { ptr, i32 } %4376, 0
  store ptr %4377, ptr %14, align 8
  %4378 = extractvalue { ptr, i32 } %4376, 1
  store i32 %4378, ptr %15, align 4
  br label %4396

4379:                                             ; preds = %4360
  %4380 = landingpad { ptr, i32 }
          cleanup
  %4381 = extractvalue { ptr, i32 } %4380, 0
  store ptr %4381, ptr %14, align 8
  %4382 = extractvalue { ptr, i32 } %4380, 1
  store i32 %4382, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %361) #8
  br label %4396

4383:                                             ; preds = %4365
  %4384 = landingpad { ptr, i32 }
          cleanup
  %4385 = extractvalue { ptr, i32 } %4384, 0
  store ptr %4385, ptr %14, align 8
  %4386 = extractvalue { ptr, i32 } %4384, 1
  store i32 %4386, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %363) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %364) #8
  br label %4391

4387:                                             ; preds = %4369
  %4388 = landingpad { ptr, i32 }
          cleanup
  %4389 = extractvalue { ptr, i32 } %4388, 0
  store ptr %4389, ptr %14, align 8
  %4390 = extractvalue { ptr, i32 } %4388, 1
  store i32 %4390, ptr %15, align 4
  br label %4391

4391:                                             ; preds = %4387, %4383
  call void @llvm.lifetime.end.p0(i64 8, ptr %362) #8
  br label %4396

4392:                                             ; No predecessors!
  br label %4393

4393:                                             ; preds = %4392
  br label %4394

4394:                                             ; preds = %4393, %4363
  call void @llvm.lifetime.end.p0(i64 8, ptr %360) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %359) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %359) #8
  br label %4395

4395:                                             ; preds = %4394
  store i8 0, ptr %357, align 1, !tbaa !31
  br label %4346, !llvm.loop !199

4396:                                             ; preds = %4391, %4379, %4375
  call void @llvm.lifetime.end.p0(i64 8, ptr %360) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %359) #8
  br label %4397

4397:                                             ; preds = %4396, %4371
  call void @llvm.lifetime.end.p0(i64 8, ptr %359) #8
  br label %4398

4398:                                             ; preds = %4397, %4351
  call void @llvm.lifetime.end.p0(i64 8, ptr %358) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %357) #8
  br label %4831

4399:                                             ; preds = %4350
  br label %4400

4400:                                             ; preds = %4399
  store i8 0, ptr %357, align 1, !tbaa !31
  br label %4338, !llvm.loop !200

4401:                                             ; preds = %4341
  br label %4829

4402:                                             ; preds = %4216
  call void @llvm.lifetime.start.p0(i64 1, ptr %365) #8
  store i8 1, ptr %365, align 1, !tbaa !31
  br label %4403

4403:                                             ; preds = %4423, %4402
  %4404 = load i8, ptr %365, align 1, !tbaa !31, !range !65, !noundef !66
  %4405 = trunc i8 %4404 to i1
  br i1 %4405, label %4407, label %4406

4406:                                             ; preds = %4403
  store i32 509, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %365) #8
  br label %4424

4407:                                             ; preds = %4403
  call void @llvm.lifetime.start.p0(i64 8, ptr %366) #8
  %4408 = load ptr, ptr %346, align 8, !tbaa !5
  %4409 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %4408)
          to label %4410 unwind label %4416

4410:                                             ; preds = %4407
  store ptr %4409, ptr %366, align 8, !tbaa !5
  br label %4411

4411:                                             ; preds = %4421, %4410
  %4412 = load ptr, ptr %366, align 8, !tbaa !5
  %4413 = load i8, ptr %365, align 1, !tbaa !31, !range !65, !noundef !66
  %4414 = trunc i8 %4413 to i1
  br i1 %4414, label %4420, label %4415

4415:                                             ; preds = %4411
  store i32 512, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %366) #8
  br label %4422

4416:                                             ; preds = %4407
  %4417 = landingpad { ptr, i32 }
          cleanup
  %4418 = extractvalue { ptr, i32 } %4417, 0
  store ptr %4418, ptr %14, align 8
  %4419 = extractvalue { ptr, i32 } %4417, 1
  store i32 %4419, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %366) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %365) #8
  br label %4831

4420:                                             ; preds = %4411
  br label %4421

4421:                                             ; preds = %4420
  store i8 0, ptr %365, align 1, !tbaa !31
  br label %4411, !llvm.loop !201

4422:                                             ; preds = %4415
  br label %4423

4423:                                             ; preds = %4422
  store i8 0, ptr %365, align 1, !tbaa !31
  br label %4403, !llvm.loop !202

4424:                                             ; preds = %4406
  br label %4829

4425:                                             ; preds = %4216
  call void @llvm.lifetime.start.p0(i64 1, ptr %367) #8
  store i8 1, ptr %367, align 1, !tbaa !31
  br label %4426

4426:                                             ; preds = %4446, %4425
  %4427 = load i8, ptr %367, align 1, !tbaa !31, !range !65, !noundef !66
  %4428 = trunc i8 %4427 to i1
  br i1 %4428, label %4430, label %4429

4429:                                             ; preds = %4426
  store i32 515, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %367) #8
  br label %4447

4430:                                             ; preds = %4426
  call void @llvm.lifetime.start.p0(i64 8, ptr %368) #8
  %4431 = load ptr, ptr %346, align 8, !tbaa !5
  %4432 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %4431)
          to label %4433 unwind label %4439

4433:                                             ; preds = %4430
  store ptr %4432, ptr %368, align 8, !tbaa !5
  br label %4434

4434:                                             ; preds = %4444, %4433
  %4435 = load ptr, ptr %368, align 8, !tbaa !5
  %4436 = load i8, ptr %367, align 1, !tbaa !31, !range !65, !noundef !66
  %4437 = trunc i8 %4436 to i1
  br i1 %4437, label %4443, label %4438

4438:                                             ; preds = %4434
  store i32 518, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %368) #8
  br label %4445

4439:                                             ; preds = %4430
  %4440 = landingpad { ptr, i32 }
          cleanup
  %4441 = extractvalue { ptr, i32 } %4440, 0
  store ptr %4441, ptr %14, align 8
  %4442 = extractvalue { ptr, i32 } %4440, 1
  store i32 %4442, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %368) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %367) #8
  br label %4831

4443:                                             ; preds = %4434
  br label %4444

4444:                                             ; preds = %4443
  store i8 0, ptr %367, align 1, !tbaa !31
  br label %4434, !llvm.loop !203

4445:                                             ; preds = %4438
  br label %4446

4446:                                             ; preds = %4445
  store i8 0, ptr %367, align 1, !tbaa !31
  br label %4426, !llvm.loop !204

4447:                                             ; preds = %4429
  br label %4829

4448:                                             ; preds = %4216
  call void @llvm.lifetime.start.p0(i64 1, ptr %369) #8
  store i8 1, ptr %369, align 1, !tbaa !31
  br label %4449

4449:                                             ; preds = %4827, %4448
  %4450 = load i8, ptr %369, align 1, !tbaa !31, !range !65, !noundef !66
  %4451 = trunc i8 %4450 to i1
  br i1 %4451, label %4453, label %4452

4452:                                             ; preds = %4449
  store i32 521, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %369) #8
  br label %4828

4453:                                             ; preds = %4449
  call void @llvm.lifetime.start.p0(i64 8, ptr %370) #8
  %4454 = load ptr, ptr %346, align 8, !tbaa !5
  %4455 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %4454)
          to label %4456 unwind label %4462

4456:                                             ; preds = %4453
  store ptr %4455, ptr %370, align 8, !tbaa !5
  br label %4457

4457:                                             ; preds = %4824, %4456
  %4458 = load ptr, ptr %370, align 8, !tbaa !5
  %4459 = load i8, ptr %369, align 1, !tbaa !31, !range !65, !noundef !66
  %4460 = trunc i8 %4459 to i1
  br i1 %4460, label %4466, label %4461

4461:                                             ; preds = %4457
  store i32 524, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %370) #8
  br label %4826

4462:                                             ; preds = %4513, %4466, %4453
  %4463 = landingpad { ptr, i32 }
          cleanup
  %4464 = extractvalue { ptr, i32 } %4463, 0
  store ptr %4464, ptr %14, align 8
  %4465 = extractvalue { ptr, i32 } %4463, 1
  store i32 %4465, ptr %15, align 4
  br label %4825

4466:                                             ; preds = %4457
  %4467 = load ptr, ptr %370, align 8, !tbaa !5
  %4468 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4467, i32 0, i32 3
  %4469 = invoke noundef zeroext i1 @_ZNK3MIR10CallTarget8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %4468)
          to label %4470 unwind label %4462

4470:                                             ; preds = %4466
  br i1 %4469, label %4471, label %4513

4471:                                             ; preds = %4470
  call void @llvm.lifetime.start.p0(i64 8, ptr %371) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %371)
          to label %4472 unwind label %4491

4472:                                             ; preds = %4471
  call void @llvm.lifetime.start.p0(i64 8, ptr %372) #8
  %4473 = load ptr, ptr %370, align 8, !tbaa !5
  %4474 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4473, i32 0, i32 3
  %4475 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %4474)
          to label %4476 unwind label %4495

4476:                                             ; preds = %4472
  %4477 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %371, ptr noundef nonnull align 8 dereferenceable(32) %4475, i32 noundef 0)
          to label %4478 unwind label %4495

4478:                                             ; preds = %4476
  store ptr %4477, ptr %372, align 8, !tbaa !5
  %4479 = load ptr, ptr %372, align 8, !tbaa !5
  %4480 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4479)
          to label %4481 unwind label %4495

4481:                                             ; preds = %4478
  %4482 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %4480)
          to label %4483 unwind label %4495

4483:                                             ; preds = %4481
  br i1 %4482, label %4510, label %4484

4484:                                             ; preds = %4483
  br label %4485

4485:                                             ; preds = %4484
  call void @llvm.lifetime.start.p0(i64 8, ptr %373) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %373, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %375) #8
  %4486 = getelementptr inbounds %class.anon.291, ptr %375, i32 0, i32 0
  store ptr %373, ptr %4486, align 8, !tbaa !5
  %4487 = getelementptr inbounds %class.anon.291, ptr %375, i32 0, i32 1
  %4488 = load ptr, ptr %372, align 8, !tbaa !5
  store ptr %4488, ptr %4487, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_54vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %374, ptr noundef nonnull align 8 dereferenceable(16) %375) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %374)
          to label %4489 unwind label %4499

4489:                                             ; preds = %4485
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %374) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %375) #8
  %4490 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %4490, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %4490, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %4503

4491:                                             ; preds = %4471
  %4492 = landingpad { ptr, i32 }
          cleanup
  %4493 = extractvalue { ptr, i32 } %4492, 0
  store ptr %4493, ptr %14, align 8
  %4494 = extractvalue { ptr, i32 } %4492, 1
  store i32 %4494, ptr %15, align 4
  br label %4512

4495:                                             ; preds = %4481, %4478, %4476, %4472
  %4496 = landingpad { ptr, i32 }
          cleanup
  %4497 = extractvalue { ptr, i32 } %4496, 0
  store ptr %4497, ptr %14, align 8
  %4498 = extractvalue { ptr, i32 } %4496, 1
  store i32 %4498, ptr %15, align 4
  br label %4511

4499:                                             ; preds = %4485
  %4500 = landingpad { ptr, i32 }
          cleanup
  %4501 = extractvalue { ptr, i32 } %4500, 0
  store ptr %4501, ptr %14, align 8
  %4502 = extractvalue { ptr, i32 } %4500, 1
  store i32 %4502, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %374) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %375) #8
  br label %4507

4503:                                             ; preds = %4489
  %4504 = landingpad { ptr, i32 }
          cleanup
  %4505 = extractvalue { ptr, i32 } %4504, 0
  store ptr %4505, ptr %14, align 8
  %4506 = extractvalue { ptr, i32 } %4504, 1
  store i32 %4506, ptr %15, align 4
  br label %4507

4507:                                             ; preds = %4503, %4499
  call void @llvm.lifetime.end.p0(i64 8, ptr %373) #8
  br label %4511

4508:                                             ; No predecessors!
  br label %4509

4509:                                             ; preds = %4508
  br label %4510

4510:                                             ; preds = %4509, %4483
  call void @llvm.lifetime.end.p0(i64 8, ptr %372) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %371) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %371) #8
  br label %4823

4511:                                             ; preds = %4507, %4495
  call void @llvm.lifetime.end.p0(i64 8, ptr %372) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %371) #8
  br label %4512

4512:                                             ; preds = %4511, %4491
  call void @llvm.lifetime.end.p0(i64 8, ptr %371) #8
  br label %4825

4513:                                             ; preds = %4470
  %4514 = load ptr, ptr %370, align 8, !tbaa !5
  %4515 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4514, i32 0, i32 3
  %4516 = invoke noundef zeroext i1 @_ZNK3MIR10CallTarget7is_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %4515)
          to label %4517 unwind label %4462

4517:                                             ; preds = %4513
  br i1 %4516, label %4518, label %4822

4518:                                             ; preds = %4517
  call void @llvm.lifetime.start.p0(i64 8, ptr %376) #8
  %4519 = load ptr, ptr %370, align 8, !tbaa !5
  %4520 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4519, i32 0, i32 3
  %4521 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %4520)
          to label %4522 unwind label %4543

4522:                                             ; preds = %4518
  store ptr %4521, ptr %376, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 144, ptr %377) #8
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %377)
          to label %4523 unwind label %4547

4523:                                             ; preds = %4522
  %4524 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 3
  %4525 = load ptr, ptr %4524, align 8, !tbaa !205
  %4526 = load ptr, ptr %376, align 8, !tbaa !5
  invoke void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %378, ptr noundef nonnull align 8 dereferenceable(88) %4526)
          to label %4527 unwind label %4551

4527:                                             ; preds = %4523
  invoke void @_ZN13Monomorphiser19set_consteval_stateERKN3HIR5CrateENS0_8ItemPathE(ptr noundef nonnull align 8 dereferenceable(96) %377, ptr noundef nonnull align 8 dereferenceable(944) %4525, ptr noundef byval(%"class.HIR::ItemPath") align 8 %378)
          to label %4528 unwind label %4551

4528:                                             ; preds = %4527
  call void @llvm.lifetime.start.p0(i64 8, ptr %379) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %380) #8
  %4529 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %17, i32 0, i32 2
  %4530 = load ptr, ptr %4529, align 8, !tbaa !89
  %4531 = load ptr, ptr %376, align 8, !tbaa !5
  invoke void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %380, ptr noundef nonnull align 8 dereferenceable(424) %4530, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(88) %4531, ptr noundef nonnull align 8 dereferenceable(144) %377, i1 noundef zeroext true, ptr noundef null)
          to label %4532 unwind label %4555

4532:                                             ; preds = %4528
  store ptr %380, ptr %379, align 8, !tbaa !5
  br label %4533

4533:                                             ; preds = %4532
  %4534 = load ptr, ptr %379, align 8, !tbaa !5
  %4535 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve8ValuePtr11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %4534)
          to label %4536 unwind label %4559

4536:                                             ; preds = %4533
  br i1 %4535, label %4567, label %4537

4537:                                             ; preds = %4536
  call void @llvm.lifetime.start.p0(i64 16, ptr %382) #8
  %4538 = getelementptr inbounds %class.anon.439, ptr %382, i32 0, i32 0
  %4539 = load ptr, ptr %376, align 8, !tbaa !5
  store ptr %4539, ptr %4538, align 8, !tbaa !5
  %4540 = getelementptr inbounds %class.anon.439, ptr %382, i32 0, i32 1
  %4541 = load ptr, ptr %379, align 8, !tbaa !5
  store ptr %4541, ptr %4540, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_55vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %381, ptr noundef nonnull align 8 dereferenceable(16) %382) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %381)
          to label %4542 unwind label %4563

4542:                                             ; preds = %4537
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %381) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %382) #8
  br label %4567

4543:                                             ; preds = %4518
  %4544 = landingpad { ptr, i32 }
          cleanup
  %4545 = extractvalue { ptr, i32 } %4544, 0
  store ptr %4545, ptr %14, align 8
  %4546 = extractvalue { ptr, i32 } %4544, 1
  store i32 %4546, ptr %15, align 4
  br label %4821

4547:                                             ; preds = %4522
  %4548 = landingpad { ptr, i32 }
          cleanup
  %4549 = extractvalue { ptr, i32 } %4548, 0
  store ptr %4549, ptr %14, align 8
  %4550 = extractvalue { ptr, i32 } %4548, 1
  store i32 %4550, ptr %15, align 4
  br label %4820

4551:                                             ; preds = %4527, %4523
  %4552 = landingpad { ptr, i32 }
          cleanup
  %4553 = extractvalue { ptr, i32 } %4552, 0
  store ptr %4553, ptr %14, align 8
  %4554 = extractvalue { ptr, i32 } %4552, 1
  store i32 %4554, ptr %15, align 4
  br label %4819

4555:                                             ; preds = %4528
  %4556 = landingpad { ptr, i32 }
          cleanup
  %4557 = extractvalue { ptr, i32 } %4556, 0
  store ptr %4557, ptr %14, align 8
  %4558 = extractvalue { ptr, i32 } %4556, 1
  store i32 %4558, ptr %15, align 4
  br label %4818

4559:                                             ; preds = %4533
  %4560 = landingpad { ptr, i32 }
          cleanup
  %4561 = extractvalue { ptr, i32 } %4560, 0
  store ptr %4561, ptr %14, align 8
  %4562 = extractvalue { ptr, i32 } %4560, 1
  store i32 %4562, ptr %15, align 4
  br label %4817

4563:                                             ; preds = %4537
  %4564 = landingpad { ptr, i32 }
          cleanup
  %4565 = extractvalue { ptr, i32 } %4564, 0
  store ptr %4565, ptr %14, align 8
  %4566 = extractvalue { ptr, i32 } %4564, 1
  store i32 %4566, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %381) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %382) #8
  br label %4817

4567:                                             ; preds = %4542, %4536
  br label %4568

4568:                                             ; preds = %4567
  br label %4569

4569:                                             ; preds = %4568
  call void @llvm.lifetime.start.p0(i64 8, ptr %383) #8
  %4570 = load ptr, ptr %379, align 8, !tbaa !5
  %4571 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK18StaticTraitResolve8ValuePtr11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %4570)
          to label %4572 unwind label %4595

4572:                                             ; preds = %4569
  %4573 = load ptr, ptr %4571, align 8, !tbaa !5
  store ptr %4573, ptr %383, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %384) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %384)
          to label %4574 unwind label %4599

4574:                                             ; preds = %4572
  call void @llvm.lifetime.start.p0(i64 8, ptr %385) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %385)
          to label %4575 unwind label %4603

4575:                                             ; preds = %4574
  call void @llvm.lifetime.start.p0(i64 32, ptr %386) #8
  %4576 = getelementptr inbounds %class.anon.440, ptr %386, i32 0, i32 0
  store ptr %385, ptr %4576, align 8, !tbaa !5
  %4577 = getelementptr inbounds %class.anon.440, ptr %386, i32 0, i32 1
  store ptr %377, ptr %4577, align 8, !tbaa !5
  %4578 = getelementptr inbounds %class.anon.440, ptr %386, i32 0, i32 2
  store ptr %16, ptr %4578, align 8, !tbaa !5
  %4579 = getelementptr inbounds %class.anon.440, ptr %386, i32 0, i32 3
  store ptr %17, ptr %4579, align 8, !tbaa !5
  %4580 = load ptr, ptr %383, align 8, !tbaa !5
  %4581 = getelementptr inbounds %"class.HIR::Function", ptr %4580, i32 0, i32 9
  %4582 = load i8, ptr %4581, align 8, !tbaa !206, !range !65, !noundef !66
  %4583 = trunc i8 %4582 to i1
  br i1 %4583, label %4584, label %4614

4584:                                             ; preds = %4575
  br label %4585

4585:                                             ; preds = %4584
  %4586 = load ptr, ptr %370, align 8, !tbaa !5
  %4587 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4586, i32 0, i32 4
  %4588 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4587) #8
  %4589 = load ptr, ptr %383, align 8, !tbaa !5
  %4590 = getelementptr inbounds %"class.HIR::Function", ptr %4589, i32 0, i32 8
  %4591 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4590) #8
  %4592 = icmp uge i64 %4588, %4591
  br i1 %4592, label %4611, label %4593

4593:                                             ; preds = %4585
  call void @llvm.lifetime.start.p0(i64 1, ptr %388) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_56vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %387, ptr noundef nonnull align 1 dereferenceable(1) %388) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %387)
          to label %4594 unwind label %4607

4594:                                             ; preds = %4593
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %387) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %388) #8
  br label %4611

4595:                                             ; preds = %4569
  %4596 = landingpad { ptr, i32 }
          cleanup
  %4597 = extractvalue { ptr, i32 } %4596, 0
  store ptr %4597, ptr %14, align 8
  %4598 = extractvalue { ptr, i32 } %4596, 1
  store i32 %4598, ptr %15, align 4
  br label %4816

4599:                                             ; preds = %4572
  %4600 = landingpad { ptr, i32 }
          cleanup
  %4601 = extractvalue { ptr, i32 } %4600, 0
  store ptr %4601, ptr %14, align 8
  %4602 = extractvalue { ptr, i32 } %4600, 1
  store i32 %4602, ptr %15, align 4
  br label %4815

4603:                                             ; preds = %4574
  %4604 = landingpad { ptr, i32 }
          cleanup
  %4605 = extractvalue { ptr, i32 } %4604, 0
  store ptr %4605, ptr %14, align 8
  %4606 = extractvalue { ptr, i32 } %4604, 1
  store i32 %4606, ptr %15, align 4
  br label %4814

4607:                                             ; preds = %4593
  %4608 = landingpad { ptr, i32 }
          cleanup
  %4609 = extractvalue { ptr, i32 } %4608, 0
  store ptr %4609, ptr %14, align 8
  %4610 = extractvalue { ptr, i32 } %4608, 1
  store i32 %4610, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %387) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %388) #8
  br label %4813

4611:                                             ; preds = %4594, %4585
  br label %4612

4612:                                             ; preds = %4611
  br label %4613

4613:                                             ; preds = %4612
  br label %4632

4614:                                             ; preds = %4575
  br label %4615

4615:                                             ; preds = %4614
  %4616 = load ptr, ptr %370, align 8, !tbaa !5
  %4617 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4616, i32 0, i32 4
  %4618 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4617) #8
  %4619 = load ptr, ptr %383, align 8, !tbaa !5
  %4620 = getelementptr inbounds %"class.HIR::Function", ptr %4619, i32 0, i32 8
  %4621 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4620) #8
  %4622 = icmp eq i64 %4618, %4621
  br i1 %4622, label %4629, label %4623

4623:                                             ; preds = %4615
  call void @llvm.lifetime.start.p0(i64 1, ptr %390) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_57vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %389, ptr noundef nonnull align 1 dereferenceable(1) %390) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %389)
          to label %4624 unwind label %4625

4624:                                             ; preds = %4623
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %389) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %390) #8
  br label %4629

4625:                                             ; preds = %4623
  %4626 = landingpad { ptr, i32 }
          cleanup
  %4627 = extractvalue { ptr, i32 } %4626, 0
  store ptr %4627, ptr %14, align 8
  %4628 = extractvalue { ptr, i32 } %4626, 1
  store i32 %4628, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %389) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %390) #8
  br label %4813

4629:                                             ; preds = %4624, %4615
  br label %4630

4630:                                             ; preds = %4629
  br label %4631

4631:                                             ; preds = %4630
  br label %4632

4632:                                             ; preds = %4631, %4613
  call void @llvm.lifetime.start.p0(i64 8, ptr %391) #8
  store i64 0, ptr %391, align 8, !tbaa !174
  br label %4633

4633:                                             ; preds = %4740, %4632
  %4634 = load i64, ptr %391, align 8, !tbaa !174
  %4635 = load ptr, ptr %383, align 8, !tbaa !5
  %4636 = getelementptr inbounds %"class.HIR::Function", ptr %4635, i32 0, i32 8
  %4637 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4636) #8
  %4638 = icmp ult i64 %4634, %4637
  br i1 %4638, label %4640, label %4639

4639:                                             ; preds = %4633
  store i32 535, ptr %47, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %391) #8
  br label %4745

4640:                                             ; preds = %4633
  call void @llvm.lifetime.start.p0(i64 8, ptr %392) #8
  %4641 = load ptr, ptr %370, align 8, !tbaa !5
  %4642 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4641, i32 0, i32 4
  %4643 = load i64, ptr %391, align 8, !tbaa !174
  %4644 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4642, i64 noundef %4643) #8
  %4645 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %384, ptr noundef nonnull align 8 dereferenceable(48) %4644)
          to label %4646 unwind label %4680

4646:                                             ; preds = %4640
  store ptr %4645, ptr %392, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %393) #8
  %4647 = load ptr, ptr %383, align 8, !tbaa !5
  %4648 = getelementptr inbounds %"class.HIR::Function", ptr %4647, i32 0, i32 8
  %4649 = load i64, ptr %391, align 8, !tbaa !174
  %4650 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4648, i64 noundef %4649) #8
  %4651 = getelementptr inbounds %"struct.std::pair.445", ptr %4650, i32 0, i32 1
  %4652 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_60clESK_"(ptr noundef nonnull align 8 dereferenceable(32) %386, ptr noundef nonnull align 8 dereferenceable(8) %4651)
          to label %4653 unwind label %4684

4653:                                             ; preds = %4646
  store ptr %4652, ptr %393, align 8, !tbaa !5
  br label %4654

4654:                                             ; preds = %4653
  %4655 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %4656 unwind label %4684

4656:                                             ; preds = %4654
  br i1 %4655, label %4657, label %4688

4657:                                             ; preds = %4656
  %4658 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %4659 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %4658, ptr noundef @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %4660 unwind label %4684

4660:                                             ; preds = %4657
  %4661 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4659, ptr noundef @.str.14)
          to label %4662 unwind label %4684

4662:                                             ; preds = %4660
  %4663 = load i64, ptr %391, align 8, !tbaa !174
  %4664 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %4661, i64 noundef %4663)
          to label %4665 unwind label %4684

4665:                                             ; preds = %4662
  %4666 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4664, ptr noundef @.str.15)
          to label %4667 unwind label %4684

4667:                                             ; preds = %4665
  %4668 = load ptr, ptr %392, align 8, !tbaa !5
  %4669 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %4666, ptr noundef nonnull align 8 dereferenceable(8) %4668)
          to label %4670 unwind label %4684

4670:                                             ; preds = %4667
  %4671 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4669, ptr noundef @.str.16)
          to label %4672 unwind label %4684

4672:                                             ; preds = %4670
  %4673 = load ptr, ptr %393, align 8, !tbaa !5
  %4674 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %4671, ptr noundef nonnull align 8 dereferenceable(8) %4673)
          to label %4675 unwind label %4684

4675:                                             ; preds = %4672
  %4676 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %4674, ptr noundef @_ZSt3decRSt8ios_base)
          to label %4677 unwind label %4684

4677:                                             ; preds = %4675
  %4678 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %4676, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %4679 unwind label %4684

4679:                                             ; preds = %4677
  br label %4688

4680:                                             ; preds = %4640
  %4681 = landingpad { ptr, i32 }
          cleanup
  %4682 = extractvalue { ptr, i32 } %4681, 0
  store ptr %4682, ptr %14, align 8
  %4683 = extractvalue { ptr, i32 } %4681, 1
  store i32 %4683, ptr %15, align 4
  br label %4744

4684:                                             ; preds = %4705, %4677, %4675, %4672, %4670, %4667, %4665, %4662, %4660, %4657, %4654, %4646
  %4685 = landingpad { ptr, i32 }
          cleanup
  %4686 = extractvalue { ptr, i32 } %4685, 0
  store ptr %4686, ptr %14, align 8
  %4687 = extractvalue { ptr, i32 } %4685, 1
  store i32 %4687, ptr %15, align 4
  br label %4743

4688:                                             ; preds = %4679, %4656
  br label %4689

4689:                                             ; preds = %4688
  br label %4690

4690:                                             ; preds = %4689
  %4691 = load ptr, ptr %392, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %394) #8
  invoke void @_ZN3HIR7TypeRef11new_divergeEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %394)
          to label %4692 unwind label %4696

4692:                                             ; preds = %4690
  %4693 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %4691, ptr noundef nonnull align 8 dereferenceable(8) %394)
          to label %4694 unwind label %4700

4694:                                             ; preds = %4692
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %394) #8
  br i1 %4693, label %4695, label %4705

4695:                                             ; preds = %4694
  br label %4739

4696:                                             ; preds = %4690
  %4697 = landingpad { ptr, i32 }
          cleanup
  %4698 = extractvalue { ptr, i32 } %4697, 0
  store ptr %4698, ptr %14, align 8
  %4699 = extractvalue { ptr, i32 } %4697, 1
  store i32 %4699, ptr %15, align 4
  br label %4704

4700:                                             ; preds = %4692
  %4701 = landingpad { ptr, i32 }
          cleanup
  %4702 = extractvalue { ptr, i32 } %4701, 0
  store ptr %4702, ptr %14, align 8
  %4703 = extractvalue { ptr, i32 } %4701, 1
  store i32 %4703, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %394) #8
  br label %4704

4704:                                             ; preds = %4700, %4696
  call void @llvm.lifetime.end.p0(i64 8, ptr %394) #8
  br label %4743

4705:                                             ; preds = %4694
  %4706 = load ptr, ptr %392, align 8, !tbaa !5
  %4707 = load ptr, ptr %393, align 8, !tbaa !5
  %4708 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %4706, ptr noundef nonnull align 8 dereferenceable(8) %4707)
          to label %4709 unwind label %4684

4709:                                             ; preds = %4705
  br i1 %4708, label %4710, label %4711

4710:                                             ; preds = %4709
  br label %4738

4711:                                             ; preds = %4709
  br label %4712

4712:                                             ; preds = %4711
  call void @llvm.lifetime.start.p0(i64 8, ptr %395) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %395, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %397) #8
  %4713 = getelementptr inbounds %class.anon.478, ptr %397, i32 0, i32 0
  store ptr %395, ptr %4713, align 8, !tbaa !5
  %4714 = getelementptr inbounds %class.anon.478, ptr %397, i32 0, i32 1
  store ptr %391, ptr %4714, align 8, !tbaa !5
  %4715 = getelementptr inbounds %class.anon.478, ptr %397, i32 0, i32 2
  %4716 = load ptr, ptr %392, align 8, !tbaa !5
  store ptr %4716, ptr %4715, align 8, !tbaa !5
  %4717 = getelementptr inbounds %class.anon.478, ptr %397, i32 0, i32 3
  %4718 = load ptr, ptr %393, align 8, !tbaa !5
  store ptr %4718, ptr %4717, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_58vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %396, ptr noundef nonnull align 8 dereferenceable(32) %397)
          to label %4719 unwind label %4722

4719:                                             ; preds = %4712
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %396)
          to label %4720 unwind label %4726

4720:                                             ; preds = %4719
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %396) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %397) #8
  %4721 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %4721, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %4721, ptr @_ZTIPKc, ptr null) #10
          to label %4851 unwind label %4731

4722:                                             ; preds = %4712
  %4723 = landingpad { ptr, i32 }
          cleanup
  %4724 = extractvalue { ptr, i32 } %4723, 0
  store ptr %4724, ptr %14, align 8
  %4725 = extractvalue { ptr, i32 } %4723, 1
  store i32 %4725, ptr %15, align 4
  br label %4730

4726:                                             ; preds = %4719
  %4727 = landingpad { ptr, i32 }
          cleanup
  %4728 = extractvalue { ptr, i32 } %4727, 0
  store ptr %4728, ptr %14, align 8
  %4729 = extractvalue { ptr, i32 } %4727, 1
  store i32 %4729, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %396) #8
  br label %4730

4730:                                             ; preds = %4726, %4722
  call void @llvm.lifetime.end.p0(i64 32, ptr %397) #8
  br label %4735

4731:                                             ; preds = %4720
  %4732 = landingpad { ptr, i32 }
          cleanup
  %4733 = extractvalue { ptr, i32 } %4732, 0
  store ptr %4733, ptr %14, align 8
  %4734 = extractvalue { ptr, i32 } %4732, 1
  store i32 %4734, ptr %15, align 4
  br label %4735

4735:                                             ; preds = %4731, %4730
  call void @llvm.lifetime.end.p0(i64 8, ptr %395) #8
  br label %4743

4736:                                             ; No predecessors!
  br label %4737

4737:                                             ; preds = %4736
  br label %4738

4738:                                             ; preds = %4737, %4710
  br label %4739

4739:                                             ; preds = %4738, %4695
  call void @llvm.lifetime.end.p0(i64 8, ptr %393) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %392) #8
  br label %4740

4740:                                             ; preds = %4739
  %4741 = load i64, ptr %391, align 8, !tbaa !174
  %4742 = add i64 %4741, 1
  store i64 %4742, ptr %391, align 8, !tbaa !174
  br label %4633, !llvm.loop !245

4743:                                             ; preds = %4735, %4704, %4684
  call void @llvm.lifetime.end.p0(i64 8, ptr %393) #8
  br label %4744

4744:                                             ; preds = %4743, %4680
  call void @llvm.lifetime.end.p0(i64 8, ptr %392) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %391) #8
  br label %4813

4745:                                             ; preds = %4639
  call void @llvm.lifetime.start.p0(i64 8, ptr %398) #8
  %4746 = load ptr, ptr %370, align 8, !tbaa !5
  %4747 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %4746, i32 0, i32 2
  %4748 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(8) %384, ptr noundef nonnull align 8 dereferenceable(32) %4747, i32 noundef 0)
          to label %4749 unwind label %4775

4749:                                             ; preds = %4745
  store ptr %4748, ptr %398, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %399) #8
  %4750 = load ptr, ptr %383, align 8, !tbaa !5
  %4751 = getelementptr inbounds %"class.HIR::Function", ptr %4750, i32 0, i32 10
  %4752 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_60clESK_"(ptr noundef nonnull align 8 dereferenceable(32) %386, ptr noundef nonnull align 8 dereferenceable(8) %4751)
          to label %4753 unwind label %4779

4753:                                             ; preds = %4749
  store ptr %4752, ptr %399, align 8, !tbaa !5
  br label %4754

4754:                                             ; preds = %4753
  %4755 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %4756 unwind label %4779

4756:                                             ; preds = %4754
  br i1 %4755, label %4757, label %4783

4757:                                             ; preds = %4756
  %4758 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %4759 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %4758, ptr noundef @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %4760 unwind label %4779

4760:                                             ; preds = %4757
  %4761 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4759, ptr noundef @.str.17)
          to label %4762 unwind label %4779

4762:                                             ; preds = %4760
  %4763 = load ptr, ptr %398, align 8, !tbaa !5
  %4764 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %4761, ptr noundef nonnull align 8 dereferenceable(8) %4763)
          to label %4765 unwind label %4779

4765:                                             ; preds = %4762
  %4766 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4764, ptr noundef @.str.16)
          to label %4767 unwind label %4779

4767:                                             ; preds = %4765
  %4768 = load ptr, ptr %399, align 8, !tbaa !5
  %4769 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %4766, ptr noundef nonnull align 8 dereferenceable(8) %4768)
          to label %4770 unwind label %4779

4770:                                             ; preds = %4767
  %4771 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %4769, ptr noundef @_ZSt3decRSt8ios_base)
          to label %4772 unwind label %4779

4772:                                             ; preds = %4770
  %4773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %4771, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %4774 unwind label %4779

4774:                                             ; preds = %4772
  br label %4783

4775:                                             ; preds = %4745
  %4776 = landingpad { ptr, i32 }
          cleanup
  %4777 = extractvalue { ptr, i32 } %4776, 0
  store ptr %4777, ptr %14, align 8
  %4778 = extractvalue { ptr, i32 } %4776, 1
  store i32 %4778, ptr %15, align 4
  br label %4812

4779:                                             ; preds = %4792, %4788, %4785, %4772, %4770, %4767, %4765, %4762, %4760, %4757, %4754, %4749
  %4780 = landingpad { ptr, i32 }
          cleanup
  %4781 = extractvalue { ptr, i32 } %4780, 0
  store ptr %4781, ptr %14, align 8
  %4782 = extractvalue { ptr, i32 } %4780, 1
  store i32 %4782, ptr %15, align 4
  br label %4811

4783:                                             ; preds = %4774, %4756
  br label %4784

4784:                                             ; preds = %4783
  br label %4785

4785:                                             ; preds = %4784
  %4786 = load ptr, ptr %399, align 8, !tbaa !5
  %4787 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4786)
          to label %4788 unwind label %4779

4788:                                             ; preds = %4785
  %4789 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %4787)
          to label %4790 unwind label %4779

4790:                                             ; preds = %4788
  br i1 %4789, label %4810, label %4791

4791:                                             ; preds = %4790
  br label %4792

4792:                                             ; preds = %4791
  %4793 = load ptr, ptr %398, align 8, !tbaa !5
  %4794 = load ptr, ptr %399, align 8, !tbaa !5
  %4795 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %4793, ptr noundef nonnull align 8 dereferenceable(8) %4794)
          to label %4796 unwind label %4779

4796:                                             ; preds = %4792
  br i1 %4795, label %4807, label %4797

4797:                                             ; preds = %4796
  call void @llvm.lifetime.start.p0(i64 16, ptr %401) #8
  %4798 = getelementptr inbounds %class.anon.479, ptr %401, i32 0, i32 0
  %4799 = load ptr, ptr %398, align 8, !tbaa !5
  store ptr %4799, ptr %4798, align 8, !tbaa !5
  %4800 = getelementptr inbounds %class.anon.479, ptr %401, i32 0, i32 1
  %4801 = load ptr, ptr %399, align 8, !tbaa !5
  store ptr %4801, ptr %4800, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_59vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %400, ptr noundef nonnull align 8 dereferenceable(16) %401) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef %400)
          to label %4802 unwind label %4803

4802:                                             ; preds = %4797
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %400) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %401) #8
  br label %4807

4803:                                             ; preds = %4797
  %4804 = landingpad { ptr, i32 }
          cleanup
  %4805 = extractvalue { ptr, i32 } %4804, 0
  store ptr %4805, ptr %14, align 8
  %4806 = extractvalue { ptr, i32 } %4804, 1
  store i32 %4806, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %400) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %401) #8
  br label %4811

4807:                                             ; preds = %4802, %4796
  br label %4808

4808:                                             ; preds = %4807
  br label %4809

4809:                                             ; preds = %4808
  br label %4810

4810:                                             ; preds = %4809, %4790
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %398) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %386) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %385) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %385) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %384) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %384) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %383) #8
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %380) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %380) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %379) #8
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %377) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %377) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %376) #8
  br label %4822

4811:                                             ; preds = %4803, %4779
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #8
  br label %4812

4812:                                             ; preds = %4811, %4775
  call void @llvm.lifetime.end.p0(i64 8, ptr %398) #8
  br label %4813

4813:                                             ; preds = %4812, %4744, %4625, %4607
  call void @llvm.lifetime.end.p0(i64 32, ptr %386) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %385) #8
  br label %4814

4814:                                             ; preds = %4813, %4603
  call void @llvm.lifetime.end.p0(i64 8, ptr %385) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %384) #8
  br label %4815

4815:                                             ; preds = %4814, %4599
  call void @llvm.lifetime.end.p0(i64 8, ptr %384) #8
  br label %4816

4816:                                             ; preds = %4815, %4595
  call void @llvm.lifetime.end.p0(i64 8, ptr %383) #8
  br label %4817

4817:                                             ; preds = %4816, %4563, %4559
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %380) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %380) #8
  br label %4818

4818:                                             ; preds = %4817, %4555
  call void @llvm.lifetime.end.p0(i64 8, ptr %379) #8
  br label %4819

4819:                                             ; preds = %4818, %4551
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %377) #8
  br label %4820

4820:                                             ; preds = %4819, %4547
  call void @llvm.lifetime.end.p0(i64 144, ptr %377) #8
  br label %4821

4821:                                             ; preds = %4820, %4543
  call void @llvm.lifetime.end.p0(i64 8, ptr %376) #8
  br label %4825

4822:                                             ; preds = %4810, %4517
  br label %4823

4823:                                             ; preds = %4822, %4510
  br label %4824

4824:                                             ; preds = %4823
  store i8 0, ptr %369, align 1, !tbaa !31
  br label %4457, !llvm.loop !246

4825:                                             ; preds = %4821, %4512, %4462
  call void @llvm.lifetime.end.p0(i64 8, ptr %370) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %369) #8
  br label %4831

4826:                                             ; preds = %4461
  br label %4827

4827:                                             ; preds = %4826
  store i8 0, ptr %369, align 1, !tbaa !31
  br label %4449, !llvm.loop !247

4828:                                             ; preds = %4452
  br label %4829

4829:                                             ; preds = %4828, %4447, %4424, %4401, %4336, %4313, %4290, %4267, %4244, %4216
  br label %4830

4830:                                             ; preds = %4829
  store i8 0, ptr %345, align 1, !tbaa !31
  br label %4209, !llvm.loop !248

4831:                                             ; preds = %4825, %4439, %4416, %4398, %4328, %4305, %4282, %4259, %4236, %4217
  call void @llvm.lifetime.end.p0(i64 8, ptr %346) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %345) #8
  br label %4838

4832:                                             ; preds = %4212
  br label %4833

4833:                                             ; preds = %4832
  store i8 0, ptr %345, align 1, !tbaa !31
  br label %4202, !llvm.loop !249

4834:                                             ; preds = %4205
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  br label %4835

4835:                                             ; preds = %4834
  %4836 = load i32, ptr %99, align 4, !tbaa !29
  %4837 = add i32 %4836, 1
  store i32 %4837, ptr %99, align 4, !tbaa !29
  br label %1445, !llvm.loop !250

4838:                                             ; preds = %4831, %4195, %4174
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #8
  br label %4842

4839:                                             ; preds = %1452
  %4840 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %17, ptr noundef nonnull align 8 dereferenceable(96) %4840)
          to label %4841 unwind label %439

4841:                                             ; preds = %4839
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %17) #8
  call void @llvm.lifetime.end.p0(i64 120, ptr %17) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %11) #8
  ret void

4842:                                             ; preds = %4838, %1441, %633, %599, %439
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %17) #8
  br label %4843

4843:                                             ; preds = %4842, %438
  call void @llvm.lifetime.end.p0(i64 120, ptr %17) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %4844

4844:                                             ; preds = %4843, %426
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #8
  br label %4845

4845:                                             ; preds = %4844, %422
  call void @llvm.lifetime.end.p0(i64 40, ptr %11) #8
  br label %4846

4846:                                             ; preds = %4845
  %4847 = load ptr, ptr %14, align 8
  %4848 = load i32, ptr %15, align 4
  %4849 = insertvalue { ptr, i32 } poison, ptr %4847, 0
  %4850 = insertvalue { ptr, i32 } %4849, i32 %4848, 1
  resume { ptr, i32 } %4850

4851:                                             ; preds = %4720, %4489, %4369, %4007, %3974, %3909, %3876, %3775, %3693, %3593, %3489, %3302, %3186, %2907, %2860, %2653, %2281, %2240, %2199, %2158, %2117, %1801, %1735, %1669, %1502, %1398, %1358, %1302, %1239, %1167, %1066, %985, %929, %862, %797, %728
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 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 #0 align 2

declare void @_Z12MIR_Dump_FcnRSoRKN3MIR8FunctionEj(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(96), i32 noundef) #2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 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)) #3 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)) #2

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

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

declare noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #2

declare noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

; Function Attrs: 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)) #3 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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)) #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR8Constant3tagEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 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 zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184)) #3 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)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR8Constant8as_BytesEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 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) #5 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3MIR8Constant10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 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)) #3 align 2

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)) #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 #3 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)) #3 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 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)) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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)) #3 align 2

declare noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200)) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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)) #3 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)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 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)) #3 align 2

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

declare noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_37vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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)) #3 align 2

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

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

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

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

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

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

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

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

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

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

declare noundef ptr @_ZNK3MIR11TypeResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_51vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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)) #3 align 2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) #2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN13Monomorphiser19set_consteval_stateERKN3HIR5CrateENS0_8ItemPathE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef byval(%"class.HIR::ItemPath") align 8) #3 align 2

; 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 #3 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_60clESK_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #5 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) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_58vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_59vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 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 #4 = { 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 #5 = { 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 #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 8}
!10 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !11, i64 24, !20, i64 72, !26, i64 104, !26, i64 112, !26, i64 120, !26, i64 128, !26, i64 136, !26, i64 144, !26, i64 152, !26, i64 160, !26, i64 168, !26, i64 176, !26, i64 184, !26, i64 192, !26, i64 200, !26, i64 208}
!11 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !12, i64 0}
!12 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !13, i64 0}
!13 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !14, i64 0, !16, i64 8}
!14 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !15, i64 0}
!15 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!16 = !{!"_ZTSSt15_Rb_tree_header", !17, i64 0, !19, i64 32}
!17 = !{!"_ZTSSt18_Rb_tree_node_base", !18, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!18 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !21, i64 0, !25, i64 24}
!21 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!26 = !{!"_ZTSN3HIR10SimplePathE", !27, i64 0}
!27 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!28 = !{!10, !6, i64 16}
!29 = !{!30, !30, i64 0}
!30 = !{!"int", !7, i64 0}
!31 = !{!32, !32, i64 0}
!32 = !{!"bool", !7, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = !{!36, !30, i64 0}
!36 = !{!"_ZTSN3MIR10Terminator10Data_PanicE", !30, i64 0}
!37 = !{!38, !30, i64 32}
!38 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !39, i64 0, !30, i64 32, !30, i64 36}
!39 = !{!"_ZTSN3MIR6LValueE", !40, i64 0, !41, i64 8}
!40 = !{!"_ZTSN3MIR6LValue7StorageE", !19, i64 0}
!41 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!45 = !{!38, !30, i64 36}
!46 = distinct !{!46, !34}
!47 = distinct !{!47, !34}
!48 = !{!49, !30, i64 32}
!49 = !{!"_ZTSN3MIR10Terminator16Data_SwitchValueE", !39, i64 0, !30, i64 32, !50, i64 40, !54, i64 64}
!50 = !{!"_ZTSSt6vectorIjSaIjEE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!54 = !{!"_ZTSN3MIR12SwitchValuesE", !55, i64 0, !7, i64 8}
!55 = !{!"_ZTSN3MIR12SwitchValues3TagE", !7, i64 0}
!56 = !{!57, !30, i64 0}
!57 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !30, i64 0, !30, i64 4, !39, i64 8, !58, i64 40, !60, i64 136}
!58 = !{!"_ZTSN3MIR10CallTargetE", !59, i64 0, !7, i64 8}
!59 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!60 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!64 = !{!57, !30, i64 4}
!65 = !{i8 0, i8 2}
!66 = !{}
!67 = distinct !{!67, !34}
!68 = distinct !{!68, !34}
!69 = !{!70, !70, i64 0}
!70 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!71 = distinct !{!71, !34}
!72 = distinct !{!72, !34}
!73 = distinct !{!73, !34}
!74 = distinct !{!74, !34}
!75 = distinct !{!75, !34}
!76 = distinct !{!76, !34}
!77 = distinct !{!77, !34}
!78 = distinct !{!78, !34}
!79 = distinct !{!79, !34}
!80 = distinct !{!80, !34}
!81 = distinct !{!81, !34}
!82 = distinct !{!82, !34}
!83 = distinct !{!83, !34}
!84 = distinct !{!84, !34}
!85 = distinct !{!85, !34}
!86 = distinct !{!86, !34}
!87 = distinct !{!87, !34}
!88 = distinct !{!88, !34}
!89 = !{!90, !6, i64 16}
!90 = !{!"_ZTSN3MIR11TypeResolveE", !30, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !91, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !30, i64 112, !30, i64 116}
!91 = !{!"_ZTS9FmtLambda", !92, i64 0}
!92 = !{!"_ZTSSt8functionIFvRSoEE", !93, i64 0, !6, i64 24}
!93 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!94 = !{!90, !6, i64 8}
!95 = distinct !{!95, !34}
!96 = distinct !{!96, !34}
!97 = distinct !{!97, !34}
!98 = distinct !{!98, !34}
!99 = distinct !{!99, !34}
!100 = distinct !{!100, !34}
!101 = distinct !{!101, !34}
!102 = distinct !{!102, !34}
!103 = distinct !{!103, !34}
!104 = distinct !{!104, !34}
!105 = distinct !{!105, !34}
!106 = distinct !{!106, !34}
!107 = distinct !{!107, !34}
!108 = distinct !{!108, !34}
!109 = distinct !{!109, !34}
!110 = distinct !{!110, !34}
!111 = distinct !{!111, !34}
!112 = distinct !{!112, !34}
!113 = distinct !{!113, !34}
!114 = distinct !{!114, !34}
!115 = distinct !{!115, !34}
!116 = distinct !{!116, !34}
!117 = distinct !{!117, !34}
!118 = distinct !{!118, !34}
!119 = distinct !{!119, !34}
!120 = distinct !{!120, !34}
!121 = distinct !{!121, !34}
!122 = distinct !{!122, !34}
!123 = !{!124, !125, i64 0}
!124 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !125, i64 0, !39, i64 8}
!125 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!126 = distinct !{!126, !34}
!127 = distinct !{!127, !34}
!128 = distinct !{!128, !34}
!129 = distinct !{!129, !34}
!130 = distinct !{!130, !34}
!131 = distinct !{!131, !34}
!132 = distinct !{!132, !34}
!133 = distinct !{!133, !34}
!134 = !{!135, !135, i64 0}
!135 = !{!"_ZTS12MetadataType", !7, i64 0}
!136 = distinct !{!136, !34}
!137 = distinct !{!137, !34}
!138 = distinct !{!138, !34}
!139 = distinct !{!139, !34}
!140 = distinct !{!140, !34}
!141 = distinct !{!141, !34}
!142 = distinct !{!142, !34}
!143 = distinct !{!143, !34}
!144 = !{!145, !125, i64 0}
!145 = !{!"_ZTSN3HIR8TypeData12Data_PointerE", !125, i64 0, !146, i64 8}
!146 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!147 = !{!148, !125, i64 4}
!148 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !149, i64 0, !125, i64 4, !146, i64 8}
!149 = !{!"_ZTSN3HIR11LifetimeRefE", !30, i64 0}
!150 = distinct !{!150, !34}
!151 = distinct !{!151, !34}
!152 = distinct !{!152, !34}
!153 = distinct !{!153, !34}
!154 = distinct !{!154, !34}
!155 = distinct !{!155, !34}
!156 = distinct !{!156, !34}
!157 = distinct !{!157, !34}
!158 = distinct !{!158, !34}
!159 = distinct !{!159, !34}
!160 = distinct !{!160, !34}
!161 = distinct !{!161, !34}
!162 = distinct !{!162, !34}
!163 = distinct !{!163, !34}
!164 = distinct !{!164, !34}
!165 = distinct !{!165, !34}
!166 = distinct !{!166, !34}
!167 = distinct !{!167, !34}
!168 = distinct !{!168, !34}
!169 = distinct !{!169, !34}
!170 = distinct !{!170, !34}
!171 = distinct !{!171, !34}
!172 = distinct !{!172, !34}
!173 = distinct !{!173, !34}
!174 = !{!19, !19, i64 0}
!175 = distinct !{!175, !34}
!176 = distinct !{!176, !34}
!177 = distinct !{!177, !34}
!178 = distinct !{!178, !34}
!179 = distinct !{!179, !34}
!180 = distinct !{!180, !34}
!181 = distinct !{!181, !34}
!182 = distinct !{!182, !34}
!183 = distinct !{!183, !34}
!184 = distinct !{!184, !34}
!185 = distinct !{!185, !34}
!186 = distinct !{!186, !34}
!187 = distinct !{!187, !34}
!188 = distinct !{!188, !34}
!189 = distinct !{!189, !34}
!190 = distinct !{!190, !34}
!191 = distinct !{!191, !34}
!192 = distinct !{!192, !34}
!193 = distinct !{!193, !34}
!194 = distinct !{!194, !34}
!195 = distinct !{!195, !34}
!196 = distinct !{!196, !34}
!197 = distinct !{!197, !34}
!198 = distinct !{!198, !34}
!199 = distinct !{!199, !34}
!200 = distinct !{!200, !34}
!201 = distinct !{!201, !34}
!202 = distinct !{!202, !34}
!203 = distinct !{!203, !34}
!204 = distinct !{!204, !34}
!205 = !{!90, !6, i64 24}
!206 = !{!207, !32, i64 232}
!207 = !{!"_ZTSN3HIR8FunctionE", !32, i64 0, !208, i64 8, !212, i64 80, !146, i64 88, !213, i64 96, !32, i64 104, !32, i64 105, !214, i64 112, !231, i64 208, !32, i64 232, !146, i64 240, !235, i64 248, !243, i64 320}
!208 = !{!"_ZTSN3HIR7LinkageE", !209, i64 0, !210, i64 8, !210, i64 40}
!209 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!210 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !211, i64 0, !19, i64 8, !7, i64 16}
!211 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!212 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!213 = !{!"_ZTS8RcString", !6, i64 0}
!214 = !{!"_ZTSN3HIR13GenericParamsE", !215, i64 0, !219, i64 24, !223, i64 48, !227, i64 72}
!215 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !216, i64 0}
!216 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !217, i64 0}
!217 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !218, i64 0}
!218 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!219 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !220, i64 0}
!220 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !221, i64 0}
!221 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !222, i64 0}
!222 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!223 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !224, i64 0}
!224 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !225, i64 0}
!225 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !226, i64 0}
!226 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!227 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !228, i64 0}
!228 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !229, i64 0}
!229 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !230, i64 0}
!230 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!231 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !232, i64 0}
!232 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !233, i64 0}
!233 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !234, i64 0}
!234 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!235 = !{!"_ZTSN3HIR7ExprPtrE", !236, i64 0, !237, i64 8, !237, i64 32, !241, i64 56, !242, i64 64}
!236 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!237 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !238, i64 0}
!238 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !239, i64 0}
!239 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !240, i64 0}
!240 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!241 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!242 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!243 = !{!"_ZTSN3HIR8Function8MarkingsE", !50, i64 0, !32, i64 24, !244, i64 28}
!244 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!245 = distinct !{!245, !34}
!246 = distinct !{!246, !34}
!247 = distinct !{!247, !34}
!248 = distinct !{!248, !34}
!249 = distinct !{!249, !34}
!250 = distinct !{!250, !34}


; 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.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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.std::locale" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.151 = type { ptr }
%struct.Span = type { ptr }
%"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.152 = type { ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.66, %class.ThinVector.67, %class.ThinVector.68 }
%class.ThinVector.66 = type { ptr }
%class.ThinVector.67 = type { ptr }
%class.ThinVector.68 = type { ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.173" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.173" = type { %"struct.std::_Vector_base.174" }
%"struct.std::_Vector_base.174" = 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.178" = type { ptr }
%class.anon.179 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.180" = type { ptr }
%class.anon.181 = type { i8 }
%"class.std::vector.5" = 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::allocator.183" = type { i8 }
%"class.std::vector.21" = type { %"struct.std::_Vector_base.22" }
%"struct.std::_Vector_base.22" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.186 = type { ptr, ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.anon.187 = type { ptr }
%class.anon.188 = type { ptr, ptr }
%class.anon.189 = type { ptr, ptr }
%class.anon.190 = type { ptr, ptr }
%class.anon.191 = type { ptr, ptr }
%class.anon.192 = type { ptr, ptr, ptr }
%class.anon.193 = type { ptr, ptr, ptr }
%class.anon.194 = type { ptr, ptr }
%class.anon.195 = type { ptr, ptr }
%class.anon.196 = type { ptr, ptr }
%class.anon.197 = type { ptr }
%class.anon.224 = type { ptr, ptr }
%class.anon.225 = type { ptr, ptr }
%class.anon.226 = type { ptr, ptr }
%class.anon.227 = type { ptr }
%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.228 = type { ptr, ptr }
%class.anon.229 = type { ptr, ptr }
%class.anon.230 = type { ptr, ptr }
%class.anon.231 = type { ptr, ptr }
%class.anon.232 = type { ptr, ptr }
%class.anon.244 = type { ptr }
%class.anon.245 = type { ptr }
%class.anon.246 = type { ptr }
%class.anon.247 = type { ptr, ptr, ptr }
%class.anon.248 = type { ptr, ptr }
%class.anon.265 = type { ptr, ptr }
%class.anon.266 = type { ptr, ptr }
%class.anon.267 = type { i8 }
%class.anon.269 = type { ptr, ptr, ptr }
%class.anon.270 = type { ptr, ptr, ptr }
%class.anon.271 = type { ptr, ptr }
%class.anon.272 = type { i8 }
%class.anon.274 = type { ptr, ptr }
%class.anon.275 = type { ptr, ptr }
%class.anon.276 = type { ptr, ptr }
%class.anon.277 = type { ptr, ptr }
%class.anon.278 = type { ptr, ptr, ptr }
%class.anon.279 = type { ptr, ptr }
%class.anon.280 = type { ptr, ptr, ptr }
%class.anon.281 = type { ptr, ptr }
%class.anon.282 = type { ptr, ptr }
%class.anon.283 = type { ptr, ptr }
%class.anon.284 = type { ptr, ptr }
%class.anon.285 = type { ptr, ptr }
%class.anon.286 = type { ptr, ptr }
%class.anon.287 = type { ptr, ptr }
%class.anon.288 = type { ptr, ptr }
%class.anon.289 = type { ptr, ptr, ptr }
%class.anon.290 = type { ptr, ptr }
%class.anon.291 = type { ptr, ptr }
%class.anon.439 = type { ptr, ptr }
%class.anon.440 = type { ptr, ptr, ptr, ptr }
%class.anon.441 = type { i8 }
%class.anon.443 = type { i8 }
%class.anon.478 = type { ptr, ptr, ptr, ptr }
%class.anon.479 = type { ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [72 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.7 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.8 = external hidden unnamed_addr constant [39 x i8], align 1
@__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ = external hidden unnamed_addr constant [13 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ = external hidden unnamed_addr constant [153 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #0

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 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 #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull align 8 dereferenceable(96) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %4) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %6 = alloca %class.TraceLog, align 8
  %7 = alloca %"class.std::function", align 8
  %8 = alloca %class.anon.151, align 8
  %9 = alloca %struct.Span, align 8
  %10 = alloca %"class.MIR::TypeResolve", align 8
  %11 = alloca %struct.FmtLambda, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.152, align 8
  %14 = alloca %"class.HIR::TypeRef", align 8
  %15 = alloca %"struct.HIR::PathParams", align 8
  %16 = alloca %"struct.HIR::PathParams", align 8
  %17 = alloca %struct.MonomorphStatePtr, align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %20 = alloca %"class.std::function", align 8
  %21 = alloca %class.anon.179, align 8
  %22 = alloca %"class.HIR::TypeRef", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.180", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.180", align 8
  %25 = alloca %"class.std::function", align 8
  %26 = alloca %class.anon.181, align 1
  %27 = alloca %"class.std::vector.5", align 8
  %28 = alloca %"class.std::allocator.183", align 1
  %29 = alloca %"class.std::vector.21", align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca %"class.std::function", align 8
  %33 = alloca %class.anon.186, align 8
  %34 = alloca %"struct.std::_Bit_reference", align 8
  %35 = alloca %"struct.std::_Bit_reference", align 8
  %36 = alloca ptr, align 8
  %37 = alloca %"class.std::function", align 8
  %38 = alloca %class.anon.187, align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.std::function", align 8
  %41 = alloca %class.anon.188, align 8
  %42 = alloca %"struct.std::_Bit_reference", align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.std::function", align 8
  %45 = alloca %class.anon.189, align 8
  %46 = alloca %"struct.std::_Bit_reference", align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.std::function", align 8
  %49 = alloca %class.anon.190, align 8
  %50 = alloca %"struct.std::_Bit_reference", align 8
  %51 = alloca ptr, align 8
  %52 = alloca %"class.std::function", align 8
  %53 = alloca %class.anon.191, align 8
  %54 = alloca %"struct.std::_Bit_reference", align 8
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca %"class.std::function", align 8
  %58 = alloca %class.anon.192, align 8
  %59 = alloca %"struct.std::_Bit_reference", align 8
  %60 = alloca i32, align 4
  %61 = alloca ptr, align 8
  %62 = alloca %"class.std::function", align 8
  %63 = alloca %class.anon.193, align 8
  %64 = alloca %"struct.std::_Bit_reference", align 8
  %65 = alloca ptr, align 8
  %66 = alloca %"class.std::function", align 8
  %67 = alloca %class.anon.194, align 8
  %68 = alloca %"struct.std::_Bit_reference", align 8
  %69 = alloca ptr, align 8
  %70 = alloca %"class.std::function", align 8
  %71 = alloca %class.anon.195, align 8
  %72 = alloca %"struct.std::_Bit_reference", align 8
  %73 = alloca ptr, align 8
  %74 = alloca %"class.std::function", align 8
  %75 = alloca %class.anon.196, align 8
  %76 = alloca %"struct.std::_Bit_reference", align 8
  %77 = alloca %"class.HIR::TypeRef", align 8
  %78 = alloca %class.anon.197, align 8
  %79 = alloca %"class.HIR::TypeRef", align 8
  %80 = alloca ptr, align 8
  %81 = alloca %"class.std::function", align 8
  %82 = alloca %class.anon.224, align 8
  %83 = alloca ptr, align 8
  %84 = alloca %"class.std::function", align 8
  %85 = alloca %class.anon.225, align 8
  %86 = alloca ptr, align 8
  %87 = alloca %"class.std::function", align 8
  %88 = alloca %class.anon.226, align 8
  %89 = alloca %"class.HIR::TypeRef", align 8
  %90 = alloca %"class.HIR::TypeRef", align 8
  %91 = alloca %"class.HIR::TypeRef", align 8
  %92 = alloca %"class.HIR::TypeRef", align 8
  %93 = alloca %"class.HIR::TypeRef", align 8
  %94 = alloca %"class.HIR::TypeRef", align 8
  %95 = alloca %"class.std::function", align 8
  %96 = alloca %class.anon.227, align 8
  %97 = alloca %struct.MonomorphState, align 8
  %98 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %99 = alloca %"class.HIR::TypeRef", align 8
  %100 = alloca ptr, align 8
  %101 = alloca %"class.std::function", align 8
  %102 = alloca %class.anon.228, align 8
  %103 = alloca ptr, align 8
  %104 = alloca %"class.std::function", align 8
  %105 = alloca %class.anon.229, align 8
  %106 = alloca ptr, align 8
  %107 = alloca %"class.std::function", align 8
  %108 = alloca %class.anon.230, align 8
  %109 = alloca ptr, align 8
  %110 = alloca %"class.std::function", align 8
  %111 = alloca %class.anon.231, align 8
  %112 = alloca ptr, align 8
  %113 = alloca %"class.std::function", align 8
  %114 = alloca %class.anon.232, align 8
  %115 = alloca %"class.HIR::TypeRef", align 8
  %116 = alloca %"class.HIR::TypeRef", align 8
  %117 = alloca %"class.HIR::TypeRef", align 8
  %118 = alloca %"class.std::function", align 8
  %119 = alloca %class.anon.244, align 8
  %120 = alloca %"class.std::function", align 8
  %121 = alloca %class.anon.245, align 8
  %122 = alloca %"class.std::function", align 8
  %123 = alloca %class.anon.246, align 8
  %124 = alloca %"class.HIR::TypeRef", align 8
  %125 = alloca %"class.HIR::TypeRef", align 8
  %126 = alloca %"class.HIR::TypeRef", align 8
  %127 = alloca %"class.HIR::TypeRef", align 8
  %128 = alloca ptr, align 8
  %129 = alloca %"class.std::function", align 8
  %130 = alloca %class.anon.247, align 8
  %131 = alloca %"class.std::function", align 8
  %132 = alloca %class.anon.248, align 8
  %133 = alloca %"class.std::function", align 8
  %134 = alloca %class.anon.265, align 8
  %135 = alloca %"class.std::function", align 8
  %136 = alloca %class.anon.266, align 8
  %137 = alloca %"class.std::function", align 8
  %138 = alloca %class.anon.267, align 1
  %139 = alloca ptr, align 8
  %140 = alloca %"class.std::function", align 8
  %141 = alloca %class.anon.269, align 8
  %142 = alloca ptr, align 8
  %143 = alloca %"class.std::function", align 8
  %144 = alloca %class.anon.270, align 8
  %145 = alloca %"class.std::function", align 8
  %146 = alloca %class.anon.271, align 8
  %147 = alloca %"class.std::function", align 8
  %148 = alloca %class.anon.272, align 1
  %149 = alloca %"class.std::function", align 8
  %150 = alloca %class.anon.274, align 8
  %151 = alloca %"class.std::function", align 8
  %152 = alloca %class.anon.275, align 8
  %153 = alloca %"class.std::function", align 8
  %154 = alloca %class.anon.276, align 8
  %155 = alloca %"class.std::function", align 8
  %156 = alloca %class.anon.277, align 8
  %157 = alloca ptr, align 8
  %158 = alloca %"class.std::function", align 8
  %159 = alloca %class.anon.278, align 8
  %160 = alloca %"class.std::function", align 8
  %161 = alloca %class.anon.279, align 8
  %162 = alloca ptr, align 8
  %163 = alloca %"class.std::function", align 8
  %164 = alloca %class.anon.280, align 8
  %165 = alloca %"class.std::function", align 8
  %166 = alloca %class.anon.281, align 8
  %167 = alloca %"class.HIR::TypeRef", align 8
  %168 = alloca ptr, align 8
  %169 = alloca %"class.std::function", align 8
  %170 = alloca %class.anon.282, align 8
  %171 = alloca %"class.HIR::TypeRef", align 8
  %172 = alloca %"class.HIR::TypeRef", align 8
  %173 = alloca %"class.HIR::TypeRef", align 8
  %174 = alloca ptr, align 8
  %175 = alloca %"class.std::function", align 8
  %176 = alloca %class.anon.283, align 8
  %177 = alloca %"class.HIR::TypeRef", align 8
  %178 = alloca ptr, align 8
  %179 = alloca %"class.std::function", align 8
  %180 = alloca %class.anon.284, align 8
  %181 = alloca ptr, align 8
  %182 = alloca %"class.std::function", align 8
  %183 = alloca %class.anon.285, align 8
  %184 = alloca ptr, align 8
  %185 = alloca %"class.std::function", align 8
  %186 = alloca %class.anon.286, align 8
  %187 = alloca %"class.HIR::TypeRef", align 8
  %188 = alloca %"class.HIR::TypeRef", align 8
  %189 = alloca ptr, align 8
  %190 = alloca %"class.std::function", align 8
  %191 = alloca %class.anon.287, align 8
  %192 = alloca ptr, align 8
  %193 = alloca %"class.std::function", align 8
  %194 = alloca %class.anon.288, align 8
  %195 = alloca ptr, align 8
  %196 = alloca %"class.std::function", align 8
  %197 = alloca %class.anon.289, align 8
  %198 = alloca %"class.HIR::TypeRef", align 8
  %199 = alloca %"class.HIR::TypeRef", align 8
  %200 = alloca i32, align 4
  %201 = alloca ptr, align 8
  %202 = alloca %"class.std::function", align 8
  %203 = alloca %class.anon.290, align 8
  %204 = alloca %"class.HIR::TypeRef", align 8
  %205 = alloca ptr, align 8
  %206 = alloca %"class.std::function", align 8
  %207 = alloca %class.anon.291, align 8
  %208 = alloca %struct.MonomorphState, align 8
  %209 = alloca %"class.HIR::ItemPath", align 8
  %210 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %211 = alloca %"class.std::function", align 8
  %212 = alloca %class.anon.439, align 8
  %213 = alloca %"class.HIR::TypeRef", align 8
  %214 = alloca %"class.HIR::TypeRef", align 8
  %215 = alloca %class.anon.440, align 8
  %216 = alloca %"class.std::function", align 8
  %217 = alloca %class.anon.441, align 1
  %218 = alloca %"class.std::function", align 8
  %219 = alloca %class.anon.443, align 1
  %220 = alloca i64, align 8
  %221 = alloca %"class.HIR::TypeRef", align 8
  %222 = alloca ptr, align 8
  %223 = alloca %"class.std::function", align 8
  %224 = alloca %class.anon.478, align 8
  %225 = alloca %"class.std::function", align 8
  %226 = alloca %class.anon.479, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #8
  %227 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %228 = select i1 %227, ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  store ptr %1, ptr %8, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %6, ptr noundef %228, ptr noundef nonnull %7)
          to label %229 unwind label %235

229:                                              ; preds = %5
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  store ptr %1, ptr %13, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull %12)
          to label %230 unwind label %237

230:                                              ; preds = %229
  invoke void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull %11, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(96) %2)
          to label %231 unwind label %239

231:                                              ; preds = %230
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  %232 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %233 unwind label %242

233:                                              ; preds = %231
  br i1 %232, label %234, label %244

234:                                              ; preds = %233
  invoke void @_Z12MIR_Dump_FcnRSoRKN3MIR8FunctionEj(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(96) %2, i32 noundef 0)
          to label %244 unwind label %242

235:                                              ; preds = %5
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %1724

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

239:                                              ; preds = %230
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %241

241:                                              ; preds = %239, %237
  %.pn = phi { ptr, i32 } [ %240, %239 ], [ %238, %237 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %1723

242:                                              ; preds = %._crit_edge10303, %753, %751, %749, %746, %._crit_edge1434.thread, %234, %231
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %1722

244:                                              ; preds = %234, %233
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  invoke void @_ZN3HIR7TypeRef8new_selfEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %14)
          to label %245 unwind label %268

245:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #8
  %246 = getelementptr inbounds i8, ptr %0, i64 16
  %247 = load ptr, ptr %246, align 8, !tbaa !9
  %.not = icmp eq ptr %247, null
  br i1 %.not, label %249, label %248

248:                                              ; preds = %245
  invoke void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %15, ptr noundef nonnull align 8 dereferenceable(96) %247, i32 noundef 0, i1 noundef zeroext false)
          to label %250 unwind label %270

249:                                              ; preds = %245
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %250 unwind label %270

250:                                              ; preds = %249, %248
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #8
  %251 = getelementptr inbounds i8, ptr %0, i64 24
  %252 = load ptr, ptr %251, align 8, !tbaa !28
  %.not831 = icmp eq ptr %252, null
  br i1 %.not831, label %254, label %253

253:                                              ; preds = %250
  invoke void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %16, ptr noundef nonnull align 8 dereferenceable(96) %252, i32 noundef 0, i1 noundef zeroext false)
          to label %255 unwind label %272

254:                                              ; preds = %250
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %255 unwind label %272

255:                                              ; preds = %254, %253
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %17) #8
  %256 = load ptr, ptr %246, align 8, !tbaa !9
  %.not832 = icmp eq ptr %256, null
  %. = select i1 %.not832, ptr null, ptr %15
  %257 = load ptr, ptr %251, align 8, !tbaa !28
  %.not833 = icmp eq ptr %257, null
  %258 = select i1 %.not833, ptr null, ptr %16
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %17, ptr noundef nonnull %14, ptr noundef %., ptr noundef %258, ptr noundef null, ptr noundef null)
          to label %259 unwind label %274

259:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %260 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  store ptr %260, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %261 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  store ptr %261, ptr %19, align 8
  %262 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br i1 %262, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %259
  %263 = getelementptr inbounds i8, ptr %21, i64 8
  br label %276

._crit_edge:                                      ; preds = %313, %259
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %17) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %17) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  %264 = getelementptr inbounds i8, ptr %2, i64 64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  %265 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  store ptr %265, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  %266 = call ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  store ptr %266, ptr %24, align 8
  %267 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br i1 %267, label %.lr.ph1422, label %._crit_edge1423

268:                                              ; preds = %244
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %321

270:                                              ; preds = %249, %248
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %320

272:                                              ; preds = %254, %253
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %319

274:                                              ; preds = %255
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %318

276:                                              ; preds = %.lr.ph, %313
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %278 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %279 unwind label %300

279:                                              ; preds = %276
  br i1 %278, label %280, label %302

280:                                              ; preds = %279
  %281 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %282 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %281, ptr noundef nonnull @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %283 unwind label %300

283:                                              ; preds = %280
  %284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %282, ptr noundef nonnull @.str.9)
          to label %285 unwind label %300

285:                                              ; preds = %283
  %286 = call noundef ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  %287 = ptrtoint ptr %277 to i64
  %288 = ptrtoint ptr %286 to i64
  %289 = sub i64 %287, %288
  %290 = ashr exact i64 %289, 3
  %291 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %284, i64 noundef %290)
          to label %292 unwind label %300

292:                                              ; preds = %285
  %293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull @.str.10)
          to label %294 unwind label %300

294:                                              ; preds = %292
  %295 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef nonnull align 8 dereferenceable(8) %277)
          to label %296 unwind label %300

296:                                              ; preds = %294
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %298 unwind label %300

298:                                              ; preds = %296
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %297, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %302 unwind label %300

300:                                              ; preds = %312, %305, %302, %298, %296, %294, %292, %285, %283, %280, %276
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %316

302:                                              ; preds = %298, %279
  %303 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %277, i1 noundef zeroext false)
          to label %304 unwind label %300

304:                                              ; preds = %302
  br i1 %303, label %312, label %305

305:                                              ; preds = %304
  %306 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %277)
          to label %307 unwind label %300

307:                                              ; preds = %305
  br i1 %306, label %312, label %308

308:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #8
  store ptr %277, ptr %21, align 8, !tbaa !5
  store ptr %2, ptr %263, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(16) %21) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %20)
          to label %309 unwind label %310

309:                                              ; preds = %308
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  br label %312

310:                                              ; preds = %308
  %311 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  br label %316

312:                                              ; preds = %307, %309, %304
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %22, ptr noundef nonnull align 8 dereferenceable(96) %17, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %277, i1 noundef zeroext false)
          to label %313 unwind label %300

313:                                              ; preds = %312
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  %314 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %315 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br i1 %315, label %276, label %._crit_edge

316:                                              ; preds = %310, %300
  %.pn1038 = phi { ptr, i32 } [ %301, %300 ], [ %311, %310 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %17) #8
  br label %318

._crit_edge1423:                                  ; preds = %335, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %27) #8
  %317 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #8
  call void @_ZNSaIbEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  invoke void @_ZNSt6vectorIbSaIbEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %317, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %338 unwind label %362

318:                                              ; preds = %316, %274
  %.pn1038.pn = phi { ptr, i32 } [ %.pn1038, %316 ], [ %275, %274 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %17) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #8
  br label %319

319:                                              ; preds = %318, %272
  %.pn1038.pn.pn = phi { ptr, i32 } [ %.pn1038.pn, %318 ], [ %273, %272 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #8
  br label %320

320:                                              ; preds = %319, %270
  %.pn1038.pn.pn.pn = phi { ptr, i32 } [ %.pn1038.pn.pn, %319 ], [ %271, %270 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  br label %321

321:                                              ; preds = %320, %268
  %.pn1038.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1038.pn.pn.pn, %320 ], [ %269, %268 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %1722

.lr.ph1422:                                       ; preds = %._crit_edge, %335
  %322 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  %323 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %324 = ptrtoint ptr %322 to i64
  %325 = ptrtoint ptr %323 to i64
  %326 = sub i64 %324, %325
  %327 = sdiv exact i64 %326, 192
  %328 = trunc i64 %327 to i32
  call void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %10, i32 noundef %328)
  %329 = getelementptr inbounds i8, ptr %322, i64 24
  %330 = call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %329)
  %.not1037 = icmp eq i32 %330, 0
  br i1 %.not1037, label %331, label %335

331:                                              ; preds = %.lr.ph1422
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %25)
          to label %332 unwind label %333

332:                                              ; preds = %331
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #8
  br label %335

333:                                              ; preds = %331
  %334 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %1722

335:                                              ; preds = %332, %.lr.ph1422
  %336 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  %337 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br i1 %337, label %.lr.ph1422, label %._crit_edge1423

338:                                              ; preds = %._crit_edge1423
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #8
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #8
  store i32 0, ptr %30, align 4, !tbaa !29
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %339 unwind label %364

339:                                              ; preds = %338
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #8
  %340 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  %.not8341430 = icmp eq i64 %340, 0
  br i1 %.not8341430, label %.critedge10304, label %.lr.ph1433

.lr.ph1433:                                       ; preds = %339
  %341 = getelementptr inbounds i8, ptr %33, i64 8
  %342 = getelementptr inbounds i8, ptr %34, i64 8
  %343 = getelementptr inbounds i8, ptr %35, i64 8
  %344 = getelementptr inbounds i8, ptr %72, i64 8
  %345 = getelementptr inbounds i8, ptr %76, i64 8
  %346 = getelementptr inbounds i8, ptr %64, i64 8
  %347 = getelementptr inbounds i8, ptr %68, i64 8
  %348 = getelementptr inbounds i8, ptr %59, i64 8
  %349 = getelementptr inbounds i8, ptr %50, i64 8
  %350 = getelementptr inbounds i8, ptr %54, i64 8
  %351 = getelementptr inbounds i8, ptr %46, i64 8
  %352 = getelementptr inbounds i8, ptr %42, i64 8
  br label %.outer

.outer:                                           ; preds = %.thread, %.lr.ph1433
  %.06941431.ph = phi i1 [ true, %.thread ], [ false, %.lr.ph1433 ]
  br label %353

353:                                              ; preds = %.outer, %722
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #8
  %354 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  %355 = load i32, ptr %354, align 4, !tbaa !29
  store i32 %355, ptr %31, align 4, !tbaa !29
  call void @_ZNSt6vectorIjSaIjEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  %356 = load i32, ptr %31, align 4, !tbaa !29
  %357 = zext i32 %356 to i64
  %358 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %359 = icmp ugt i64 %358, %357
  br i1 %359, label %368, label %360

360:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #8
  store ptr %31, ptr %33, align 8, !tbaa !5
  store ptr %2, ptr %341, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %32)
          to label %361 unwind label %366

361:                                              ; preds = %360
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  br label %368

362:                                              ; preds = %._crit_edge1423
  %363 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #8
  br label %756

364:                                              ; preds = %338
  %365 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #8
  br label %755

366:                                              ; preds = %360
  %367 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  br label %730

368:                                              ; preds = %361, %353
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #8
  %369 = load i32, ptr %31, align 4, !tbaa !29
  %370 = zext i32 %369 to i64
  %371 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %370)
          to label %372 unwind label %376

372:                                              ; preds = %368
  %373 = extractvalue { ptr, i64 } %371, 0
  store ptr %373, ptr %34, align 8
  %374 = extractvalue { ptr, i64 } %371, 1
  store i64 %374, ptr %342, align 8
  %375 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %34) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #8
  br i1 %375, label %722, label %378, !llvm.loop !31

376:                                              ; preds = %368
  %377 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #8
  br label %730

378:                                              ; preds = %372
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #8
  %379 = load i32, ptr %31, align 4, !tbaa !29
  %380 = zext i32 %379 to i64
  %381 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %380)
          to label %382 unwind label %392

382:                                              ; preds = %378
  %383 = extractvalue { ptr, i64 } %381, 0
  store ptr %383, ptr %35, align 8
  %384 = extractvalue { ptr, i64 } %381, 1
  store i64 %384, ptr %343, align 8
  %385 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %35, i1 noundef zeroext true) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #8
  %386 = load i32, ptr %31, align 4, !tbaa !29
  call void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %10, i32 noundef %386)
  %387 = load i32, ptr %31, align 4, !tbaa !29
  %388 = zext i32 %387 to i64
  %389 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %388) #8
  %390 = getelementptr inbounds i8, ptr %389, i64 24
  %391 = call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %390)
  switch i32 %391, label %722 [
    i32 0, label %394
    i32 1, label %395
    i32 2, label %.thread
    i32 3, label %408
    i32 4, label %414
    i32 5, label %446
    i32 6, label %478
    i32 7, label %537
    i32 8, label %587
    i32 9, label %664
  ]

392:                                              ; preds = %378
  %393 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #8
  br label %730

394:                                              ; preds = %382
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 707, ptr noundef nonnull @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

395:                                              ; preds = %382
  %396 = load i32, ptr %31, align 4, !tbaa !29
  %397 = zext i32 %396 to i64
  %398 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %397) #8
  %399 = getelementptr inbounds i8, ptr %398, i64 24
  %400 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %399)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #8
  store ptr %36, ptr %38, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %37)
          to label %401 unwind label %403

401:                                              ; preds = %395
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #8
  %402 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %402, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %402, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %405

403:                                              ; preds = %395
  %404 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #8
  br label %407

405:                                              ; preds = %401
  %406 = landingpad { ptr, i32 }
          cleanup
  br label %407

407:                                              ; preds = %405, %403
  %.pn1032 = phi { ptr, i32 } [ %406, %405 ], [ %404, %403 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  br label %730

408:                                              ; preds = %382
  %409 = load i32, ptr %31, align 4, !tbaa !29
  %410 = zext i32 %409 to i64
  %411 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %410) #8
  %412 = getelementptr inbounds i8, ptr %411, i64 24
  %413 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %412)
  br label %722

414:                                              ; preds = %382
  %415 = load i32, ptr %31, align 4, !tbaa !29
  %416 = zext i32 %415 to i64
  %417 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %416) #8
  %418 = getelementptr inbounds i8, ptr %417, i64 24
  %419 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %418)
  %420 = load i32, ptr %419, align 4, !tbaa !29
  %421 = zext i32 %420 to i64
  %422 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %423 = icmp ugt i64 %422, %421
  br i1 %423, label %435, label %424

424:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #8
  store ptr %39, ptr %41, align 8, !tbaa !5
  %425 = getelementptr inbounds i8, ptr %41, i64 8
  store ptr %419, ptr %425, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(16) %41) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %40)
          to label %426 unwind label %430

426:                                              ; preds = %424
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #8
  %427 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %427, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %427, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %432

428:                                              ; preds = %443
  %429 = landingpad { ptr, i32 }
          cleanup
  br label %730

430:                                              ; preds = %424
  %431 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #8
  br label %434

432:                                              ; preds = %426
  %433 = landingpad { ptr, i32 }
          cleanup
  br label %434

434:                                              ; preds = %432, %430
  %.pn1028 = phi { ptr, i32 } [ %433, %432 ], [ %431, %430 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  br label %730

435:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #8
  %436 = load i32, ptr %419, align 4, !tbaa !29
  %437 = zext i32 %436 to i64
  %438 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %437)
          to label %439 unwind label %444

439:                                              ; preds = %435
  %440 = extractvalue { ptr, i64 } %438, 0
  store ptr %440, ptr %42, align 8
  %441 = extractvalue { ptr, i64 } %438, 1
  store i64 %441, ptr %352, align 8
  %442 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %42) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #8
  br i1 %442, label %722, label %443

443:                                              ; preds = %439
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(4) %419)
          to label %722 unwind label %428

444:                                              ; preds = %435
  %445 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #8
  br label %730

446:                                              ; preds = %382
  %447 = load i32, ptr %31, align 4, !tbaa !29
  %448 = zext i32 %447 to i64
  %449 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %448) #8
  %450 = getelementptr inbounds i8, ptr %449, i64 24
  %451 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %450)
  %452 = load i32, ptr %451, align 4, !tbaa !33
  %453 = zext i32 %452 to i64
  %454 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %455 = icmp ugt i64 %454, %453
  br i1 %455, label %467, label %456

456:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #8
  store ptr %43, ptr %45, align 8, !tbaa !5
  %457 = getelementptr inbounds i8, ptr %45, i64 8
  store ptr %451, ptr %457, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(16) %45) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %44)
          to label %458 unwind label %462

458:                                              ; preds = %456
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #8
  %459 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %459, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %459, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %464

460:                                              ; preds = %475
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %730

462:                                              ; preds = %456
  %463 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #8
  br label %466

464:                                              ; preds = %458
  %465 = landingpad { ptr, i32 }
          cleanup
  br label %466

466:                                              ; preds = %464, %462
  %.pn1024 = phi { ptr, i32 } [ %465, %464 ], [ %463, %462 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %730

467:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #8
  %468 = load i32, ptr %451, align 4, !tbaa !33
  %469 = zext i32 %468 to i64
  %470 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %469)
          to label %471 unwind label %476

471:                                              ; preds = %467
  %472 = extractvalue { ptr, i64 } %470, 0
  store ptr %472, ptr %46, align 8
  %473 = extractvalue { ptr, i64 } %470, 1
  store i64 %473, ptr %351, align 8
  %474 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #8
  br i1 %474, label %722, label %475

475:                                              ; preds = %471
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(4) %451)
          to label %722 unwind label %460

476:                                              ; preds = %467
  %477 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #8
  br label %730

478:                                              ; preds = %382
  %479 = load i32, ptr %31, align 4, !tbaa !29
  %480 = zext i32 %479 to i64
  %481 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %480) #8
  %482 = getelementptr inbounds i8, ptr %481, i64 24
  %483 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %482)
  %484 = getelementptr inbounds i8, ptr %483, i64 32
  %485 = load i32, ptr %484, align 8, !tbaa !35
  %486 = zext i32 %485 to i64
  %487 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %488 = icmp ugt i64 %487, %486
  br i1 %488, label %500, label %489

489:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #8
  store ptr %47, ptr %49, align 8, !tbaa !5
  %490 = getelementptr inbounds i8, ptr %49, i64 8
  store ptr %483, ptr %490, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(16) %49) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %48)
          to label %491 unwind label %495

491:                                              ; preds = %489
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #8
  %492 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %492, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %492, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %497

493:                                              ; preds = %534, %508
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %730

495:                                              ; preds = %489
  %496 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #8
  br label %499

497:                                              ; preds = %491
  %498 = landingpad { ptr, i32 }
          cleanup
  br label %499

499:                                              ; preds = %497, %495
  %.pn1018 = phi { ptr, i32 } [ %498, %497 ], [ %496, %495 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #8
  br label %730

500:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #8
  %501 = load i32, ptr %484, align 8, !tbaa !35
  %502 = zext i32 %501 to i64
  %503 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %502)
          to label %504 unwind label %509

504:                                              ; preds = %500
  %505 = extractvalue { ptr, i64 } %503, 0
  store ptr %505, ptr %50, align 8
  %506 = extractvalue { ptr, i64 } %503, 1
  store i64 %506, ptr %349, align 8
  %507 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %50) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #8
  br i1 %507, label %511, label %508

508:                                              ; preds = %504
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(4) %484)
          to label %511 unwind label %493

509:                                              ; preds = %500
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #8
  br label %730

511:                                              ; preds = %504, %508
  %512 = getelementptr inbounds i8, ptr %483, i64 36
  %513 = load i32, ptr %512, align 4, !tbaa !43
  %514 = zext i32 %513 to i64
  %515 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %516 = icmp ugt i64 %515, %514
  br i1 %516, label %526, label %517

517:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #8
  store ptr %51, ptr %53, align 8, !tbaa !5
  %518 = getelementptr inbounds i8, ptr %53, i64 8
  store ptr %483, ptr %518, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(16) %53) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %52)
          to label %519 unwind label %521

519:                                              ; preds = %517
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #8
  %520 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %520, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %520, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %523

521:                                              ; preds = %517
  %522 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #8
  br label %525

523:                                              ; preds = %519
  %524 = landingpad { ptr, i32 }
          cleanup
  br label %525

525:                                              ; preds = %523, %521
  %.pn1020 = phi { ptr, i32 } [ %524, %523 ], [ %522, %521 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  br label %730

526:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %54) #8
  %527 = load i32, ptr %512, align 4, !tbaa !43
  %528 = zext i32 %527 to i64
  %529 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %528)
          to label %530 unwind label %535

530:                                              ; preds = %526
  %531 = extractvalue { ptr, i64 } %529, 0
  store ptr %531, ptr %54, align 8
  %532 = extractvalue { ptr, i64 } %529, 1
  store i64 %532, ptr %350, align 8
  %533 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %54) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #8
  br i1 %533, label %722, label %534

534:                                              ; preds = %530
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(4) %512)
          to label %722 unwind label %493

535:                                              ; preds = %526
  %536 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #8
  br label %730

537:                                              ; preds = %382
  %538 = load i32, ptr %31, align 4, !tbaa !29
  %539 = zext i32 %538 to i64
  %540 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %539) #8
  %541 = getelementptr inbounds i8, ptr %540, i64 24
  %542 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %541)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %55) #8
  %543 = getelementptr inbounds i8, ptr %542, i64 32
  store i32 0, ptr %55, align 4, !tbaa !29
  %544 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %543) #8
  %.not10306 = icmp eq i64 %544, 0
  br i1 %.not10306, label %._crit_edge1429, label %.lr.ph1428

._crit_edge1429:                                  ; preds = %581, %537
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #8
  br label %722

.lr.ph1428:                                       ; preds = %537, %581
  %545 = phi i32 [ %582, %581 ], [ 0, %537 ]
  %546 = zext i32 %545 to i64
  %547 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %543, i64 noundef %546) #8
  %548 = load i32, ptr %547, align 4, !tbaa !29
  %549 = zext i32 %548 to i64
  %550 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %551 = icmp ugt i64 %550, %549
  br i1 %551, label %566, label %552

552:                                              ; preds = %.lr.ph1428
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %58) #8
  store ptr %56, ptr %58, align 8, !tbaa !5
  %553 = getelementptr inbounds i8, ptr %58, i64 8
  store ptr %55, ptr %553, align 8, !tbaa !5
  %554 = getelementptr inbounds i8, ptr %58, i64 16
  store ptr %542, ptr %554, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(24) %58)
          to label %555 unwind label %558

555:                                              ; preds = %552
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %57)
          to label %556 unwind label %560

556:                                              ; preds = %555
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #8
  %557 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %557, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %557, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %563

558:                                              ; preds = %552
  %559 = landingpad { ptr, i32 }
          cleanup
  br label %562

560:                                              ; preds = %555
  %561 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  br label %562

562:                                              ; preds = %560, %558
  %.pn1012 = phi { ptr, i32 } [ %561, %560 ], [ %559, %558 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #8
  br label %565

563:                                              ; preds = %556
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %565

565:                                              ; preds = %563, %562
  %.pn1014 = phi { ptr, i32 } [ %564, %563 ], [ %.pn1012, %562 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #8
  br label %586

566:                                              ; preds = %.lr.ph1428
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %59) #8
  %567 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %543, i64 noundef %546) #8
  %568 = load i32, ptr %567, align 4, !tbaa !29
  %569 = zext i32 %568 to i64
  %570 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %569)
          to label %571 unwind label %577

571:                                              ; preds = %566
  %572 = extractvalue { ptr, i64 } %570, 0
  store ptr %572, ptr %59, align 8
  %573 = extractvalue { ptr, i64 } %570, 1
  store i64 %573, ptr %348, align 8
  %574 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %59) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #8
  br i1 %574, label %581, label %575

575:                                              ; preds = %571
  %576 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %543, i64 noundef %546) #8
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(4) %576)
          to label %581 unwind label %579

577:                                              ; preds = %566
  %578 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #8
  br label %586

579:                                              ; preds = %575
  %580 = landingpad { ptr, i32 }
          cleanup
  br label %586

581:                                              ; preds = %571, %575
  %582 = add i32 %545, 1
  store i32 %582, ptr %55, align 4, !tbaa !29
  %583 = zext i32 %582 to i64
  %584 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %543) #8
  %585 = icmp ugt i64 %584, %583
  br i1 %585, label %.lr.ph1428, label %._crit_edge1429, !llvm.loop !44

586:                                              ; preds = %579, %577, %565
  %.pn1016 = phi { ptr, i32 } [ %580, %579 ], [ %578, %577 ], [ %.pn1014, %565 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #8
  br label %730

587:                                              ; preds = %382
  %588 = load i32, ptr %31, align 4, !tbaa !29
  %589 = zext i32 %588 to i64
  %590 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %589) #8
  %591 = getelementptr inbounds i8, ptr %590, i64 24
  %592 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %591)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #8
  %593 = getelementptr inbounds i8, ptr %592, i64 40
  store i32 0, ptr %60, align 4, !tbaa !29
  %594 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %593) #8
  %.not10305 = icmp eq i64 %594, 0
  br i1 %.not10305, label %._crit_edge1426, label %.lr.ph1425

._crit_edge1426:                                  ; preds = %638, %587
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #8
  %595 = getelementptr inbounds i8, ptr %592, i64 32
  %596 = load i32, ptr %595, align 8, !tbaa !45
  %597 = zext i32 %596 to i64
  %598 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %599 = icmp ugt i64 %598, %597
  br i1 %599, label %653, label %644

600:                                              ; preds = %661
  %601 = landingpad { ptr, i32 }
          cleanup
  br label %730

.lr.ph1425:                                       ; preds = %587, %638
  %602 = phi i32 [ %639, %638 ], [ 0, %587 ]
  %603 = zext i32 %602 to i64
  %604 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %593, i64 noundef %603) #8
  %605 = load i32, ptr %604, align 4, !tbaa !29
  %606 = zext i32 %605 to i64
  %607 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %608 = icmp ugt i64 %607, %606
  br i1 %608, label %623, label %609

609:                                              ; preds = %.lr.ph1425
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %63) #8
  store ptr %61, ptr %63, align 8, !tbaa !5
  %610 = getelementptr inbounds i8, ptr %63, i64 8
  store ptr %60, ptr %610, align 8, !tbaa !5
  %611 = getelementptr inbounds i8, ptr %63, i64 16
  store ptr %592, ptr %611, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %612 unwind label %615

612:                                              ; preds = %609
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %62)
          to label %613 unwind label %617

613:                                              ; preds = %612
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #8
  %614 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %614, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %614, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %620

615:                                              ; preds = %609
  %616 = landingpad { ptr, i32 }
          cleanup
  br label %619

617:                                              ; preds = %612
  %618 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  br label %619

619:                                              ; preds = %617, %615
  %.pn1004 = phi { ptr, i32 } [ %618, %617 ], [ %616, %615 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #8
  br label %622

620:                                              ; preds = %613
  %621 = landingpad { ptr, i32 }
          cleanup
  br label %622

622:                                              ; preds = %620, %619
  %.pn1006 = phi { ptr, i32 } [ %621, %620 ], [ %.pn1004, %619 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  br label %643

623:                                              ; preds = %.lr.ph1425
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %64) #8
  %624 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %593, i64 noundef %603) #8
  %625 = load i32, ptr %624, align 4, !tbaa !29
  %626 = zext i32 %625 to i64
  %627 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %626)
          to label %628 unwind label %634

628:                                              ; preds = %623
  %629 = extractvalue { ptr, i64 } %627, 0
  store ptr %629, ptr %64, align 8
  %630 = extractvalue { ptr, i64 } %627, 1
  store i64 %630, ptr %346, align 8
  %631 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %64) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #8
  br i1 %631, label %638, label %632

632:                                              ; preds = %628
  %633 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %593, i64 noundef %603) #8
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(4) %633)
          to label %638 unwind label %636

634:                                              ; preds = %623
  %635 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #8
  br label %643

636:                                              ; preds = %632
  %637 = landingpad { ptr, i32 }
          cleanup
  br label %643

638:                                              ; preds = %628, %632
  %639 = add i32 %602, 1
  store i32 %639, ptr %60, align 4, !tbaa !29
  %640 = zext i32 %639 to i64
  %641 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %593) #8
  %642 = icmp ugt i64 %641, %640
  br i1 %642, label %.lr.ph1425, label %._crit_edge1426, !llvm.loop !53

643:                                              ; preds = %636, %634, %622
  %.pn1008 = phi { ptr, i32 } [ %637, %636 ], [ %635, %634 ], [ %.pn1006, %622 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #8
  br label %730

644:                                              ; preds = %._crit_edge1426
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #8
  store ptr %65, ptr %67, align 8, !tbaa !5
  %645 = getelementptr inbounds i8, ptr %67, i64 8
  store ptr %592, ptr %645, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 8 dereferenceable(16) %67) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %66)
          to label %646 unwind label %648

646:                                              ; preds = %644
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #8
  %647 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %647, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %647, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %650

648:                                              ; preds = %644
  %649 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #8
  br label %652

650:                                              ; preds = %646
  %651 = landingpad { ptr, i32 }
          cleanup
  br label %652

652:                                              ; preds = %650, %648
  %.pn1002 = phi { ptr, i32 } [ %651, %650 ], [ %649, %648 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  br label %730

653:                                              ; preds = %._crit_edge1426
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %68) #8
  %654 = load i32, ptr %595, align 8, !tbaa !45
  %655 = zext i32 %654 to i64
  %656 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %655)
          to label %657 unwind label %662

657:                                              ; preds = %653
  %658 = extractvalue { ptr, i64 } %656, 0
  store ptr %658, ptr %68, align 8
  %659 = extractvalue { ptr, i64 } %656, 1
  store i64 %659, ptr %347, align 8
  %660 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %68) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #8
  br i1 %660, label %722, label %661

661:                                              ; preds = %657
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(4) %595)
          to label %722 unwind label %600

662:                                              ; preds = %653
  %663 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #8
  br label %730

664:                                              ; preds = %382
  %665 = load i32, ptr %31, align 4, !tbaa !29
  %666 = zext i32 %665 to i64
  %667 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %666) #8
  %668 = getelementptr inbounds i8, ptr %667, i64 24
  %669 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %668)
  %670 = load i32, ptr %669, align 8, !tbaa !54
  %671 = zext i32 %670 to i64
  %672 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %673 = icmp ugt i64 %672, %671
  br i1 %673, label %685, label %674

674:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %71) #8
  store ptr %69, ptr %71, align 8, !tbaa !5
  %675 = getelementptr inbounds i8, ptr %71, i64 8
  store ptr %669, ptr %675, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(16) %71) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %70)
          to label %676 unwind label %680

676:                                              ; preds = %674
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #8
  %677 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %677, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %677, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %682

678:                                              ; preds = %719, %693
  %679 = landingpad { ptr, i32 }
          cleanup
  br label %730

680:                                              ; preds = %674
  %681 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #8
  br label %684

682:                                              ; preds = %676
  %683 = landingpad { ptr, i32 }
          cleanup
  br label %684

684:                                              ; preds = %682, %680
  %.pn995 = phi { ptr, i32 } [ %683, %682 ], [ %681, %680 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #8
  br label %730

685:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %72) #8
  %686 = load i32, ptr %669, align 8, !tbaa !54
  %687 = zext i32 %686 to i64
  %688 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %687)
          to label %689 unwind label %694

689:                                              ; preds = %685
  %690 = extractvalue { ptr, i64 } %688, 0
  store ptr %690, ptr %72, align 8
  %691 = extractvalue { ptr, i64 } %688, 1
  store i64 %691, ptr %344, align 8
  %692 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %72) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #8
  br i1 %692, label %696, label %693

693:                                              ; preds = %689
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(4) %669)
          to label %696 unwind label %678

694:                                              ; preds = %685
  %695 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #8
  br label %730

696:                                              ; preds = %689, %693
  %697 = getelementptr inbounds i8, ptr %669, i64 4
  %698 = load i32, ptr %697, align 4, !tbaa !62
  %699 = zext i32 %698 to i64
  %700 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %701 = icmp ugt i64 %700, %699
  br i1 %701, label %711, label %702

702:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %75) #8
  store ptr %73, ptr %75, align 8, !tbaa !5
  %703 = getelementptr inbounds i8, ptr %75, i64 8
  store ptr %669, ptr %703, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(16) %75) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %74)
          to label %704 unwind label %706

704:                                              ; preds = %702
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #8
  %705 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %705, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %705, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %708

706:                                              ; preds = %702
  %707 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #8
  br label %710

708:                                              ; preds = %704
  %709 = landingpad { ptr, i32 }
          cleanup
  br label %710

710:                                              ; preds = %708, %706
  %.pn997 = phi { ptr, i32 } [ %709, %708 ], [ %707, %706 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #8
  br label %730

711:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %76) #8
  %712 = load i32, ptr %697, align 4, !tbaa !62
  %713 = zext i32 %712 to i64
  %714 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %27, i64 noundef %713)
          to label %715 unwind label %720

715:                                              ; preds = %711
  %716 = extractvalue { ptr, i64 } %714, 0
  store ptr %716, ptr %76, align 8
  %717 = extractvalue { ptr, i64 } %714, 1
  store i64 %717, ptr %345, align 8
  %718 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %76) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #8
  br i1 %718, label %722, label %719

719:                                              ; preds = %715
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(4) %697)
          to label %722 unwind label %678

720:                                              ; preds = %711
  %721 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #8
  br label %730

722:                                              ; preds = %382, %408, %._crit_edge1429, %443, %439, %475, %471, %534, %530, %661, %657, %719, %715, %372
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #8
  %723 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  %.not834 = icmp eq i64 %723, 0
  br i1 %.not834, label %._crit_edge1434, label %353

.thread:                                          ; preds = %382
  %724 = load i32, ptr %31, align 4, !tbaa !29
  %725 = zext i32 %724 to i64
  %726 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %725) #8
  %727 = getelementptr inbounds i8, ptr %726, i64 24
  %728 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %727)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #8
  %729 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  %.not83410607 = icmp eq i64 %729, 0
  br i1 %.not83410607, label %._crit_edge1434.thread, label %.outer

730:                                              ; preds = %678, %684, %694, %710, %720, %600, %643, %652, %662, %493, %499, %509, %525, %535, %460, %466, %476, %428, %434, %444, %586, %407, %392, %376, %366
  %.pn999.pn = phi { ptr, i32 } [ %.pn1016, %586 ], [ %.pn1032, %407 ], [ %393, %392 ], [ %377, %376 ], [ %367, %366 ], [ %429, %428 ], [ %445, %444 ], [ %.pn1028, %434 ], [ %461, %460 ], [ %477, %476 ], [ %.pn1024, %466 ], [ %494, %493 ], [ %536, %535 ], [ %.pn1020, %525 ], [ %510, %509 ], [ %.pn1018, %499 ], [ %.pn1008, %643 ], [ %601, %600 ], [ %663, %662 ], [ %.pn1002, %652 ], [ %679, %678 ], [ %721, %720 ], [ %.pn997, %710 ], [ %695, %694 ], [ %.pn995, %684 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #8
  br label %755

._crit_edge1434:                                  ; preds = %722
  br i1 %.06941431.ph, label %._crit_edge1434.thread, label %.critedge10304

.critedge10304:                                   ; preds = %339, %._crit_edge1434
  %731 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %732 unwind label %742

732:                                              ; preds = %.critedge10304
  br i1 %731, label %733, label %._crit_edge1434.thread

733:                                              ; preds = %732
  %734 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %735 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %734, ptr noundef nonnull @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %736 unwind label %742

736:                                              ; preds = %733
  %737 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %735, ptr noundef nonnull @.str.11)
          to label %738 unwind label %742

738:                                              ; preds = %736
  %739 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %737, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %740 unwind label %742

740:                                              ; preds = %738
  %741 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %739, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %._crit_edge1434.thread unwind label %742

742:                                              ; preds = %740, %738, %736, %733, %.critedge10304
  %743 = landingpad { ptr, i32 }
          cleanup
  br label %755

._crit_edge1434.thread:                           ; preds = %.thread, %732, %740, %._crit_edge1434
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %27) #8
  %744 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %745 unwind label %242

745:                                              ; preds = %._crit_edge1434.thread
  br i1 %744, label %746, label %757

746:                                              ; preds = %745
  %747 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %748 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %747, ptr noundef nonnull @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %749 unwind label %242

749:                                              ; preds = %746
  %750 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %748, ptr noundef nonnull @.str.12)
          to label %751 unwind label %242

751:                                              ; preds = %749
  %752 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %750, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %753 unwind label %242

753:                                              ; preds = %751
  %754 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %752, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %757 unwind label %242

755:                                              ; preds = %742, %730, %364
  %.pn999.pn.pn = phi { ptr, i32 } [ %.pn999.pn, %730 ], [ %743, %742 ], [ %365, %364 ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #8
  br label %756

756:                                              ; preds = %755, %362
  %.pn999.pn.pn.pn = phi { ptr, i32 } [ %.pn999.pn.pn, %755 ], [ %363, %362 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %27) #8
  br label %1722

757:                                              ; preds = %753, %745
  %758 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %.not10307 = icmp eq i64 %758, 0
  br i1 %.not10307, label %._crit_edge10303, label %.lr.ph10302

.lr.ph10302:                                      ; preds = %757
  %759 = getelementptr inbounds i8, ptr %10, i64 16
  %760 = getelementptr inbounds i8, ptr %10, i64 8
  %761 = getelementptr inbounds i8, ptr %166, i64 8
  %762 = getelementptr inbounds i8, ptr %161, i64 8
  %763 = getelementptr inbounds i8, ptr %152, i64 8
  %764 = getelementptr inbounds i8, ptr %154, i64 8
  %765 = getelementptr inbounds i8, ptr %156, i64 8
  %766 = getelementptr inbounds i8, ptr %150, i64 8
  %767 = getelementptr inbounds i8, ptr %146, i64 8
  %768 = getelementptr inbounds i8, ptr %132, i64 8
  %769 = getelementptr inbounds i8, ptr %134, i64 8
  %770 = getelementptr inbounds i8, ptr %136, i64 8
  %771 = getelementptr inbounds i8, ptr %10, i64 24
  %772 = getelementptr inbounds i8, ptr %212, i64 8
  %773 = getelementptr inbounds i8, ptr %215, i64 8
  %774 = getelementptr inbounds i8, ptr %215, i64 16
  %775 = getelementptr inbounds i8, ptr %215, i64 24
  %776 = getelementptr inbounds i8, ptr %226, i64 8
  br label %777

._crit_edge10303:                                 ; preds = %.loopexit1212, %757
  invoke void @_Z21MIR_Validate_ValStateRN3MIR11TypeResolveERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(96) %2)
          to label %1721 unwind label %242

777:                                              ; preds = %.lr.ph10302, %.loopexit1212
  %778 = phi i64 [ 0, %.lr.ph10302 ], [ %1507, %.loopexit1212 ]
  %.069710300 = phi i32 [ 0, %.lr.ph10302 ], [ %1506, %.loopexit1212 ]
  %779 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %778) #8
  %780 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %779) #8
  %.not10308 = icmp eq i64 %780, 0
  br i1 %.not10308, label %._crit_edge10023, label %.lr.ph10022

._crit_edge10023:                                 ; preds = %1486, %777
  call void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %10, i32 noundef %.069710300)
  %781 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1491 unwind label %1504

.lr.ph10022:                                      ; preds = %777, %1486
  %782 = phi i64 [ %1488, %1486 ], [ 0, %777 ]
  %.069810020 = phi i32 [ %1487, %1486 ], [ 0, %777 ]
  %783 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNKSt6vectorIN3MIR9StatementESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %779, i64 noundef %782) #8
  call void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %10, i32 noundef %.069710300, i32 noundef %.069810020)
  %784 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %785 unwind label %.loopexit1213

785:                                              ; preds = %.lr.ph10022
  br i1 %784, label %786, label %797

786:                                              ; preds = %785
  %787 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %788 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %787, ptr noundef nonnull @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %789 unwind label %.loopexit1213

789:                                              ; preds = %786
  %790 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %788, ptr noundef nonnull align 8 dereferenceable(120) %10)
          to label %791 unwind label %.loopexit1213

791:                                              ; preds = %789
  %792 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %790, ptr noundef nonnull align 8 dereferenceable(152) %783)
          to label %793 unwind label %.loopexit1213

793:                                              ; preds = %791
  %794 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %792, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %795 unwind label %.loopexit1213

795:                                              ; preds = %793
  %796 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %794, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %797 unwind label %.loopexit1213

.loopexit1213:                                    ; preds = %.lr.ph10022, %786, %789, %791, %793, %795
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %1722

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

797:                                              ; preds = %795, %785
  %798 = call noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %783)
  switch i32 %798, label %1486 [
    i32 0, label %799
    i32 1, label %801
  ]

799:                                              ; preds = %797
  %800 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %800, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %800, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %.loopexit.split-lp

801:                                              ; preds = %797
  %802 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %783)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %803 unwind label %805

803:                                              ; preds = %801
  %804 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(32) %802, i32 noundef 0)
          to label %.lr.ph10018 unwind label %807

.loopexit1211:                                    ; preds = %1476, %877, %.preheader1191.split, %.preheader1189.split, %.preheader1187.split, %.preheader1185.split, %.preheader1175.split, %.preheader1173.split, %.preheader1167.split, %.preheader1114.split, %.preheader1112.split, %.lr.ph10018, %..loopexit1140_crit_edge, %..loopexit1143_crit_edge, %1406, %._crit_edge2124, %.preheader1138, %.lr.ph9543, %..loopexit1087_crit_edge, %..loopexit1088_crit_edge, %..loopexit1089_crit_edge, %853, %853, %853, %853, %853, %853, %865, %865, %865, %865, %865, %865, %865, %.preheader1116.split.split, %913, %..loopexit1093_crit_edge, %..loopexit1144_crit_edge, %..loopexit1147_crit_edge, %..loopexit1148_crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #8
  br label %1486

805:                                              ; preds = %801
  %806 = landingpad { ptr, i32 }
          cleanup
  br label %1485

807:                                              ; preds = %803
  %808 = landingpad { ptr, i32 }
          cleanup
  br label %1484

.lr.ph10018:                                      ; preds = %803
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #8
  store ptr %10, ptr %78, align 8, !tbaa !5
  %809 = getelementptr inbounds i8, ptr %802, i64 32
  %810 = call noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  switch i32 %810, label %.loopexit1211 [
    i32 0, label %826
    i32 1, label %.preheader1163.split.split
    i32 3, label %.lr.ph9543
    i32 4, label %.preheader1167.split
    i32 2, label %.preheader1169.split.split
    i32 5, label %.lr.ph5479
    i32 6, label %.preheader1173.split
    i32 7, label %.preheader1175.split
    i32 8, label %.lr.ph2352
    i32 9, label %.lr.ph2349
    i32 10, label %.preheader1181.split.split
    i32 11, label %.preheader1183.split.split
    i32 12, label %.preheader1185.split
    i32 13, label %.preheader1187.split
    i32 14, label %.preheader1189.split
    i32 15, label %.preheader1191.split
  ]

.preheader1191.split:                             ; preds = %.lr.ph10018
  %811 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  br label %.loopexit1211

.preheader1189.split:                             ; preds = %.lr.ph10018
  %812 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  br label %.loopexit1211

.preheader1187.split:                             ; preds = %.lr.ph10018
  %813 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  br label %.loopexit1211

.preheader1185.split:                             ; preds = %.lr.ph10018
  %814 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  br label %.loopexit1211

.preheader1183.split.split:                       ; preds = %.lr.ph10018
  %815 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  %816 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %817 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %816)
  br i1 %817, label %1452, label %.split

.preheader1181.split.split:                       ; preds = %.lr.ph10018
  %818 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  %819 = getelementptr inbounds i8, ptr %818, i64 48
  %820 = call noundef zeroext i1 @_ZNK3MIR5Param11is_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %819)
  br i1 %820, label %1403, label %1411

.preheader1175.split:                             ; preds = %.lr.ph10018
  %821 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZNK3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  br label %.loopexit1211

.preheader1173.split:                             ; preds = %.lr.ph10018
  %822 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  br label %.loopexit1211

.preheader1169.split.split:                       ; preds = %.lr.ph10018
  %823 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %124) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %124)
          to label %1015 unwind label %.split5484.split

.preheader1167.split:                             ; preds = %.lr.ph10018
  %824 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  br label %.loopexit1211

.preheader1163.split.split:                       ; preds = %.lr.ph10018
  %825 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %827 unwind label %.split9549.split

826:                                              ; preds = %.lr.ph10018
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 755, ptr noundef nonnull @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

827:                                              ; preds = %.preheader1163.split.split
  %828 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(32) %825, i32 noundef 0)
          to label %829 unwind label %.split9552.split

829:                                              ; preds = %827
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %804, ptr noundef nonnull align 8 dereferenceable(8) %828)
          to label %..loopexit1140_crit_edge unwind label %.split9552.split

..loopexit1140_crit_edge:                         ; preds = %829
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #8
  br label %.loopexit1211

.split9549.split:                                 ; preds = %.preheader1163.split.split
  %830 = landingpad { ptr, i32 }
          cleanup
  br label %832

.split9552.split:                                 ; preds = %829, %827
  %831 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  br label %832

832:                                              ; preds = %.split9552.split, %.split9549.split
  %.pn988 = phi { ptr, i32 } [ %831, %.split9552.split ], [ %830, %.split9549.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #8
  br label %1483

.lr.ph9543:                                       ; preds = %.lr.ph10018
  %833 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  %834 = call noundef i32 @_ZNK3MIR8Constant3tagEv(ptr noundef nonnull align 8 dereferenceable(40) %833)
  switch i32 %834, label %.loopexit1211 [
    i32 0, label %852
    i32 1, label %.preheader1100.split.split
    i32 2, label %.preheader1102.split.split
    i32 3, label %.preheader1104.split
    i32 4, label %.preheader1106.split.split
    i32 5, label %.preheader1108.split.split
    i32 6, label %.preheader1110.split.split
    i32 7, label %.preheader1112.split
    i32 8, label %.preheader1114.split
    i32 9, label %.preheader1116.split.split
    i32 10, label %.lr.ph7171
  ]

.preheader1116.split.split:                       ; preds = %.lr.ph9543
  %835 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR8Constant11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(40) %833)
  %836 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %837 = call noundef zeroext i1 @_ZNK3HIR8TypeData16is_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %836)
  br i1 %837, label %.loopexit1211, label %912

.preheader1114.split:                             ; preds = %.lr.ph9543
  %838 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3MIR8Constant10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(40) %833)
  br label %.loopexit1211

.preheader1112.split:                             ; preds = %.lr.ph9543
  %839 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR8Constant8as_ConstEv(ptr noundef nonnull align 8 dereferenceable(40) %833)
  br label %.loopexit1211

.preheader1110.split.split:                       ; preds = %.lr.ph9543
  %840 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR8Constant15as_StaticStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(40) %833)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #8
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %94, i32 noundef 16)
          to label %905 unwind label %.split7585.split

.preheader1108.split.split:                       ; preds = %.lr.ph9543
  %841 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR8Constant8as_BytesEv(ptr noundef nonnull align 8 dereferenceable(40) %833)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #8
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %92, i32 noundef 2)
          to label %894 unwind label %.split7927.split

.preheader1106.split.split:                       ; preds = %.lr.ph9543
  %842 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR8Constant7as_BoolEv(ptr noundef nonnull align 8 dereferenceable(40) %833)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #8
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %89, i32 noundef 14)
          to label %890 unwind label %.split8284.split

.preheader1104.split:                             ; preds = %.lr.ph9543
  %843 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %833)
  %844 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %845 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %844)
  br i1 %845, label %877, label %.critedge1050

.preheader1102.split.split:                       ; preds = %.lr.ph9543
  %846 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %833)
  %847 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %848 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %847)
  br i1 %848, label %865, label %.critedge1048

.preheader1100.split.split:                       ; preds = %.lr.ph9543
  %849 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %833)
  %850 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %851 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %850)
  br i1 %851, label %853, label %.critedge

852:                                              ; preds = %.lr.ph9543
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 762, ptr noundef nonnull @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

853:                                              ; preds = %.preheader1100.split.split
  %854 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %855 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %854)
  %856 = load i32, ptr %855, align 4, !tbaa !63
  switch i32 %856, label %.critedge [
    i32 3, label %.loopexit1211
    i32 5, label %.loopexit1211
    i32 7, label %.loopexit1211
    i32 9, label %.loopexit1211
    i32 11, label %.loopexit1211
    i32 1, label %.loopexit1211
  ]

.critedge:                                        ; preds = %.preheader1100.split.split, %853
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %82) #8
  store ptr %80, ptr %82, align 8, !tbaa !5
  %857 = getelementptr inbounds i8, ptr %82, i64 8
  store ptr %804, ptr %857, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull align 8 dereferenceable(16) %82) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %81)
          to label %858 unwind label %860

858:                                              ; preds = %.critedge
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %82) #8
  %859 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %859, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %859, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %862

860:                                              ; preds = %.critedge
  %861 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %82) #8
  br label %864

862:                                              ; preds = %858
  %863 = landingpad { ptr, i32 }
          cleanup
  br label %864

864:                                              ; preds = %862, %860
  %.pn985 = phi { ptr, i32 } [ %863, %862 ], [ %861, %860 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #8
  br label %1483

865:                                              ; preds = %.preheader1102.split.split
  %866 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %867 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %866)
  %868 = load i32, ptr %867, align 4, !tbaa !63
  switch i32 %868, label %.critedge1048 [
    i32 2, label %.loopexit1211
    i32 4, label %.loopexit1211
    i32 6, label %.loopexit1211
    i32 8, label %.loopexit1211
    i32 10, label %.loopexit1211
    i32 0, label %.loopexit1211
    i32 15, label %.loopexit1211
  ]

.critedge1048:                                    ; preds = %.preheader1102.split.split, %865
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %85) #8
  store ptr %83, ptr %85, align 8, !tbaa !5
  %869 = getelementptr inbounds i8, ptr %85, i64 8
  store ptr %804, ptr %869, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 8 dereferenceable(16) %85) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %84)
          to label %870 unwind label %872

870:                                              ; preds = %.critedge1048
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #8
  %871 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %871, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %871, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %874

872:                                              ; preds = %.critedge1048
  %873 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #8
  br label %876

874:                                              ; preds = %870
  %875 = landingpad { ptr, i32 }
          cleanup
  br label %876

876:                                              ; preds = %874, %872
  %.pn983 = phi { ptr, i32 } [ %875, %874 ], [ %873, %872 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #8
  br label %1483

877:                                              ; preds = %.preheader1104.split
  %878 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %879 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %878)
  %880 = load i32, ptr %879, align 4, !tbaa !63
  %881 = and i32 %880, -2
  %switch = icmp eq i32 %881, 12
  br i1 %switch, label %.loopexit1211, label %.critedge1050, !llvm.loop !65

.critedge1050:                                    ; preds = %877, %.preheader1104.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %88) #8
  store ptr %86, ptr %88, align 8, !tbaa !5
  %882 = getelementptr inbounds i8, ptr %88, i64 8
  store ptr %804, ptr %882, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(16) %88) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %87)
          to label %883 unwind label %885

883:                                              ; preds = %.critedge1050
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #8
  %884 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %884, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %884, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %887

885:                                              ; preds = %.critedge1050
  %886 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #8
  br label %889

887:                                              ; preds = %883
  %888 = landingpad { ptr, i32 }
          cleanup
  br label %889

889:                                              ; preds = %887, %885
  %.pn981 = phi { ptr, i32 } [ %888, %887 ], [ %886, %885 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #8
  br label %1483

890:                                              ; preds = %.preheader1106.split.split
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %804, ptr noundef nonnull align 8 dereferenceable(8) %89)
          to label %..loopexit1087_crit_edge unwind label %.split8287.split

..loopexit1087_crit_edge:                         ; preds = %890
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #8
  br label %.loopexit1211

.split8284.split:                                 ; preds = %.preheader1106.split.split
  %891 = landingpad { ptr, i32 }
          cleanup
  br label %893

.split8287.split:                                 ; preds = %890
  %892 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #8
  br label %893

893:                                              ; preds = %.split8287.split, %.split8284.split
  %.pn979 = phi { ptr, i32 } [ %892, %.split8287.split ], [ %891, %.split8284.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #8
  br label %1483

894:                                              ; preds = %.preheader1108.split.split
  %895 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %841) #8
  invoke void @_ZN3HIR7TypeRef9new_arrayES0_m(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %91, ptr noundef nonnull %92, i64 noundef %895)
          to label %896 unwind label %.split7930.split

896:                                              ; preds = %894
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %90, i32 noundef 0, ptr noundef nonnull %91)
          to label %897 unwind label %.split7933.split

897:                                              ; preds = %896
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %804, ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %..loopexit1088_crit_edge unwind label %.split7936.split

..loopexit1088_crit_edge:                         ; preds = %897
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #8
  br label %.loopexit1211

.split7927.split:                                 ; preds = %.preheader1108.split.split
  %898 = landingpad { ptr, i32 }
          cleanup
  br label %904

.split7930.split:                                 ; preds = %894
  %899 = landingpad { ptr, i32 }
          cleanup
  br label %903

.split7933.split:                                 ; preds = %896
  %900 = landingpad { ptr, i32 }
          cleanup
  br label %902

.split7936.split:                                 ; preds = %897
  %901 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #8
  br label %902

902:                                              ; preds = %.split7936.split, %.split7933.split
  %.pn975 = phi { ptr, i32 } [ %901, %.split7936.split ], [ %900, %.split7933.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  br label %903

903:                                              ; preds = %902, %.split7930.split
  %.pn975.pn = phi { ptr, i32 } [ %.pn975, %902 ], [ %899, %.split7930.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  br label %904

904:                                              ; preds = %903, %.split7927.split
  %.pn975.pn.pn = phi { ptr, i32 } [ %.pn975.pn, %903 ], [ %898, %.split7927.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #8
  br label %1483

905:                                              ; preds = %.preheader1110.split.split
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %93, i32 noundef 0, ptr noundef nonnull %94)
          to label %906 unwind label %.split7588.split

906:                                              ; preds = %905
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %804, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %..loopexit1089_crit_edge unwind label %.split7591.split

..loopexit1089_crit_edge:                         ; preds = %906
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #8
  br label %.loopexit1211

.split7585.split:                                 ; preds = %.preheader1110.split.split
  %907 = landingpad { ptr, i32 }
          cleanup
  br label %911

.split7588.split:                                 ; preds = %905
  %908 = landingpad { ptr, i32 }
          cleanup
  br label %910

.split7591.split:                                 ; preds = %906
  %909 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  br label %910

910:                                              ; preds = %.split7591.split, %.split7588.split
  %.pn972 = phi { ptr, i32 } [ %909, %.split7591.split ], [ %908, %.split7588.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  br label %911

911:                                              ; preds = %910, %.split7585.split
  %.pn972.pn = phi { ptr, i32 } [ %.pn972, %910 ], [ %907, %.split7585.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #8
  br label %1483

912:                                              ; preds = %.preheader1116.split.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %96) #8
  store ptr %804, ptr %96, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(8) %96) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %95)
          to label %913 unwind label %.split7176.split

913:                                              ; preds = %912
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #8
  br label %.loopexit1211

.split7176.split:                                 ; preds = %912
  %914 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #8
  br label %1483

.lr.ph7171:                                       ; preds = %.lr.ph9543
  %915 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR8Constant11as_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %833)
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %97) #8
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %97)
          to label %916 unwind label %921

916:                                              ; preds = %.lr.ph7171
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %98) #8
  %917 = load ptr, ptr %759, align 8, !tbaa !66
  %918 = load ptr, ptr %760, align 8, !tbaa !71
  %919 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %915) #8
  invoke void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind nonnull writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %98, ptr noundef nonnull align 8 dereferenceable(424) %917, ptr noundef nonnull align 8 dereferenceable(8) %918, ptr noundef nonnull align 8 dereferenceable(88) %919, ptr noundef nonnull align 8 dereferenceable(144) %97, i1 noundef zeroext true, ptr noundef null)
          to label %920 unwind label %923

920:                                              ; preds = %916
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %99) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %.lr.ph7168 unwind label %925

..loopexit1093_crit_edge:                         ; preds = %.lr.ph7168, %..loopexit_crit_edge, %.preheader1062, %1003, %.preheader1064, %1006, %.preheader1066, %1009
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #8
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %98) #8
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %97) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %97) #8
  br label %.loopexit1211

921:                                              ; preds = %.lr.ph7171
  %922 = landingpad { ptr, i32 }
          cleanup
  br label %1014

923:                                              ; preds = %916
  %924 = landingpad { ptr, i32 }
          cleanup
  br label %1013

925:                                              ; preds = %920
  %926 = landingpad { ptr, i32 }
          cleanup
  br label %1012

.lr.ph7168:                                       ; preds = %920
  %927 = call noundef i32 @_ZNK18StaticTraitResolve8ValuePtr3tagEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  switch i32 %927, label %..loopexit1093_crit_edge [
    i32 0, label %941
    i32 1, label %942
    i32 2, label %952
    i32 3, label %962
    i32 9, label %972
    i32 7, label %982
    i32 4, label %.preheader
    i32 5, label %.preheader1062
    i32 6, label %.preheader1064
    i32 8, label %.preheader1066
  ]

.preheader1066:                                   ; preds = %.lr.ph7168
  %928 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN18StaticTraitResolve8ValuePtr20as_StructConstructorEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  %929 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %930 = call noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %929)
  br i1 %930, label %..loopexit1093_crit_edge, label %1008

.preheader1064:                                   ; preds = %.lr.ph7168
  %931 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN18StaticTraitResolve8ValuePtr18as_EnumConstructorEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  %932 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %933 = call noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %932)
  br i1 %933, label %..loopexit1093_crit_edge, label %1005

.preheader1062:                                   ; preds = %.lr.ph7168
  %934 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  %935 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %936 = call noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %935)
  br i1 %936, label %..loopexit1093_crit_edge, label %1002

.preheader:                                       ; preds = %.lr.ph7168
  %937 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %115) #8
  %938 = load ptr, ptr %760, align 8, !tbaa !71
  %939 = load ptr, ptr %937, align 8, !tbaa !5
  %940 = getelementptr inbounds i8, ptr %939, i64 176
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %115, ptr noundef nonnull align 8 dereferenceable(96) %97, ptr noundef nonnull align 8 dereferenceable(8) %938, ptr noundef nonnull align 8 dereferenceable(8) %940, i1 noundef zeroext true)
          to label %993 unwind label %.split6831.split

941:                                              ; preds = %.lr.ph7168
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 842, ptr noundef nonnull @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

942:                                              ; preds = %.lr.ph7168
  %943 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN18StaticTraitResolve8ValuePtr11as_NotFoundEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %100) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %102) #8
  store ptr %100, ptr %102, align 8, !tbaa !5
  %944 = getelementptr inbounds i8, ptr %102, i64 8
  store ptr %915, ptr %944, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 8 dereferenceable(16) %102) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %101)
          to label %945 unwind label %947

945:                                              ; preds = %942
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #8
  %946 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %946, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %946, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %949

947:                                              ; preds = %942
  %948 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %102) #8
  br label %951

949:                                              ; preds = %945
  %950 = landingpad { ptr, i32 }
          cleanup
  br label %951

951:                                              ; preds = %949, %947
  %.pn965 = phi { ptr, i32 } [ %950, %949 ], [ %948, %947 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #8
  br label %1011

952:                                              ; preds = %.lr.ph7168
  %953 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN18StaticTraitResolve8ValuePtr14as_NotYetKnownEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %103) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %105) #8
  store ptr %103, ptr %105, align 8, !tbaa !5
  %954 = getelementptr inbounds i8, ptr %105, i64 8
  store ptr %915, ptr %954, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull align 8 dereferenceable(16) %105) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %104)
          to label %955 unwind label %957

955:                                              ; preds = %952
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %105) #8
  %956 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %956, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %956, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %959

957:                                              ; preds = %952
  %958 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %105) #8
  br label %961

959:                                              ; preds = %955
  %960 = landingpad { ptr, i32 }
          cleanup
  br label %961

961:                                              ; preds = %959, %957
  %.pn963 = phi { ptr, i32 } [ %960, %959 ], [ %958, %957 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #8
  br label %1011

962:                                              ; preds = %.lr.ph7168
  %963 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %106) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %108) #8
  store ptr %106, ptr %108, align 8, !tbaa !5
  %964 = getelementptr inbounds i8, ptr %108, i64 8
  store ptr %915, ptr %964, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 8 dereferenceable(16) %108) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %107)
          to label %965 unwind label %967

965:                                              ; preds = %962
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %108) #8
  %966 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %966, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %966, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %969

967:                                              ; preds = %962
  %968 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %108) #8
  br label %971

969:                                              ; preds = %965
  %970 = landingpad { ptr, i32 }
          cleanup
  br label %971

971:                                              ; preds = %969, %967
  %.pn961 = phi { ptr, i32 } [ %970, %969 ], [ %968, %967 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #8
  br label %1011

972:                                              ; preds = %.lr.ph7168
  %973 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN18StaticTraitResolve8ValuePtr17as_StructConstantEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %109) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %111) #8
  store ptr %109, ptr %111, align 8, !tbaa !5
  %974 = getelementptr inbounds i8, ptr %111, i64 8
  store ptr %915, ptr %974, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_23vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 8 dereferenceable(16) %111) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %110)
          to label %975 unwind label %977

975:                                              ; preds = %972
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #8
  %976 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %976, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %976, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %979

977:                                              ; preds = %972
  %978 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %111) #8
  br label %981

979:                                              ; preds = %975
  %980 = landingpad { ptr, i32 }
          cleanup
  br label %981

981:                                              ; preds = %979, %977
  %.pn959 = phi { ptr, i32 } [ %980, %979 ], [ %978, %977 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #8
  br label %1011

982:                                              ; preds = %.lr.ph7168
  %983 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN18StaticTraitResolve8ValuePtr12as_EnumValueEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %112) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %112, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %114) #8
  store ptr %112, ptr %114, align 8, !tbaa !5
  %984 = getelementptr inbounds i8, ptr %114, i64 8
  store ptr %915, ptr %984, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_24vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull align 8 dereferenceable(16) %114) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %113)
          to label %985 unwind label %987

985:                                              ; preds = %982
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %114) #8
  %986 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %986, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %986, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %989

987:                                              ; preds = %982
  %988 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %114) #8
  br label %991

989:                                              ; preds = %985
  %990 = landingpad { ptr, i32 }
          cleanup
  br label %991

991:                                              ; preds = %989, %987
  %.pn957 = phi { ptr, i32 } [ %990, %989 ], [ %988, %987 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %112) #8
  br label %1011

.split6834.split:                                 ; preds = %993
  %992 = landingpad { ptr, i32 }
          cleanup
  br label %1011

993:                                              ; preds = %.preheader
  %994 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull align 8 dereferenceable(8) %115)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %115) #8
  %995 = load ptr, ptr %760, align 8, !tbaa !71
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %995, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %996 unwind label %.split6834.split

996:                                              ; preds = %993
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %116) #8
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef nonnull align 8 dereferenceable(8) %99)
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %116, i32 noundef 0, ptr noundef nonnull %117)
          to label %997 unwind label %.split6837.split

997:                                              ; preds = %996
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %804, ptr noundef nonnull align 8 dereferenceable(8) %116)
          to label %..loopexit_crit_edge unwind label %.split6840.split

..loopexit_crit_edge:                             ; preds = %997
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %116) #8
  br label %..loopexit1093_crit_edge

.split6831.split:                                 ; preds = %.preheader
  %998 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %115) #8
  br label %1011

.split6837.split:                                 ; preds = %996
  %999 = landingpad { ptr, i32 }
          cleanup
  br label %1001

.split6840.split:                                 ; preds = %997
  %1000 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #8
  br label %1001

1001:                                             ; preds = %.split6840.split, %.split6837.split
  %.pn954 = phi { ptr, i32 } [ %1000, %.split6840.split ], [ %999, %.split6837.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %116) #8
  br label %1011

1002:                                             ; preds = %.preheader1062
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %119) #8
  store ptr %804, ptr %119, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_25vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull align 8 dereferenceable(8) %119) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %118)
          to label %1003 unwind label %.split6557.split

1003:                                             ; preds = %1002
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #8
  br label %..loopexit1093_crit_edge

.split6557.split:                                 ; preds = %1002
  %1004 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #8
  br label %1011

1005:                                             ; preds = %.preheader1064
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %121) #8
  store ptr %804, ptr %121, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_26vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef nonnull align 8 dereferenceable(8) %121) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %120)
          to label %1006 unwind label %.split6287.split

1006:                                             ; preds = %1005
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #8
  br label %..loopexit1093_crit_edge

.split6287.split:                                 ; preds = %1005
  %1007 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #8
  br label %1011

1008:                                             ; preds = %.preheader1066
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %123) #8
  store ptr %804, ptr %123, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_27vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef nonnull align 8 dereferenceable(8) %123) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %122)
          to label %1009 unwind label %.split6021.split

1009:                                             ; preds = %1008
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %123) #8
  br label %..loopexit1093_crit_edge

.split6021.split:                                 ; preds = %1008
  %1010 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %123) #8
  br label %1011

1011:                                             ; preds = %.split6834.split, %.split6831.split, %1001, %.split6021.split, %.split6287.split, %.split6557.split, %991, %981, %971, %961, %951
  %.pn967 = phi { ptr, i32 } [ %1010, %.split6021.split ], [ %1007, %.split6287.split ], [ %1004, %.split6557.split ], [ %.pn957, %991 ], [ %.pn959, %981 ], [ %.pn961, %971 ], [ %.pn963, %961 ], [ %.pn965, %951 ], [ %.pn954, %1001 ], [ %992, %.split6834.split ], [ %998, %.split6831.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  br label %1012

1012:                                             ; preds = %1011, %925
  %.pn967.pn = phi { ptr, i32 } [ %.pn967, %1011 ], [ %926, %925 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #8
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #8
  br label %1013

1013:                                             ; preds = %1012, %923
  %.pn967.pn.pn = phi { ptr, i32 } [ %.pn967.pn, %1012 ], [ %924, %923 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %98) #8
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %97) #8
  br label %1014

1014:                                             ; preds = %1013, %921
  %.pn967.pn.pn.pn = phi { ptr, i32 } [ %.pn967.pn.pn, %1013 ], [ %922, %921 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %97) #8
  br label %1483

1015:                                             ; preds = %.preheader1169.split.split
  %1016 = getelementptr inbounds i8, ptr %823, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %125) #8
  %1017 = load i32, ptr %823, align 8, !tbaa !72
  %1018 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull align 8 dereferenceable(32) %1016, i32 noundef 0)
          to label %1019 unwind label %.split5487.split

1019:                                             ; preds = %1015
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %126, ptr noundef nonnull align 8 dereferenceable(8) %1018)
          to label %1020 unwind label %.split5487.split

1020:                                             ; preds = %1019
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %125, i32 noundef %1017, ptr noundef nonnull %126)
          to label %1021 unwind label %.split5490.split

1021:                                             ; preds = %1020
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %804, ptr noundef nonnull align 8 dereferenceable(8) %125)
          to label %..loopexit1143_crit_edge unwind label %.split5493.split

..loopexit1143_crit_edge:                         ; preds = %1021
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %125) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %124) #8
  br label %.loopexit1211

.split5484.split:                                 ; preds = %.preheader1169.split.split
  %1022 = landingpad { ptr, i32 }
          cleanup
  br label %1028

.split5487.split:                                 ; preds = %1019, %1015
  %1023 = landingpad { ptr, i32 }
          cleanup
  br label %1027

.split5490.split:                                 ; preds = %1020
  %1024 = landingpad { ptr, i32 }
          cleanup
  br label %1026

.split5493.split:                                 ; preds = %1021
  %1025 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #8
  br label %1026

1026:                                             ; preds = %.split5493.split, %.split5490.split
  %.pn950 = phi { ptr, i32 } [ %1025, %.split5493.split ], [ %1024, %.split5490.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #8
  br label %1027

1027:                                             ; preds = %1026, %.split5487.split
  %.pn950.pn = phi { ptr, i32 } [ %.pn950, %1026 ], [ %1023, %.split5487.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %125) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %124) #8
  br label %1028

1028:                                             ; preds = %1027, %.split5484.split
  %.pn950.pn.pn = phi { ptr, i32 } [ %.pn950.pn, %1027 ], [ %1022, %.split5484.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %124) #8
  br label %1483

.lr.ph5479:                                       ; preds = %.lr.ph10018
  %1029 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  %1030 = getelementptr inbounds i8, ptr %1029, i64 32
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %804, ptr noundef nonnull align 8 dereferenceable(8) %1030)
          to label %1033 unwind label %1031

1031:                                             ; preds = %.lr.ph5479
  %1032 = landingpad { ptr, i32 }
          cleanup
  br label %1483

1033:                                             ; preds = %.lr.ph5479
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %127) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %127)
          to label %1034 unwind label %1036

1034:                                             ; preds = %1033
  %1035 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(32) %1029, i32 noundef 0)
          to label %.lr.ph5476 unwind label %1038

..loopexit1144_crit_edge:                         ; preds = %.preheader1124, %.preheader1122, %1078, %1074, %1128, %1125, %1134, %1140, %1169, %1167, %..loopexit1060_crit_edge.split, %1224, %1228, %1219, %.preheader1074.us.us4085, %1180, %1185, %1189
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %127) #8
  br label %.loopexit1211

1036:                                             ; preds = %1033
  %1037 = landingpad { ptr, i32 }
          cleanup
  br label %1246

1038:                                             ; preds = %1034
  %1039 = landingpad { ptr, i32 }
          cleanup
  br label %.split3032

.lr.ph5476:                                       ; preds = %1034
  %1040 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1035)
  %1041 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1040)
  switch i32 %1041, label %1045 [
    i32 0, label %1044
    i32 4, label %.lr.ph5268
    i32 14, label %.preheader1122
    i32 13, label %.preheader1124
    i32 3, label %.lr.ph5168
    i32 11, label %.lr.ph4373
    i32 12, label %.lr.ph4370
  ]

.preheader1124:                                   ; preds = %.lr.ph5476
  %1042 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1040)
  br label %..loopexit1144_crit_edge

.preheader1122:                                   ; preds = %.lr.ph5476
  %1043 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1040)
  br label %..loopexit1144_crit_edge

1044:                                             ; preds = %.lr.ph5476
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 900, ptr noundef nonnull @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

1045:                                             ; preds = %.lr.ph5476
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %128) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %128, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %130) #8
  store ptr %128, ptr %130, align 8, !tbaa !5
  %1046 = getelementptr inbounds i8, ptr %130, i64 8
  store ptr %804, ptr %1046, align 8, !tbaa !5
  %1047 = getelementptr inbounds i8, ptr %130, i64 16
  store ptr %1035, ptr %1047, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull align 8 dereferenceable(24) %130)
          to label %1048 unwind label %1051

1048:                                             ; preds = %1045
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %129)
          to label %1049 unwind label %1053

1049:                                             ; preds = %1048
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %130) #8
  %1050 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1050, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1050, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1056

1051:                                             ; preds = %1045
  %1052 = landingpad { ptr, i32 }
          cleanup
  br label %1055

1053:                                             ; preds = %1048
  %1054 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #8
  br label %1055

1055:                                             ; preds = %1053, %1051
  %.pn942 = phi { ptr, i32 } [ %1054, %1053 ], [ %1052, %1051 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %130) #8
  br label %1058

1056:                                             ; preds = %1049
  %1057 = landingpad { ptr, i32 }
          cleanup
  br label %1058

1058:                                             ; preds = %1056, %1055
  %.pn944 = phi { ptr, i32 } [ %1057, %1056 ], [ %.pn942, %1055 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #8
  br label %.split3032

.lr.ph5268:                                       ; preds = %.lr.ph5476
  %1059 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1040)
  %1060 = getelementptr inbounds i8, ptr %1059, i64 88
  %1061 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %1060)
  br i1 %1061, label %1066, label %1063

.split5273:                                       ; preds = %1066
  %1062 = landingpad { ptr, i32 }
          cleanup
  br label %.split3032

1063:                                             ; preds = %.lr.ph5268
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %132) #8
  store ptr %804, ptr %132, align 8, !tbaa !5
  store ptr %1035, ptr %768, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 8 dereferenceable(16) %132) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %131)
          to label %1064 unwind label %.split5270

1064:                                             ; preds = %1063
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %132) #8
  br label %1066

.split5270:                                       ; preds = %1063
  %1065 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %132) #8
  br label %.split3032

1066:                                             ; preds = %.lr.ph5268, %1064
  %1067 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %1060)
  %1068 = load ptr, ptr %1067, align 8, !tbaa !5
  %1069 = invoke noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200) %1068)
          to label %1070 unwind label %.split5273

1070:                                             ; preds = %1066
  br i1 %1069, label %1074, label %1071

1071:                                             ; preds = %1070
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %134) #8
  store ptr %804, ptr %134, align 8, !tbaa !5
  store ptr %1035, ptr %769, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_30vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull align 8 dereferenceable(16) %134) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %133)
          to label %1072 unwind label %.split5276

1072:                                             ; preds = %1071
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %134) #8
  br label %1074

.split5276:                                       ; preds = %1071
  %1073 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %134) #8
  br label %.split3032

1074:                                             ; preds = %1070, %1072
  %1075 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %1076 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1075)
  br i1 %1076, label %..loopexit1144_crit_edge, label %1077

1077:                                             ; preds = %1074
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %136) #8
  store ptr %804, ptr %136, align 8, !tbaa !5
  store ptr %1035, ptr %770, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull align 8 dereferenceable(16) %136) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %135)
          to label %1078 unwind label %.split5279

1078:                                             ; preds = %1077
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %136) #8
  br label %..loopexit1144_crit_edge

.split5279:                                       ; preds = %1077
  %1079 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %136) #8
  br label %.split3032

.lr.ph5168:                                       ; preds = %.lr.ph5476
  %1080 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1040)
  %1081 = load i32, ptr %1080, align 4, !tbaa !63
  %.not923 = icmp eq i32 %1081, 16
  br i1 %.not923, label %1082, label %.lr.ph5164

1082:                                             ; preds = %.lr.ph5168
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %138) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_32vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef nonnull align 1 dereferenceable(1) %138) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %137)
          to label %1083 unwind label %1084

1083:                                             ; preds = %1082
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %138) #8
  br label %.lr.ph5164

1084:                                             ; preds = %1082
  %1085 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %138) #8
  br label %.split3032

.lr.ph5164:                                       ; preds = %1083, %.lr.ph5168
  %1086 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %1087 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1086)
  switch i32 %1087, label %1093 [
    i32 0, label %1092
    i32 12, label %.preheader1068
    i32 3, label %.preheader1070
  ]

.preheader1070:                                   ; preds = %.lr.ph5164
  %1088 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1086)
  %1089 = load i32, ptr %1088, align 4, !tbaa !63
  %.not924 = icmp eq i32 %1089, 16
  br i1 %.not924, label %1131, label %1134

.preheader1068:                                   ; preds = %.lr.ph5164
  %1090 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1086)
  %1091 = load i32, ptr %1080, align 4, !tbaa !63
  switch i32 %1091, label %1120 [
    i32 16, label %.split4752
    i32 15, label %.split4752
    i32 12, label %.split4752
    i32 13, label %.split4752
  ]

1092:                                             ; preds = %.lr.ph5164
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 924, ptr noundef nonnull @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

1093:                                             ; preds = %.lr.ph5164
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %139) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %141) #8
  store ptr %139, ptr %141, align 8, !tbaa !5
  %1094 = getelementptr inbounds i8, ptr %141, i64 8
  store ptr %804, ptr %1094, align 8, !tbaa !5
  %1095 = getelementptr inbounds i8, ptr %141, i64 16
  store ptr %1035, ptr %1095, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 8 dereferenceable(24) %141)
          to label %1096 unwind label %1099

1096:                                             ; preds = %1093
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %140)
          to label %1097 unwind label %1101

1097:                                             ; preds = %1096
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %141) #8
  %1098 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1098, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1098, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1104

1099:                                             ; preds = %1093
  %1100 = landingpad { ptr, i32 }
          cleanup
  br label %1103

1101:                                             ; preds = %1096
  %1102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #8
  br label %1103

1103:                                             ; preds = %1101, %1099
  %.pn934 = phi { ptr, i32 } [ %1102, %1101 ], [ %1100, %1099 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %141) #8
  br label %1106

1104:                                             ; preds = %1097
  %1105 = landingpad { ptr, i32 }
          cleanup
  br label %1106

1106:                                             ; preds = %1104, %1103
  %.pn936 = phi { ptr, i32 } [ %1105, %1104 ], [ %.pn934, %1103 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %139) #8
  br label %.split3032

.split4752:                                       ; preds = %.preheader1068, %.preheader1068, %.preheader1068, %.preheader1068
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %142) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %142, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %144) #8
  store ptr %142, ptr %144, align 8, !tbaa !5
  %1107 = getelementptr inbounds i8, ptr %144, i64 8
  store ptr %804, ptr %1107, align 8, !tbaa !5
  %1108 = getelementptr inbounds i8, ptr %144, i64 16
  store ptr %1035, ptr %1108, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_34vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %143, ptr noundef nonnull align 8 dereferenceable(24) %144)
          to label %1109 unwind label %1112

1109:                                             ; preds = %.split4752
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %143)
          to label %1110 unwind label %1114

1110:                                             ; preds = %1109
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %144) #8
  %1111 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1111, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1111, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1117

1112:                                             ; preds = %.split4752
  %1113 = landingpad { ptr, i32 }
          cleanup
  br label %1116

1114:                                             ; preds = %1109
  %1115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #8
  br label %1116

1116:                                             ; preds = %1114, %1112
  %.pn927 = phi { ptr, i32 } [ %1115, %1114 ], [ %1113, %1112 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %144) #8
  br label %1119

1117:                                             ; preds = %1110
  %1118 = landingpad { ptr, i32 }
          cleanup
  br label %1119

1119:                                             ; preds = %1117, %1116
  %.pn929 = phi { ptr, i32 } [ %1118, %1117 ], [ %.pn927, %1116 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #8
  br label %.split3032

1120:                                             ; preds = %.preheader1068
  %1121 = getelementptr inbounds i8, ptr %1090, i64 8
  %1122 = load ptr, ptr %759, align 8, !tbaa !66
  %1123 = load ptr, ptr %760, align 8, !tbaa !71
  %1124 = invoke noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %1122, ptr noundef nonnull align 8 dereferenceable(8) %1123, ptr noundef nonnull align 8 dereferenceable(8) %1121, i1 noundef zeroext false)
          to label %1125 unwind label %.split4756.split

1125:                                             ; preds = %1120
  %1126 = add i32 %1124, -1
  %or.cond = icmp ult i32 %1126, 2
  br i1 %or.cond, label %..loopexit1144_crit_edge, label %1127

1127:                                             ; preds = %1125
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %146) #8
  store ptr %804, ptr %146, align 8, !tbaa !5
  store ptr %1035, ptr %767, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_35vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %145, ptr noundef nonnull align 8 dereferenceable(16) %146) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %145)
          to label %1128 unwind label %.split4759.split

1128:                                             ; preds = %1127
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %146) #8
  br label %..loopexit1144_crit_edge

.split4756.split:                                 ; preds = %1120
  %1129 = landingpad { ptr, i32 }
          cleanup
  br label %.split3032

.split4759.split:                                 ; preds = %1127
  %1130 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %146) #8
  br label %.split3032

1131:                                             ; preds = %.preheader1070
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %148) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_36vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef nonnull align 1 dereferenceable(1) %148) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %147)
          to label %1132 unwind label %.split4378.split

1132:                                             ; preds = %1131
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %148) #8
  %.pre = load i32, ptr %1088, align 4, !tbaa !63
  br label %1134

.split4378.split:                                 ; preds = %1131
  %1133 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %148) #8
  br label %.split3032

1134:                                             ; preds = %1132, %.preheader1070
  %1135 = phi i32 [ %.pre, %1132 ], [ %1089, %.preheader1070 ]
  %1136 = icmp ne i32 %1135, 15
  %1137 = load i32, ptr %1080, align 4
  %1138 = icmp eq i32 %1137, 2
  %or.cond1052 = select i1 %1136, i1 true, i1 %1138
  br i1 %or.cond1052, label %..loopexit1144_crit_edge, label %1139

1139:                                             ; preds = %1134
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %150) #8
  store ptr %804, ptr %150, align 8, !tbaa !5
  store ptr %1035, ptr %766, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_37vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %149, ptr noundef nonnull align 8 dereferenceable(16) %150) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %149)
          to label %1140 unwind label %.split4381.split

1140:                                             ; preds = %1139
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #8
  br label %..loopexit1144_crit_edge

.split4381.split:                                 ; preds = %1139
  %1141 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #8
  br label %.split3032

.lr.ph4373:                                       ; preds = %.lr.ph5476
  %1142 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1040)
  %1143 = getelementptr inbounds i8, ptr %1142, i64 4
  %1144 = getelementptr inbounds i8, ptr %1142, i64 8
  %1145 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %1146 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1145)
  br i1 %1146, label %1153, label %1149

1147:                                             ; preds = %1162
  %1148 = landingpad { ptr, i32 }
          cleanup
  br label %.split3032

1149:                                             ; preds = %.lr.ph4373
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %152) #8
  store ptr %804, ptr %152, align 8, !tbaa !5
  store ptr %1035, ptr %763, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_38vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef nonnull align 8 dereferenceable(16) %152) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %151)
          to label %1150 unwind label %1151

1150:                                             ; preds = %1149
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %152) #8
  br label %1153

1151:                                             ; preds = %1149
  %1152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %152) #8
  br label %.split3032

1153:                                             ; preds = %.lr.ph4373, %1150
  %1154 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %1155 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1154)
  %1156 = load i32, ptr %1155, align 8, !tbaa !75
  %1157 = load i32, ptr %1143, align 4, !tbaa !78
  %.not920 = icmp sgt i32 %1156, %1157
  br i1 %.not920, label %1158, label %1162

1158:                                             ; preds = %1153
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %154) #8
  store ptr %804, ptr %154, align 8, !tbaa !5
  store ptr %1035, ptr %764, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_39vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %153, ptr noundef nonnull align 8 dereferenceable(16) %154) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %153)
          to label %1159 unwind label %1160

1159:                                             ; preds = %1158
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %154) #8
  br label %1162

1160:                                             ; preds = %1158
  %1161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %153) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %154) #8
  br label %.split3032

1162:                                             ; preds = %1153, %1159
  %1163 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %1164 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1163)
  %1165 = getelementptr inbounds i8, ptr %1164, i64 8
  %1166 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1165, ptr noundef nonnull align 8 dereferenceable(8) %1144)
          to label %1167 unwind label %1147

1167:                                             ; preds = %1162
  br i1 %1166, label %..loopexit1144_crit_edge, label %1168

1168:                                             ; preds = %1167
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %156) #8
  store ptr %804, ptr %156, align 8, !tbaa !5
  store ptr %1035, ptr %765, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_40vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %155, ptr noundef nonnull align 8 dereferenceable(16) %156) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %155)
          to label %1169 unwind label %1170

1169:                                             ; preds = %1168
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %156) #8
  br label %..loopexit1144_crit_edge

1170:                                             ; preds = %1168
  %1171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %156) #8
  br label %.split3032

.lr.ph4370:                                       ; preds = %.lr.ph5476
  %1172 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1040)
  %1173 = getelementptr inbounds i8, ptr %1172, i64 8
  %1174 = load ptr, ptr %759, align 8, !tbaa !66
  %1175 = load ptr, ptr %760, align 8, !tbaa !71
  %1176 = invoke noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %1174, ptr noundef nonnull align 8 dereferenceable(8) %1175, ptr noundef nonnull align 8 dereferenceable(8) %1173, i1 noundef zeroext false)
          to label %.preheader1082 unwind label %1198

.preheader1082:                                   ; preds = %.lr.ph4370
  %1177 = add i32 %1176, -1
  %or.cond5 = icmp ult i32 %1177, 2
  %1178 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %1179 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1178)
  br i1 %or.cond5, label %.preheader1082.split.split.us, label %.lr.ph3471

.preheader1082.split.split.us:                    ; preds = %.preheader1082
  switch i32 %1179, label %.split3477.us [
    i32 0, label %.split3481.us
    i32 12, label %.preheader1072.us.us4084
    i32 3, label %.preheader1074.us.us4085
  ]

1180:                                             ; preds = %.preheader1072.us.us4084
  br i1 %1192, label %1181, label %..loopexit1144_crit_edge

1181:                                             ; preds = %1180
  %1182 = load ptr, ptr %759, align 8, !tbaa !66
  %1183 = load ptr, ptr %760, align 8, !tbaa !71
  %1184 = invoke noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %1182, ptr noundef nonnull align 8 dereferenceable(8) %1183, ptr noundef nonnull align 8 dereferenceable(8) %1191, i1 noundef zeroext false)
          to label %1185 unwind label %.split3035.split.split.us.split.split.us.split

1185:                                             ; preds = %1181
  %1186 = add i32 %1184, -1
  %or.cond3.us3472.us4081 = icmp ult i32 %1186, 2
  %1187 = icmp eq i32 %1184, %1176
  %or.cond1053.us3473.us4082 = or i1 %1187, %or.cond3.us3472.us4081
  br i1 %or.cond1053.us3473.us4082, label %..loopexit1144_crit_edge, label %1188

1188:                                             ; preds = %1185
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %161) #8
  store ptr %804, ptr %161, align 8, !tbaa !5
  store ptr %1035, ptr %762, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_42vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %160, ptr noundef nonnull align 8 dereferenceable(16) %161) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %160)
          to label %1189 unwind label %.split3038.split.split.us.split.split.us.split

1189:                                             ; preds = %1188
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %161) #8
  br label %..loopexit1144_crit_edge

.preheader1072.us.us4084:                         ; preds = %.preheader1082.split.split.us
  %1190 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1178)
  %1191 = getelementptr inbounds i8, ptr %1190, i64 8
  %1192 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1173, ptr noundef nonnull align 8 dereferenceable(8) %1191)
          to label %1180 unwind label %.split3032.split.split.us.split.split.us.split

.preheader1074.us.us4085:                         ; preds = %.preheader1082.split.split.us
  %1193 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1178)
  %1194 = load i32, ptr %1193, align 4, !tbaa !63
  switch i32 %1194, label %..loopexit1144_crit_edge [
    i32 16, label %.split2564.us
    i32 15, label %.split2564.us
    i32 12, label %.split2564.us
    i32 13, label %.split2564.us
  ]

.split3035.split.split.us.split.split.us.split:   ; preds = %1181
  %1195 = landingpad { ptr, i32 }
          cleanup
  br label %.split3032

.split3038.split.split.us.split.split.us.split:   ; preds = %1188
  %1196 = landingpad { ptr, i32 }
          cleanup
  br label %.split3038

.split3032.split.split.us.split.split.us.split:   ; preds = %.preheader1072.us.us4084
  %1197 = landingpad { ptr, i32 }
          cleanup
  br label %.split3032

1198:                                             ; preds = %.lr.ph4370
  %1199 = landingpad { ptr, i32 }
          cleanup
  br label %.split3032

.lr.ph3471:                                       ; preds = %.preheader1082
  switch i32 %1179, label %.split3477.us [
    i32 0, label %.split3481.us
    i32 12, label %.preheader1072
    i32 3, label %.preheader1074
  ]

.preheader1074:                                   ; preds = %.lr.ph3471
  %1200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1178)
  %1201 = load i32, ptr %1200, align 4, !tbaa !63
  switch i32 %1201, label %1244 [
    i32 16, label %.split2564.us
    i32 15, label %.split2564.us
    i32 12, label %.split2564.us
    i32 13, label %.split2564.us
  ]

.preheader1072:                                   ; preds = %.lr.ph3471
  %1202 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1178)
  %1203 = getelementptr inbounds i8, ptr %1202, i64 8
  %1204 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1173, ptr noundef nonnull align 8 dereferenceable(8) %1203)
          to label %1219 unwind label %.split3032.split.split.split

.split3481.us:                                    ; preds = %.lr.ph3471, %.preheader1082.split.split.us
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 958, ptr noundef nonnull @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

.split3477.us:                                    ; preds = %.lr.ph3471, %.preheader1082.split.split.us
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %157) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %157, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %159) #8
  store ptr %157, ptr %159, align 8, !tbaa !5
  %1205 = getelementptr inbounds i8, ptr %159, i64 8
  store ptr %804, ptr %1205, align 8, !tbaa !5
  %1206 = getelementptr inbounds i8, ptr %159, i64 16
  store ptr %1035, ptr %1206, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_41vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %158, ptr noundef nonnull align 8 dereferenceable(24) %159)
          to label %1207 unwind label %1210

1207:                                             ; preds = %.split3477.us
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %158)
          to label %1208 unwind label %1212

1208:                                             ; preds = %1207
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %159) #8
  %1209 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1209, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1209, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1215

1210:                                             ; preds = %.split3477.us
  %1211 = landingpad { ptr, i32 }
          cleanup
  br label %1214

1212:                                             ; preds = %1207
  %1213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #8
  br label %1214

1214:                                             ; preds = %1212, %1210
  %.pn914 = phi { ptr, i32 } [ %1213, %1212 ], [ %1211, %1210 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %159) #8
  br label %1217

1215:                                             ; preds = %1208
  %1216 = landingpad { ptr, i32 }
          cleanup
  br label %1217

1217:                                             ; preds = %1215, %1214
  %.pn916 = phi { ptr, i32 } [ %1216, %1215 ], [ %.pn914, %1214 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #8
  br label %.split3032

.split3032.split.split.split:                     ; preds = %.preheader1072
  %1218 = landingpad { ptr, i32 }
          cleanup
  br label %.split3032

1219:                                             ; preds = %.preheader1072
  br i1 %1204, label %1220, label %..loopexit1144_crit_edge

1220:                                             ; preds = %1219
  %1221 = load ptr, ptr %759, align 8, !tbaa !66
  %1222 = load ptr, ptr %760, align 8, !tbaa !71
  %1223 = invoke noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %1221, ptr noundef nonnull align 8 dereferenceable(8) %1222, ptr noundef nonnull align 8 dereferenceable(8) %1203, i1 noundef zeroext false)
          to label %1224 unwind label %.split3035.split.split.split

1224:                                             ; preds = %1220
  %1225 = add i32 %1223, -1
  %or.cond3 = icmp ult i32 %1225, 2
  %1226 = icmp eq i32 %1223, %1176
  %or.cond1053 = or i1 %1226, %or.cond3
  br i1 %or.cond1053, label %..loopexit1144_crit_edge, label %1227

1227:                                             ; preds = %1224
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %161) #8
  store ptr %804, ptr %161, align 8, !tbaa !5
  store ptr %1035, ptr %762, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_42vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %160, ptr noundef nonnull align 8 dereferenceable(16) %161) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %160)
          to label %1228 unwind label %.split3038.split.split.split

1228:                                             ; preds = %1227
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %161) #8
  br label %..loopexit1144_crit_edge

.split3035.split.split.split:                     ; preds = %1220
  %1229 = landingpad { ptr, i32 }
          cleanup
  br label %.split3032

.split3038.split.split.split:                     ; preds = %1227
  %1230 = landingpad { ptr, i32 }
          cleanup
  br label %.split3038

.split3038:                                       ; preds = %.split3038.split.split.us.split.split.us.split, %.split3038.split.split.split
  %.us-phi3483 = phi { ptr, i32 } [ %1230, %.split3038.split.split.split ], [ %1196, %.split3038.split.split.us.split.split.us.split ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %160) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %161) #8
  br label %.split3032

.split2564.us:                                    ; preds = %.preheader1074, %.preheader1074, %.preheader1074, %.preheader1074, %.preheader1074.us.us4085, %.preheader1074.us.us4085, %.preheader1074.us.us4085, %.preheader1074.us.us4085
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %162) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %162, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %164) #8
  store ptr %162, ptr %164, align 8, !tbaa !5
  %1231 = getelementptr inbounds i8, ptr %164, i64 8
  store ptr %804, ptr %1231, align 8, !tbaa !5
  %1232 = getelementptr inbounds i8, ptr %164, i64 16
  store ptr %1035, ptr %1232, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_43vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %163, ptr noundef nonnull align 8 dereferenceable(24) %164)
          to label %1233 unwind label %1236

1233:                                             ; preds = %.split2564.us
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %163)
          to label %1234 unwind label %1238

1234:                                             ; preds = %1233
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %164) #8
  %1235 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1235, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1235, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1241

1236:                                             ; preds = %.split2564.us
  %1237 = landingpad { ptr, i32 }
          cleanup
  br label %1240

1238:                                             ; preds = %1233
  %1239 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #8
  br label %1240

1240:                                             ; preds = %1238, %1236
  %.pn905 = phi { ptr, i32 } [ %1239, %1238 ], [ %1237, %1236 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %164) #8
  br label %1243

1241:                                             ; preds = %1234
  %1242 = landingpad { ptr, i32 }
          cleanup
  br label %1243

1243:                                             ; preds = %1241, %1240
  %.pn907 = phi { ptr, i32 } [ %1242, %1241 ], [ %.pn905, %1240 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #8
  br label %.split3032

1244:                                             ; preds = %.preheader1074
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %166) #8
  store ptr %804, ptr %166, align 8, !tbaa !5
  store ptr %1035, ptr %761, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_44vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %165, ptr noundef nonnull align 8 dereferenceable(16) %166) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %165)
          to label %..loopexit1060_crit_edge.split unwind label %.split2572.split.split

..loopexit1060_crit_edge.split:                   ; preds = %1244
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %166) #8
  br label %..loopexit1144_crit_edge

.split2572.split.split:                           ; preds = %1244
  %1245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %166) #8
  br label %.split3032

.split3032:                                       ; preds = %.split3035.split.split.split, %.split3035.split.split.us.split.split.us.split, %.split3032.split.split.split, %.split3032.split.split.us.split.split.us.split, %1058, %.split5279, %.split5276, %.split5270, %.split5273, %1106, %.split4756.split, %.split4759.split, %1119, %.split4381.split, %.split4378.split, %1084, %1170, %1160, %1151, %1147, %1217, %.split3038, %.split2572.split.split, %1243, %1198, %1038
  %.pn944.pn.pn = phi { ptr, i32 } [ %1039, %1038 ], [ %.pn944, %1058 ], [ %1079, %.split5279 ], [ %1073, %.split5276 ], [ %1062, %.split5273 ], [ %1065, %.split5270 ], [ %1085, %1084 ], [ %.pn936, %1106 ], [ %.pn929, %1119 ], [ %1130, %.split4759.split ], [ %1129, %.split4756.split ], [ %1141, %.split4381.split ], [ %1133, %.split4378.split ], [ %1171, %1170 ], [ %1148, %1147 ], [ %1161, %1160 ], [ %1152, %1151 ], [ %1199, %1198 ], [ %.pn916, %1217 ], [ %.us-phi3483, %.split3038 ], [ %1245, %.split2572.split.split ], [ %.pn907, %1243 ], [ %1218, %.split3032.split.split.split ], [ %1197, %.split3032.split.split.us.split.split.us.split ], [ %1229, %.split3035.split.split.split ], [ %1195, %.split3035.split.split.us.split.split.us.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #8
  br label %1246

1246:                                             ; preds = %.split3032, %1036
  %.pn944.pn.pn.pn = phi { ptr, i32 } [ %.pn944.pn.pn, %.split3032 ], [ %1037, %1036 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %127) #8
  br label %1483

.lr.ph2352:                                       ; preds = %.lr.ph10018
  %1247 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %167) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167)
          to label %1248 unwind label %1253

1248:                                             ; preds = %.lr.ph2352
  %1249 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull align 8 dereferenceable(32) %1247, i32 noundef 0)
          to label %1250 unwind label %1255

1250:                                             ; preds = %1248
  %1251 = invoke noundef ptr @_ZNK3MIR11TypeResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %1249)
          to label %1252 unwind label %1257

1252:                                             ; preds = %1250
  %.not894 = icmp eq ptr %1251, null
  br i1 %.not894, label %1259, label %1281

1253:                                             ; preds = %.lr.ph2352
  %1254 = landingpad { ptr, i32 }
          cleanup
  br label %1329

1255:                                             ; preds = %1248
  %1256 = landingpad { ptr, i32 }
          cleanup
  br label %1328

1257:                                             ; preds = %1250
  %1258 = landingpad { ptr, i32 }
          cleanup
  br label %1328

1259:                                             ; preds = %1252
  %1260 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1249)
  %1261 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1260)
  %1262 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1249)
  br i1 %1261, label %1263, label %1266

1263:                                             ; preds = %1259
  %1264 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1262)
  %1265 = getelementptr inbounds i8, ptr %1264, i64 8
  br label %1281

1266:                                             ; preds = %1259
  %1267 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1262)
  br i1 %1267, label %1268, label %1272

1268:                                             ; preds = %1266
  %1269 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1249)
  %1270 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1269)
  %1271 = getelementptr inbounds i8, ptr %1270, i64 8
  br label %1281

1272:                                             ; preds = %1266
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %168) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %168, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %170) #8
  store ptr %168, ptr %170, align 8, !tbaa !5
  %1273 = getelementptr inbounds i8, ptr %170, i64 8
  store ptr %1249, ptr %1273, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_45vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %169, ptr noundef nonnull align 8 dereferenceable(16) %170) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %169)
          to label %1274 unwind label %1276

1274:                                             ; preds = %1272
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %170) #8
  %1275 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1275, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1275, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1278

1276:                                             ; preds = %1272
  %1277 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %170) #8
  br label %1280

1278:                                             ; preds = %1274
  %1279 = landingpad { ptr, i32 }
          cleanup
  br label %1280

1280:                                             ; preds = %1278, %1276
  %.pn895 = phi { ptr, i32 } [ %1279, %1278 ], [ %1277, %1276 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #8
  br label %1328

1281:                                             ; preds = %1263, %1268, %1252
  %.0780 = phi ptr [ %1251, %1252 ], [ %1265, %1263 ], [ %1271, %1268 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %171) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %171)
          to label %1282 unwind label %1293

1282:                                             ; preds = %1281
  %1283 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0780)
  %1284 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1283)
  br i1 %1284, label %..loopexit1147_crit_edge, label %1285

1285:                                             ; preds = %1282
  %1286 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0780)
  %1287 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1286)
  br i1 %1287, label %1288, label %1295

1288:                                             ; preds = %1285
  %1289 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0780)
  %1290 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1289)
  %1291 = getelementptr inbounds i8, ptr %1290, i64 88
  %1292 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %1291)
  br i1 %1292, label %..loopexit1147_crit_edge, label %1295

1293:                                             ; preds = %1281
  %1294 = landingpad { ptr, i32 }
          cleanup
  br label %1327

1295:                                             ; preds = %1288, %1285
  %1296 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0780)
  %1297 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1296)
  br i1 %1297, label %1298, label %1303

1298:                                             ; preds = %1295
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %172) #8
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %172, i32 noundef 0)
          to label %1299 unwind label %1301

1299:                                             ; preds = %1298
  %1300 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %171, ptr noundef nonnull align 8 dereferenceable(8) %172)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #8
  br label %..loopexit1147_crit_edge

1301:                                             ; preds = %1298
  %1302 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #8
  br label %1326

1303:                                             ; preds = %1295
  %1304 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0780)
  %1305 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1304)
  br i1 %1305, label %1306, label %1311

1306:                                             ; preds = %1303
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %173) #8
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %173, i32 noundef 0)
          to label %1307 unwind label %1309

1307:                                             ; preds = %1306
  %1308 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %171, ptr noundef nonnull align 8 dereferenceable(8) %173)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #8
  br label %..loopexit1147_crit_edge

1309:                                             ; preds = %1306
  %1310 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #8
  br label %1326

1311:                                             ; preds = %1303
  %1312 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0780)
  %1313 = call noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1312)
  br i1 %1313, label %..loopexit1147_crit_edge, label %1314

1314:                                             ; preds = %1311
  %1315 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0780)
  %1316 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1315)
  br i1 %1316, label %..loopexit1147_crit_edge, label %1317

1317:                                             ; preds = %1314
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %174) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %174, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %176) #8
  store ptr %174, ptr %176, align 8, !tbaa !5
  %1318 = getelementptr inbounds i8, ptr %176, i64 8
  store ptr %.0780, ptr %1318, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_46vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %175, ptr noundef nonnull align 8 dereferenceable(16) %176) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %175)
          to label %1319 unwind label %1321

1319:                                             ; preds = %1317
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %176) #8
  %1320 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1320, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1320, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1323

1321:                                             ; preds = %1317
  %1322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %176) #8
  br label %1325

1323:                                             ; preds = %1319
  %1324 = landingpad { ptr, i32 }
          cleanup
  br label %1325

1325:                                             ; preds = %1323, %1321
  %.pn897 = phi { ptr, i32 } [ %1324, %1323 ], [ %1322, %1321 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %174) #8
  br label %1326

..loopexit1147_crit_edge:                         ; preds = %1299, %1311, %1314, %1307, %1282, %1288
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %171) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #8
  br label %.loopexit1211

1326:                                             ; preds = %1325, %1309, %1301
  %.pn899 = phi { ptr, i32 } [ %1302, %1301 ], [ %1310, %1309 ], [ %.pn897, %1325 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #8
  br label %1327

1327:                                             ; preds = %1326, %1293
  %.pn899.pn = phi { ptr, i32 } [ %.pn899, %1326 ], [ %1294, %1293 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %171) #8
  br label %1328

1328:                                             ; preds = %1257, %1280, %1327, %1255
  %.pn899.pn.pn.pn = phi { ptr, i32 } [ %1256, %1255 ], [ %.pn899.pn, %1327 ], [ %.pn895, %1280 ], [ %1258, %1257 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #8
  br label %1329

1329:                                             ; preds = %1328, %1253
  %.pn899.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn899.pn.pn.pn, %1328 ], [ %1254, %1253 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #8
  br label %1483

.lr.ph2349:                                       ; preds = %.lr.ph10018
  %1330 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %809)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %177) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %177)
          to label %1331 unwind label %1336

1331:                                             ; preds = %.lr.ph2349
  %1332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %177, ptr noundef nonnull align 8 dereferenceable(32) %1330, i32 noundef 0)
          to label %1333 unwind label %1338

1333:                                             ; preds = %1331
  %1334 = invoke noundef ptr @_ZNK3MIR11TypeResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %1332)
          to label %1335 unwind label %1340

1335:                                             ; preds = %1333
  %.not886 = icmp eq ptr %1334, null
  br i1 %.not886, label %1342, label %1364

1336:                                             ; preds = %.lr.ph2349
  %1337 = landingpad { ptr, i32 }
          cleanup
  br label %1402

1338:                                             ; preds = %1331
  %1339 = landingpad { ptr, i32 }
          cleanup
  br label %1401

1340:                                             ; preds = %1333
  %1341 = landingpad { ptr, i32 }
          cleanup
  br label %1401

1342:                                             ; preds = %1335
  %1343 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1332)
  %1344 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1343)
  %1345 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1332)
  br i1 %1344, label %1346, label %1349

1346:                                             ; preds = %1342
  %1347 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1345)
  %1348 = getelementptr inbounds i8, ptr %1347, i64 8
  br label %1364

1349:                                             ; preds = %1342
  %1350 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1345)
  br i1 %1350, label %1351, label %1355

1351:                                             ; preds = %1349
  %1352 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1332)
  %1353 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1352)
  %1354 = getelementptr inbounds i8, ptr %1353, i64 8
  br label %1364

1355:                                             ; preds = %1349
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %178) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %178, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %180) #8
  store ptr %178, ptr %180, align 8, !tbaa !5
  %1356 = getelementptr inbounds i8, ptr %180, i64 8
  store ptr %1332, ptr %1356, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_47vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull align 8 dereferenceable(16) %180) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %179)
          to label %1357 unwind label %1359

1357:                                             ; preds = %1355
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %180) #8
  %1358 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1358, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1358, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1361

1359:                                             ; preds = %1355
  %1360 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %180) #8
  br label %1363

1361:                                             ; preds = %1357
  %1362 = landingpad { ptr, i32 }
          cleanup
  br label %1363

1363:                                             ; preds = %1361, %1359
  %.pn887 = phi { ptr, i32 } [ %1362, %1361 ], [ %1360, %1359 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %178) #8
  br label %1401

1364:                                             ; preds = %1346, %1351, %1335
  %.0771 = phi ptr [ %1334, %1335 ], [ %1348, %1346 ], [ %1354, %1351 ]
  %1365 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0771)
  %1366 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1365)
  br i1 %1366, label %..loopexit1148_crit_edge, label %1367

1367:                                             ; preds = %1364
  %1368 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0771)
  %1369 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1368)
  br i1 %1369, label %1370, label %1375

1370:                                             ; preds = %1367
  %1371 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0771)
  %1372 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1371)
  %1373 = load i32, ptr %1372, align 4, !tbaa !63
  %1374 = icmp eq i32 %1373, 16
  br i1 %1374, label %..loopexit1148_crit_edge, label %1375

1375:                                             ; preds = %1370, %1367
  %1376 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0771)
  %1377 = call noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1376)
  br i1 %1377, label %..loopexit1148_crit_edge, label %1378

1378:                                             ; preds = %1375
  %1379 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0771)
  %1380 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1379)
  br i1 %1380, label %..loopexit1148_crit_edge, label %1381

1381:                                             ; preds = %1378
  %1382 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0771)
  %1383 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1382)
  br i1 %1383, label %1384, label %1389

1384:                                             ; preds = %1381
  %1385 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0771)
  %1386 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1385)
  %1387 = getelementptr inbounds i8, ptr %1386, i64 88
  %1388 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %1387)
  br i1 %1388, label %..loopexit1148_crit_edge, label %1389

1389:                                             ; preds = %1384, %1381
  %1390 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0771)
  %1391 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1390)
  br i1 %1391, label %..loopexit1148_crit_edge, label %1392

1392:                                             ; preds = %1389
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %181) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %181, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %183) #8
  store ptr %181, ptr %183, align 8, !tbaa !5
  %1393 = getelementptr inbounds i8, ptr %183, i64 8
  store ptr %.0771, ptr %1393, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_48vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef nonnull align 8 dereferenceable(16) %183) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %182)
          to label %1394 unwind label %1396

1394:                                             ; preds = %1392
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %183) #8
  %1395 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1395, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1395, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1398

1396:                                             ; preds = %1392
  %1397 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %183) #8
  br label %1400

1398:                                             ; preds = %1394
  %1399 = landingpad { ptr, i32 }
          cleanup
  br label %1400

1400:                                             ; preds = %1398, %1396
  %.pn889 = phi { ptr, i32 } [ %1399, %1398 ], [ %1397, %1396 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %181) #8
  br label %1401

..loopexit1148_crit_edge:                         ; preds = %1375, %1389, %1378, %1384, %1364, %1370
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %177) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %177) #8
  br label %.loopexit1211

1401:                                             ; preds = %1340, %1363, %1400, %1338
  %.pn889.pn.pn = phi { ptr, i32 } [ %1339, %1338 ], [ %.pn889, %1400 ], [ %.pn887, %1363 ], [ %1341, %1340 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %177) #8
  br label %1402

1402:                                             ; preds = %1401, %1336
  %.pn889.pn.pn.pn = phi { ptr, i32 } [ %.pn889.pn.pn, %1401 ], [ %1337, %1336 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %177) #8
  br label %1483

1403:                                             ; preds = %.preheader1181.split.split
  %1404 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %819)
  %1405 = call noundef zeroext i1 @_ZNK3MIR8Constant11is_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %1404)
  br i1 %1405, label %1406, label %1411

1406:                                             ; preds = %1403
  %1407 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR5Param11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(48) %819)
  %1408 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR8Constant11as_ItemAddrEv(ptr noundef nonnull align 8 dereferenceable(40) %1407)
  %1409 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1408) #8
  %1410 = icmp eq ptr %1409, null
  br i1 %1410, label %.loopexit1211, label %1411

1411:                                             ; preds = %1406, %1403, %.preheader1181.split.split
  %1412 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %1413 = call noundef ptr @_ZNK3HIR8TypeData10opt_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1412)
  %.not874 = icmp eq ptr %1413, null
  br i1 %.not874, label %1414, label %1425

1414:                                             ; preds = %1411
  %1415 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %1416 = call noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1415)
  %.not875 = icmp eq ptr %1416, null
  br i1 %.not875, label %.split2126, label %1425

.split2126:                                       ; preds = %1414
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %184) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %184, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %186) #8
  store ptr %184, ptr %186, align 8, !tbaa !5
  %1417 = getelementptr inbounds i8, ptr %186, i64 8
  store ptr %804, ptr %1417, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_49vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %185, ptr noundef nonnull align 8 dereferenceable(16) %186) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %185)
          to label %1418 unwind label %1420

1418:                                             ; preds = %.split2126
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %186) #8
  %1419 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1419, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1419, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1422

1420:                                             ; preds = %.split2126
  %1421 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %186) #8
  br label %1424

1422:                                             ; preds = %1418
  %1423 = landingpad { ptr, i32 }
          cleanup
  br label %1424

1424:                                             ; preds = %1422, %1420
  %.pn876 = phi { ptr, i32 } [ %1423, %1422 ], [ %1421, %1420 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %184) #8
  br label %1483

1425:                                             ; preds = %1411, %1414
  %.pn878 = phi ptr [ %1413, %1411 ], [ %1416, %1414 ]
  %.0766 = getelementptr inbounds i8, ptr %.pn878, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %187) #8
  invoke void @_ZN12_GLOBAL__N_117get_metadata_typeERKN3MIR11TypeResolveERKN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %187, ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %.0766)
          to label %1426 unwind label %.split2129.split

1426:                                             ; preds = %1425
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %188) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %188)
          to label %1427 unwind label %.split2132.split

1427:                                             ; preds = %1426
  %1428 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef nonnull align 8 dereferenceable(8) %188)
          to label %1429 unwind label %.split2135.split

1429:                                             ; preds = %1427
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %188) #8
  br i1 %1428, label %.split2138, label %._crit_edge2124

.split2138:                                       ; preds = %1429
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %189) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %189, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %191) #8
  store ptr %189, ptr %191, align 8, !tbaa !5
  %1430 = getelementptr inbounds i8, ptr %191, i64 8
  store ptr %804, ptr %1430, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_50vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %190, ptr noundef nonnull align 8 dereferenceable(16) %191) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %190)
          to label %1431 unwind label %1437

1431:                                             ; preds = %.split2138
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %191) #8
  %1432 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1432, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1432, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1439

.split2129.split:                                 ; preds = %1425
  %1433 = landingpad { ptr, i32 }
          cleanup
  br label %1443

.split2132.split:                                 ; preds = %1426
  %1434 = landingpad { ptr, i32 }
          cleanup
  br label %1436

.split2135.split:                                 ; preds = %1427
  %1435 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #8
  br label %1436

1436:                                             ; preds = %.split2135.split, %.split2132.split
  %.pn879 = phi { ptr, i32 } [ %1435, %.split2135.split ], [ %1434, %.split2132.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %188) #8
  br label %1442

1437:                                             ; preds = %.split2138
  %1438 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %191) #8
  br label %1441

1439:                                             ; preds = %1431
  %1440 = landingpad { ptr, i32 }
          cleanup
  br label %1441

1441:                                             ; preds = %1439, %1437
  %.pn881 = phi { ptr, i32 } [ %1440, %1439 ], [ %1438, %1437 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %189) #8
  br label %1442

._crit_edge2124:                                  ; preds = %1429
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #8
  br label %.loopexit1211

1442:                                             ; preds = %1441, %1436
  %.pn881.pn = phi { ptr, i32 } [ %.pn881, %1441 ], [ %.pn879, %1436 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #8
  br label %1443

1443:                                             ; preds = %1442, %.split2129.split
  %.pn881.pn.pn = phi { ptr, i32 } [ %.pn881.pn, %1442 ], [ %1433, %.split2129.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #8
  br label %1483

.split:                                           ; preds = %.preheader1183.split.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %192) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %192, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %194) #8
  store ptr %192, ptr %194, align 8, !tbaa !5
  %1444 = getelementptr inbounds i8, ptr %194, i64 8
  store ptr %804, ptr %1444, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_51vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %193, ptr noundef nonnull align 8 dereferenceable(16) %194) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %193)
          to label %1445 unwind label %1447

1445:                                             ; preds = %.split
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %194) #8
  %1446 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1446, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1446, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1449

1447:                                             ; preds = %.split
  %1448 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %194) #8
  br label %1451

1449:                                             ; preds = %1445
  %1450 = landingpad { ptr, i32 }
          cleanup
  br label %1451

1451:                                             ; preds = %1449, %1447
  %.pn863 = phi { ptr, i32 } [ %1450, %1449 ], [ %1448, %1447 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %192) #8
  br label %1483

1452:                                             ; preds = %.preheader1183.split.split
  %1453 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %804)
  %1454 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1453)
  %1455 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1454) #8
  %1456 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %815) #8
  %.not865 = icmp eq i64 %1455, %1456
  br i1 %.not865, label %.preheader1138, label %.split1809

.preheader1138:                                   ; preds = %1452
  %1457 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %815) #8
  %.not10309 = icmp eq i64 %1457, 0
  br i1 %.not10309, label %.loopexit1211, label %.lr.ph1805

.split1809:                                       ; preds = %1452
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %195) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %195, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %197) #8
  store ptr %195, ptr %197, align 8, !tbaa !5
  %1458 = getelementptr inbounds i8, ptr %197, i64 8
  store ptr %804, ptr %1458, align 8, !tbaa !5
  %1459 = getelementptr inbounds i8, ptr %197, i64 16
  store ptr %815, ptr %1459, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_52vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %196, ptr noundef nonnull align 8 dereferenceable(24) %197)
          to label %1460 unwind label %1463

1460:                                             ; preds = %.split1809
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %196)
          to label %1461 unwind label %1465

1461:                                             ; preds = %1460
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %197) #8
  %1462 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1462, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1462, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1468

1463:                                             ; preds = %.split1809
  %1464 = landingpad { ptr, i32 }
          cleanup
  br label %1467

1465:                                             ; preds = %1460
  %1466 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #8
  br label %1467

1467:                                             ; preds = %1465, %1463
  %.pn868 = phi { ptr, i32 } [ %1466, %1465 ], [ %1464, %1463 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %197) #8
  br label %1470

1468:                                             ; preds = %1461
  %1469 = landingpad { ptr, i32 }
          cleanup
  br label %1470

1470:                                             ; preds = %1468, %1467
  %.pn870 = phi { ptr, i32 } [ %1469, %1468 ], [ %.pn868, %1467 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %195) #8
  br label %1483

.lr.ph1805:                                       ; preds = %.preheader1138, %1476
  %.07581804 = phi i64 [ %1477, %1476 ], [ 0, %.preheader1138 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %198) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %198)
          to label %1471 unwind label %.split1813.split

1471:                                             ; preds = %.lr.ph1805
  %1472 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1454, i64 noundef %.07581804) #8
  %1473 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %815, i64 noundef %.07581804) #8
  %1474 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef nonnull align 8 dereferenceable(48) %1473)
          to label %1475 unwind label %.split1816.split

1475:                                             ; preds = %1471
  invoke void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %1472, ptr noundef nonnull align 8 dereferenceable(8) %1474)
          to label %1476 unwind label %.split1816.split

1476:                                             ; preds = %1475
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %198) #8
  %1477 = add nuw i64 %.07581804, 1
  %1478 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %815) #8
  %1479 = icmp ult i64 %1477, %1478
  br i1 %1479, label %.lr.ph1805, label %.loopexit1211, !llvm.loop !81

.split1813.split:                                 ; preds = %.lr.ph1805
  %1480 = landingpad { ptr, i32 }
          cleanup
  br label %1482

.split1816.split:                                 ; preds = %1475, %1471
  %1481 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #8
  br label %1482

1482:                                             ; preds = %.split1816.split, %.split1813.split
  %.pn866 = phi { ptr, i32 } [ %1481, %.split1816.split ], [ %1480, %.split1813.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %198) #8
  br label %1483

1483:                                             ; preds = %1451, %1482, %1470, %1424, %1443, %1031, %1246, %864, %876, %889, %893, %904, %911, %.split7176.split, %1014, %1402, %1329, %1028, %832
  %.pn870.pn.pn.pn = phi { ptr, i32 } [ %.pn889.pn.pn.pn, %1402 ], [ %.pn899.pn.pn.pn.pn, %1329 ], [ %.pn950.pn.pn, %1028 ], [ %.pn988, %832 ], [ %.pn967.pn.pn.pn, %1014 ], [ %914, %.split7176.split ], [ %.pn972.pn, %911 ], [ %.pn975.pn.pn, %904 ], [ %.pn979, %893 ], [ %.pn981, %889 ], [ %.pn983, %876 ], [ %.pn985, %864 ], [ %.pn944.pn.pn.pn, %1246 ], [ %1032, %1031 ], [ %.pn881.pn.pn, %1443 ], [ %.pn876, %1424 ], [ %.pn863, %1451 ], [ %.pn870, %1470 ], [ %.pn866, %1482 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #8
  br label %1484

1484:                                             ; preds = %1483, %807
  %.pn870.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn870.pn.pn.pn, %1483 ], [ %808, %807 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  br label %1485

1485:                                             ; preds = %1484, %805
  %.pn870.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn870.pn.pn.pn.pn, %1484 ], [ %806, %805 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #8
  br label %1722

1486:                                             ; preds = %.loopexit1211, %797
  %1487 = add i32 %.069810020, 1
  %1488 = zext i32 %1487 to i64
  %1489 = call noundef i64 @_ZNKSt6vectorIN3MIR9StatementESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %779) #8
  %1490 = icmp ugt i64 %1489, %1488
  br i1 %1490, label %.lr.ph10022, label %._crit_edge10023, !llvm.loop !82

1491:                                             ; preds = %._crit_edge10023
  br i1 %781, label %1492, label %.lr.ph10297

1492:                                             ; preds = %1491
  %1493 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %1494 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1493, ptr noundef nonnull @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %1495 unwind label %1504

1495:                                             ; preds = %1492
  %1496 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %1494, ptr noundef nonnull align 8 dereferenceable(120) %10)
          to label %1497 unwind label %1504

1497:                                             ; preds = %1495
  %1498 = getelementptr inbounds i8, ptr %779, i64 24
  %1499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %1496, ptr noundef nonnull align 8 dereferenceable(168) %1498)
          to label %1500 unwind label %1504

1500:                                             ; preds = %1497
  %1501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1499, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1502 unwind label %1504

1502:                                             ; preds = %1500
  %1503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1501, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.lr.ph10297 unwind label %1504

1504:                                             ; preds = %1502, %1500, %1497, %1495, %1492, %._crit_edge10023
  %1505 = landingpad { ptr, i32 }
          cleanup
  br label %1722

.loopexit1212:                                    ; preds = %.preheader1207, %.preheader1205, %.preheader1201, %.preheader1199, %.preheader1197, %.preheader1195, %.preheader1193, %.lr.ph10297, %..loopexit1159_crit_edge, %1567, %1714, %1564
  %1506 = add i32 %.069710300, 1
  %1507 = zext i32 %1506 to i64
  %1508 = call noundef i64 @_ZNKSt6vectorIN3MIR10BasicBlockESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #8
  %1509 = icmp ugt i64 %1508, %1507
  br i1 %1509, label %777, label %._crit_edge10303, !llvm.loop !83

.lr.ph10297:                                      ; preds = %1502, %1491
  %1510 = getelementptr inbounds i8, ptr %779, i64 24
  %1511 = call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %1510)
  switch i32 %1511, label %.loopexit1212 [
    i32 0, label %1520
    i32 1, label %.preheader1193
    i32 2, label %.preheader1195
    i32 3, label %.preheader1197
    i32 4, label %.preheader1199
    i32 5, label %.preheader1201
    i32 6, label %.preheader1203
    i32 7, label %.preheader1205
    i32 8, label %.preheader1207
    i32 9, label %.lr.ph10028
  ]

.preheader1207:                                   ; preds = %.lr.ph10297
  %1512 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3MIR10Terminator14as_SwitchValueEv(ptr noundef nonnull align 8 dereferenceable(168) %1510)
  br label %.loopexit1212

.preheader1205:                                   ; preds = %.lr.ph10297
  %1513 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK3MIR10Terminator9as_SwitchEv(ptr noundef nonnull align 8 dereferenceable(168) %1510)
  br label %.loopexit1212

.preheader1203:                                   ; preds = %.lr.ph10297
  %1514 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3MIR10Terminator5as_IfEv(ptr noundef nonnull align 8 dereferenceable(168) %1510)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %199) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %199)
          to label %1521 unwind label %.split10085.split

.preheader1201:                                   ; preds = %.lr.ph10297
  %1515 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator8as_PanicEv(ptr noundef nonnull align 8 dereferenceable(168) %1510)
  br label %.loopexit1212

.preheader1199:                                   ; preds = %.lr.ph10297
  %1516 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3MIR10Terminator7as_GotoEv(ptr noundef nonnull align 8 dereferenceable(168) %1510)
  br label %.loopexit1212

.preheader1197:                                   ; preds = %.lr.ph10297
  %1517 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(168) %1510)
  br label %.loopexit1212

.preheader1195:                                   ; preds = %.lr.ph10297
  %1518 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(168) %1510)
  br label %.loopexit1212

.preheader1193:                                   ; preds = %.lr.ph10297
  %1519 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3MIR10Terminator13as_IncompleteEv(ptr noundef nonnull align 8 dereferenceable(168) %1510)
  br label %.loopexit1212

1520:                                             ; preds = %.lr.ph10297
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.1, i32 noundef 1145, ptr noundef nonnull @__PRETTY_FUNCTION__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_) #9
  unreachable

1521:                                             ; preds = %.preheader1203
  %1522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef nonnull align 8 dereferenceable(32) %1514, i32 noundef 0)
          to label %1523 unwind label %.split10088.split

1523:                                             ; preds = %1521
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %200) #8
  store i32 14, ptr %200, align 4, !tbaa !63
  %1524 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %1522, ptr noundef nonnull align 4 dereferenceable(4) %200)
          to label %1525 unwind label %.split10091.split

1525:                                             ; preds = %1523
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %200) #8
  br i1 %1524, label %.split10094, label %..loopexit1159_crit_edge

.split10094:                                      ; preds = %1525
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %201) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %201, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %203) #8
  store ptr %201, ptr %203, align 8, !tbaa !5
  %1526 = getelementptr inbounds i8, ptr %203, i64 8
  store ptr %1522, ptr %1526, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_53vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %202, ptr noundef nonnull align 8 dereferenceable(16) %203) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %202)
          to label %1527 unwind label %1532

1527:                                             ; preds = %.split10094
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %203) #8
  %1528 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1528, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1528, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1534

.split10085.split:                                ; preds = %.preheader1203
  %1529 = landingpad { ptr, i32 }
          cleanup
  br label %1538

.split10088.split:                                ; preds = %1521
  %1530 = landingpad { ptr, i32 }
          cleanup
  br label %1537

.split10091.split:                                ; preds = %1523
  %1531 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %200) #8
  br label %1537

1532:                                             ; preds = %.split10094
  %1533 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %203) #8
  br label %1536

1534:                                             ; preds = %1527
  %1535 = landingpad { ptr, i32 }
          cleanup
  br label %1536

1536:                                             ; preds = %1534, %1532
  %.pn858 = phi { ptr, i32 } [ %1535, %1534 ], [ %1533, %1532 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %201) #8
  br label %1537

..loopexit1159_crit_edge:                         ; preds = %1525
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %199) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %199) #8
  br label %.loopexit1212

1537:                                             ; preds = %1536, %.split10091.split, %.split10088.split
  %.pn858.pn = phi { ptr, i32 } [ %.pn858, %1536 ], [ %1531, %.split10091.split ], [ %1530, %.split10088.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %199) #8
  br label %1538

1538:                                             ; preds = %1537, %.split10085.split
  %.pn858.pn.pn = phi { ptr, i32 } [ %.pn858.pn, %1537 ], [ %1529, %.split10085.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %199) #8
  br label %1722

.lr.ph10028:                                      ; preds = %.lr.ph10297
  %1539 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %1510)
  %1540 = getelementptr inbounds i8, ptr %1539, i64 40
  %1541 = getelementptr inbounds i8, ptr %1539, i64 136
  %1542 = getelementptr inbounds i8, ptr %1539, i64 8
  %1543 = call noundef zeroext i1 @_ZNK3MIR10CallTarget8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %1540)
  br i1 %1543, label %1544, label %1567

1544:                                             ; preds = %.lr.ph10028
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %204) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %1545 unwind label %1555

1545:                                             ; preds = %1544
  %1546 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %1540)
  %1547 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull align 8 dereferenceable(32) %1546, i32 noundef 0)
          to label %1548 unwind label %1557

1548:                                             ; preds = %1545
  %1549 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1547)
  %1550 = call noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1549)
  br i1 %1550, label %1564, label %1551

1551:                                             ; preds = %1548
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %205) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %205, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %207) #8
  store ptr %205, ptr %207, align 8, !tbaa !5
  %1552 = getelementptr inbounds i8, ptr %207, i64 8
  store ptr %1547, ptr %1552, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_54vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %206, ptr noundef nonnull align 8 dereferenceable(16) %207) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %206)
          to label %1553 unwind label %1559

1553:                                             ; preds = %1551
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %207) #8
  %1554 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1554, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1554, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1561

1555:                                             ; preds = %1544
  %1556 = landingpad { ptr, i32 }
          cleanup
  br label %1566

1557:                                             ; preds = %1545
  %1558 = landingpad { ptr, i32 }
          cleanup
  br label %1565

1559:                                             ; preds = %1551
  %1560 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %207) #8
  br label %1563

1561:                                             ; preds = %1553
  %1562 = landingpad { ptr, i32 }
          cleanup
  br label %1563

1563:                                             ; preds = %1561, %1559
  %.pn853 = phi { ptr, i32 } [ %1562, %1561 ], [ %1560, %1559 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %205) #8
  br label %1565

1564:                                             ; preds = %1548
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #8
  br label %.loopexit1212

1565:                                             ; preds = %1563, %1557
  %.pn853.pn = phi { ptr, i32 } [ %.pn853, %1563 ], [ %1558, %1557 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #8
  br label %1566

1566:                                             ; preds = %1565, %1555
  %.pn853.pn.pn = phi { ptr, i32 } [ %.pn853.pn, %1565 ], [ %1556, %1555 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #8
  br label %1722

1567:                                             ; preds = %.lr.ph10028
  %1568 = call noundef zeroext i1 @_ZNK3MIR10CallTarget7is_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %1540)
  br i1 %1568, label %1569, label %.loopexit1212

1569:                                             ; preds = %1567
  %1570 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %1540)
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %208) #8
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %208)
          to label %1571 unwind label %1578

1571:                                             ; preds = %1569
  %1572 = load ptr, ptr %771, align 8, !tbaa !84
  call void @_ZN3HIR8ItemPathC2ERKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(56) %209, ptr noundef nonnull align 8 dereferenceable(88) %1570)
  call void @_ZN13Monomorphiser19set_consteval_stateERKN3HIR5CrateENS0_8ItemPathE(ptr noundef nonnull align 8 dereferenceable(96) %208, ptr noundef nonnull align 8 dereferenceable(944) %1572, ptr noundef nonnull byval(%"class.HIR::ItemPath") align 8 %209)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %210) #8
  %1573 = load ptr, ptr %759, align 8, !tbaa !66
  invoke void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind nonnull writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %210, ptr noundef nonnull align 8 dereferenceable(424) %1573, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(88) %1570, ptr noundef nonnull align 8 dereferenceable(144) %208, i1 noundef zeroext true, ptr noundef null)
          to label %1574 unwind label %1580

1574:                                             ; preds = %1571
  %1575 = call noundef zeroext i1 @_ZNK18StaticTraitResolve8ValuePtr11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %210)
  br i1 %1575, label %1584, label %1576

1576:                                             ; preds = %1574
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %212) #8
  store ptr %1570, ptr %212, align 8, !tbaa !5
  store ptr %210, ptr %772, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_55vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull align 8 dereferenceable(16) %212) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %211)
          to label %1577 unwind label %1582

1577:                                             ; preds = %1576
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %212) #8
  br label %1584

1578:                                             ; preds = %1569
  %1579 = landingpad { ptr, i32 }
          cleanup
  br label %1720

1580:                                             ; preds = %1571
  %1581 = landingpad { ptr, i32 }
          cleanup
  br label %1719

1582:                                             ; preds = %1576
  %1583 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %212) #8
  br label %1718

1584:                                             ; preds = %1577, %1574
  %1585 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK18StaticTraitResolve8ValuePtr11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %210)
  %1586 = load ptr, ptr %1585, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %213) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213)
          to label %1587 unwind label %1598

1587:                                             ; preds = %1584
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %214) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %214)
          to label %1588 unwind label %1600

1588:                                             ; preds = %1587
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %215) #8
  store ptr %214, ptr %215, align 8, !tbaa !5
  store ptr %208, ptr %773, align 8, !tbaa !5
  store ptr %9, ptr %774, align 8, !tbaa !5
  store ptr %10, ptr %775, align 8, !tbaa !5
  %1589 = getelementptr inbounds i8, ptr %1586, i64 232
  %1590 = load i8, ptr %1589, align 8, !tbaa !85, !range !125, !noundef !126
  %1591 = trunc nuw i8 %1590 to i1
  %1592 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1541) #8
  %1593 = getelementptr inbounds i8, ptr %1586, i64 208
  %1594 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1593) #8
  br i1 %1591, label %1595, label %1604

1595:                                             ; preds = %1588
  %.not835 = icmp ult i64 %1592, %1594
  br i1 %.not835, label %1596, label %1610

1596:                                             ; preds = %1595
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %217) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_56vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %216, ptr noundef nonnull align 1 dereferenceable(1) %217) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %216)
          to label %1597 unwind label %1602

1597:                                             ; preds = %1596
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %217) #8
  br label %1610

1598:                                             ; preds = %1584
  %1599 = landingpad { ptr, i32 }
          cleanup
  br label %1717

1600:                                             ; preds = %1587
  %1601 = landingpad { ptr, i32 }
          cleanup
  br label %1716

1602:                                             ; preds = %1596
  %1603 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %217) #8
  br label %1715

1604:                                             ; preds = %1588
  %1605 = icmp eq i64 %1592, %1594
  br i1 %1605, label %1610, label %1606

1606:                                             ; preds = %1604
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %219) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_57vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %218, ptr noundef nonnull align 1 dereferenceable(1) %219) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %218)
          to label %1607 unwind label %1608

1607:                                             ; preds = %1606
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %219) #8
  br label %1610

1608:                                             ; preds = %1606
  %1609 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %218) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %219) #8
  br label %1715

1610:                                             ; preds = %1604, %1607, %1595, %1597
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %220) #8
  %1611 = getelementptr inbounds i8, ptr %1586, i64 208
  store i64 0, ptr %220, align 8, !tbaa !127
  %1612 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1611) #8
  %.not10310 = icmp eq i64 %1612, 0
  br i1 %.not10310, label %._crit_edge10026, label %.lr.ph10025

._crit_edge10026:                                 ; preds = %1674, %1610
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %220) #8
  %1613 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull align 8 dereferenceable(32) %1542, i32 noundef 0)
          to label %1679 unwind label %1700

.lr.ph10025:                                      ; preds = %1610, %1674
  %1614 = phi i64 [ %1675, %1674 ], [ 0, %1610 ]
  %1615 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1541, i64 noundef %1614) #8
  %1616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull align 8 dereferenceable(48) %1615)
          to label %1617 unwind label %1643

1617:                                             ; preds = %.lr.ph10025
  %1618 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1611, i64 noundef %1614) #8
  %1619 = getelementptr inbounds i8, ptr %1618, i64 216
  %1620 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_60clESK_"(ptr noundef nonnull align 8 dereferenceable(32) %215, ptr noundef nonnull align 8 dereferenceable(8) %1619)
          to label %1621 unwind label %1645

1621:                                             ; preds = %1617
  %1622 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1623 unwind label %1645

1623:                                             ; preds = %1621
  br i1 %1622, label %1624, label %1647

1624:                                             ; preds = %1623
  %1625 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %1626 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1625, ptr noundef nonnull @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %1627 unwind label %1645

1627:                                             ; preds = %1624
  %1628 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1626, ptr noundef nonnull @.str.14)
          to label %1629 unwind label %1645

1629:                                             ; preds = %1627
  %1630 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %1628, i64 noundef %1614)
          to label %1631 unwind label %1645

1631:                                             ; preds = %1629
  %1632 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1630, ptr noundef nonnull @.str.15)
          to label %1633 unwind label %1645

1633:                                             ; preds = %1631
  %1634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1632, ptr noundef nonnull align 8 dereferenceable(8) %1616)
          to label %1635 unwind label %1645

1635:                                             ; preds = %1633
  %1636 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1634, ptr noundef nonnull @.str.16)
          to label %1637 unwind label %1645

1637:                                             ; preds = %1635
  %1638 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1636, ptr noundef nonnull align 8 dereferenceable(8) %1620)
          to label %1639 unwind label %1645

1639:                                             ; preds = %1637
  %1640 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1638, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1641 unwind label %1645

1641:                                             ; preds = %1639
  %1642 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1640, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1647 unwind label %1645

1643:                                             ; preds = %.lr.ph10025
  %1644 = landingpad { ptr, i32 }
          cleanup
  br label %1678

1645:                                             ; preds = %1656, %1641, %1639, %1637, %1635, %1633, %1631, %1629, %1627, %1624, %1621, %1617
  %1646 = landingpad { ptr, i32 }
          cleanup
  br label %1678

1647:                                             ; preds = %1641, %1623
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %221) #8
  invoke void @_ZN3HIR7TypeRef11new_divergeEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %221)
          to label %1648 unwind label %1651

1648:                                             ; preds = %1647
  %1649 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1616, ptr noundef nonnull align 8 dereferenceable(8) %221)
          to label %1650 unwind label %1653

1650:                                             ; preds = %1648
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #8
  br i1 %1649, label %1674, label %1656

1651:                                             ; preds = %1647
  %1652 = landingpad { ptr, i32 }
          cleanup
  br label %1655

1653:                                             ; preds = %1648
  %1654 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #8
  br label %1655

1655:                                             ; preds = %1653, %1651
  %.pn839 = phi { ptr, i32 } [ %1654, %1653 ], [ %1652, %1651 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #8
  br label %1678

1656:                                             ; preds = %1650
  %1657 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1616, ptr noundef nonnull align 8 dereferenceable(8) %1620)
          to label %1658 unwind label %1645

1658:                                             ; preds = %1656
  br i1 %1657, label %1674, label %1659

1659:                                             ; preds = %1658
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %222) #8
  store ptr @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_, ptr %222, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %224) #8
  store ptr %222, ptr %224, align 8, !tbaa !5
  %1660 = getelementptr inbounds i8, ptr %224, i64 8
  store ptr %220, ptr %1660, align 8, !tbaa !5
  %1661 = getelementptr inbounds i8, ptr %224, i64 16
  store ptr %1616, ptr %1661, align 8, !tbaa !5
  %1662 = getelementptr inbounds i8, ptr %224, i64 24
  store ptr %1620, ptr %1662, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_58vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %223, ptr noundef nonnull align 8 dereferenceable(32) %224)
          to label %1663 unwind label %1666

1663:                                             ; preds = %1659
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %223)
          to label %1664 unwind label %1668

1664:                                             ; preds = %1663
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %224) #8
  %1665 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.7, ptr %1665, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %1665, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %1725 unwind label %1671

1666:                                             ; preds = %1659
  %1667 = landingpad { ptr, i32 }
          cleanup
  br label %1670

1668:                                             ; preds = %1663
  %1669 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #8
  br label %1670

1670:                                             ; preds = %1668, %1666
  %.pn841 = phi { ptr, i32 } [ %1669, %1668 ], [ %1667, %1666 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %224) #8
  br label %1673

1671:                                             ; preds = %1664
  %1672 = landingpad { ptr, i32 }
          cleanup
  br label %1673

1673:                                             ; preds = %1671, %1670
  %.pn843 = phi { ptr, i32 } [ %1672, %1671 ], [ %.pn841, %1670 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %222) #8
  br label %1678

1674:                                             ; preds = %1658, %1650
  %1675 = add nuw i64 %1614, 1
  store i64 %1675, ptr %220, align 8, !tbaa !127
  %1676 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1611) #8
  %1677 = icmp ult i64 %1675, %1676
  br i1 %1677, label %.lr.ph10025, label %._crit_edge10026, !llvm.loop !128

1678:                                             ; preds = %1645, %1655, %1673, %1643
  %.pn843.pn.pn = phi { ptr, i32 } [ %1644, %1643 ], [ %.pn843, %1673 ], [ %1646, %1645 ], [ %.pn839, %1655 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %220) #8
  br label %1715

1679:                                             ; preds = %._crit_edge10026
  %1680 = getelementptr inbounds i8, ptr %1586, i64 240
  %1681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_60clESK_"(ptr noundef nonnull align 8 dereferenceable(32) %215, ptr noundef nonnull align 8 dereferenceable(8) %1680)
          to label %1682 unwind label %1702

1682:                                             ; preds = %1679
  %1683 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1684 unwind label %1702

1684:                                             ; preds = %1682
  br i1 %1683, label %1685, label %1704

1685:                                             ; preds = %1684
  %1686 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %1687 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1686, ptr noundef nonnull @__func__._Z12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_)
          to label %1688 unwind label %1702

1688:                                             ; preds = %1685
  %1689 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1687, ptr noundef nonnull @.str.17)
          to label %1690 unwind label %1702

1690:                                             ; preds = %1688
  %1691 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1689, ptr noundef nonnull align 8 dereferenceable(8) %1613)
          to label %1692 unwind label %1702

1692:                                             ; preds = %1690
  %1693 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1691, ptr noundef nonnull @.str.16)
          to label %1694 unwind label %1702

1694:                                             ; preds = %1692
  %1695 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1693, ptr noundef nonnull align 8 dereferenceable(8) %1681)
          to label %1696 unwind label %1702

1696:                                             ; preds = %1694
  %1697 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1695, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1698 unwind label %1702

1698:                                             ; preds = %1696
  %1699 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1697, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1704 unwind label %1702

1700:                                             ; preds = %._crit_edge10026
  %1701 = landingpad { ptr, i32 }
          cleanup
  br label %1715

1702:                                             ; preds = %1707, %1698, %1696, %1694, %1692, %1690, %1688, %1685, %1682, %1679
  %1703 = landingpad { ptr, i32 }
          cleanup
  br label %1715

1704:                                             ; preds = %1698, %1684
  %1705 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1681)
  %1706 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %1705)
  br i1 %1706, label %1714, label %1707

1707:                                             ; preds = %1704
  %1708 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1613, ptr noundef nonnull align 8 dereferenceable(8) %1681)
          to label %1709 unwind label %1702

1709:                                             ; preds = %1707
  br i1 %1708, label %1714, label %1710

1710:                                             ; preds = %1709
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %226) #8
  store ptr %1613, ptr %226, align 8, !tbaa !5
  store ptr %1681, ptr %776, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_59vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %225, ptr noundef nonnull align 8 dereferenceable(16) %226) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull %225)
          to label %1711 unwind label %1712

1711:                                             ; preds = %1710
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %225) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %226) #8
  br label %1714

1712:                                             ; preds = %1710
  %1713 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %225) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %226) #8
  br label %1715

1714:                                             ; preds = %1709, %1711, %1704
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %215) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %214) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %213) #8
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %210) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %210) #8
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %208) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %208) #8
  br label %.loopexit1212

1715:                                             ; preds = %1700, %1712, %1702, %1678, %1608, %1602
  %.pn843.pn.pn.pn = phi { ptr, i32 } [ %.pn843.pn.pn, %1678 ], [ %1603, %1602 ], [ %1609, %1608 ], [ %1701, %1700 ], [ %1713, %1712 ], [ %1703, %1702 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %215) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %214) #8
  br label %1716

1716:                                             ; preds = %1715, %1600
  %.pn843.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn843.pn.pn.pn, %1715 ], [ %1601, %1600 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %214) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #8
  br label %1717

1717:                                             ; preds = %1716, %1598
  %.pn843.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn843.pn.pn.pn.pn, %1716 ], [ %1599, %1598 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %213) #8
  br label %1718

1718:                                             ; preds = %1717, %1582
  %.pn843.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn843.pn.pn.pn.pn.pn, %1717 ], [ %1583, %1582 ]
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %210) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %210) #8
  br label %1719

1719:                                             ; preds = %1718, %1580
  %.pn843.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn843.pn.pn.pn.pn.pn.pn, %1718 ], [ %1581, %1580 ]
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %208) #8
  br label %1720

1720:                                             ; preds = %1719, %1578
  %.pn843.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn843.pn.pn.pn.pn.pn.pn.pn, %1719 ], [ %1579, %1578 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %208) #8
  br label %1722

1721:                                             ; preds = %._crit_edge10303
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %10) #8
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %10) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #8
  ret void

1722:                                             ; preds = %.loopexit1213, %.loopexit.split-lp, %1504, %1485, %1566, %1720, %1538, %756, %333, %321, %242
  %.pn1038.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1038.pn.pn.pn.pn, %321 ], [ %334, %333 ], [ %.pn999.pn.pn.pn, %756 ], [ %243, %242 ], [ %1505, %1504 ], [ %.pn870.pn.pn.pn.pn.pn, %1485 ], [ %.pn858.pn.pn, %1538 ], [ %.pn853.pn.pn, %1566 ], [ %.pn843.pn.pn.pn.pn.pn.pn.pn.pn, %1720 ], [ %lpad.loopexit, %.loopexit1213 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %10) #8
  br label %1723

1723:                                             ; preds = %1722, %241
  %.pn1038.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1038.pn.pn.pn.pn.pn, %1722 ], [ %.pn, %241 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %10) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #8
  br label %1724

1724:                                             ; preds = %1723, %235
  %.pn1038.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1038.pn.pn.pn.pn.pn.pn, %1723 ], [ %236, %235 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #8
  resume { ptr, i32 } %.pn1038.pn.pn.pn.pn.pn.pn.pn

1725:                                             ; preds = %1664, %1553, %1527, %1461, %1445, %1431, %1418, %1394, %1357, %1319, %1274, %1234, %1208, %1110, %1097, %1049, %985, %975, %965, %955, %945, %883, %870, %858, %799, %704, %676, %646, %613, %556, %519, %491, %458, %426, %401
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 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 #0 align 2

declare void @_Z12MIR_Dump_FcnRSoRKN3MIR8FunctionEj(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(96), i32 noundef) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 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 #3 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 #2

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

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

declare noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #2

declare noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

; Function Attrs: 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 #3 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIbED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 #0 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISE_EERKSD_ENK4$_15clISD_SD_EEDaRKT_RKT0_"(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 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR8Constant3tagEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 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 zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #3 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 #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR8Constant8as_BytesEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 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 #5 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR8Constant15as_StaticStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3MIR8Constant10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 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 #3 align 2

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 #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 #3 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 #3 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 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 #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 #3 align 2

declare noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200)) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 #3 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 #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 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 #3 align 2

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

declare noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_37vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 #3 align 2

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

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

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

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

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

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

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

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

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

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

declare noundef ptr @_ZNK3MIR11TypeResolve17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_50vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_51vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 #3 align 2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN13Monomorphiser19set_consteval_stateERKN3HIR5CrateENS0_8ItemPathE(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef byval(%"class.HIR::ItemPath") align 8) local_unnamed_addr #3 align 2

; 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 #3 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_58vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ12MIR_ValidateRK18StaticTraitResolveRKN3HIR8ItemPathERKN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISJ_EERKSI_E4$_59vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3 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 void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 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 #4 = { 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 #5 = { 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 #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 8}
!10 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !11, i64 24, !20, i64 72, !26, i64 104, !26, i64 112, !26, i64 120, !26, i64 128, !26, i64 136, !26, i64 144, !26, i64 152, !26, i64 160, !26, i64 168, !26, i64 176, !26, i64 184, !26, i64 192, !26, i64 200, !26, i64 208}
!11 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !12, i64 0}
!12 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !13, i64 0}
!13 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !14, i64 0, !16, i64 8}
!14 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !15, i64 0}
!15 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!16 = !{!"_ZTSSt15_Rb_tree_header", !17, i64 0, !19, i64 32}
!17 = !{!"_ZTSSt18_Rb_tree_node_base", !18, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!18 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !21, i64 0, !25, i64 24}
!21 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!26 = !{!"_ZTSN3HIR10SimplePathE", !27, i64 0}
!27 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!28 = !{!10, !6, i64 16}
!29 = !{!30, !30, i64 0}
!30 = !{!"int", !7, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!34, !30, i64 0}
!34 = !{!"_ZTSN3MIR10Terminator10Data_PanicE", !30, i64 0}
!35 = !{!36, !30, i64 32}
!36 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !37, i64 0, !30, i64 32, !30, i64 36}
!37 = !{!"_ZTSN3MIR6LValueE", !38, i64 0, !39, i64 8}
!38 = !{!"_ZTSN3MIR6LValue7StorageE", !19, i64 0}
!39 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!36, !30, i64 36}
!44 = distinct !{!44, !32}
!45 = !{!46, !30, i64 32}
!46 = !{!"_ZTSN3MIR10Terminator16Data_SwitchValueE", !37, i64 0, !30, i64 32, !47, i64 40, !51, i64 64}
!47 = !{!"_ZTSSt6vectorIjSaIjEE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!"_ZTSN3MIR12SwitchValuesE", !52, i64 0, !7, i64 8}
!52 = !{!"_ZTSN3MIR12SwitchValues3TagE", !7, i64 0}
!53 = distinct !{!53, !32}
!54 = !{!55, !30, i64 0}
!55 = !{!"_ZTSN3MIR10Terminator9Data_CallE", !30, i64 0, !30, i64 4, !37, i64 8, !56, i64 40, !58, i64 136}
!56 = !{!"_ZTSN3MIR10CallTargetE", !57, i64 0, !7, i64 8}
!57 = !{!"_ZTSN3MIR10CallTarget3TagE", !7, i64 0}
!58 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!62 = !{!55, !30, i64 4}
!63 = !{!64, !64, i64 0}
!64 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!65 = distinct !{!65, !32}
!66 = !{!67, !6, i64 16}
!67 = !{!"_ZTSN3MIR11TypeResolveE", !30, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !68, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !30, i64 112, !30, i64 116}
!68 = !{!"_ZTS9FmtLambda", !69, i64 0}
!69 = !{!"_ZTSSt8functionIFvRSoEE", !70, i64 0, !6, i64 24}
!70 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!71 = !{!67, !6, i64 8}
!72 = !{!73, !74, i64 0}
!73 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !74, i64 0, !37, i64 8}
!74 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!75 = !{!76, !74, i64 0}
!76 = !{!"_ZTSN3HIR8TypeData12Data_PointerE", !74, i64 0, !77, i64 8}
!77 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!78 = !{!79, !74, i64 4}
!79 = !{!"_ZTSN3HIR8TypeData11Data_BorrowE", !80, i64 0, !74, i64 4, !77, i64 8}
!80 = !{!"_ZTSN3HIR11LifetimeRefE", !30, i64 0}
!81 = distinct !{!81, !32}
!82 = distinct !{!82, !32}
!83 = distinct !{!83, !32}
!84 = !{!67, !6, i64 24}
!85 = !{!86, !87, i64 232}
!86 = !{!"_ZTSN3HIR8FunctionE", !87, i64 0, !88, i64 8, !92, i64 80, !77, i64 88, !93, i64 96, !87, i64 104, !87, i64 105, !94, i64 112, !111, i64 208, !87, i64 232, !77, i64 240, !115, i64 248, !123, i64 320}
!87 = !{!"bool", !7, i64 0}
!88 = !{!"_ZTSN3HIR7LinkageE", !89, i64 0, !90, i64 8, !90, i64 40}
!89 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!90 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !91, i64 0, !19, i64 8, !7, i64 16}
!91 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!92 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!93 = !{!"_ZTS8RcString", !6, i64 0}
!94 = !{!"_ZTSN3HIR13GenericParamsE", !95, i64 0, !99, i64 24, !103, i64 48, !107, i64 72}
!95 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !96, i64 0}
!96 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !97, i64 0}
!97 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !98, i64 0}
!98 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!99 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !100, i64 0}
!100 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !101, i64 0}
!101 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!103 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !104, i64 0}
!104 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!107 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !108, i64 0}
!108 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !110, i64 0}
!110 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!111 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !112, i64 0}
!112 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !113, i64 0}
!113 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !114, i64 0}
!114 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!115 = !{!"_ZTSN3HIR7ExprPtrE", !116, i64 0, !117, i64 8, !117, i64 32, !121, i64 56, !122, i64 64}
!116 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!117 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !118, i64 0}
!118 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !119, i64 0}
!119 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !120, i64 0}
!120 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!121 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!122 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!123 = !{!"_ZTSN3HIR8Function8MarkingsE", !47, i64 0, !87, i64 24, !124, i64 28}
!124 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!125 = !{i8 0, i8 2}
!126 = !{}
!127 = !{!19, !19, i64 0}
!128 = distinct !{!128, !32}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass