; LLVM IR from thepowersgang/mrustc :: src/mir (borrow_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"

%struct.Span = 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 = 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.14 = type { ptr }
%class.anon.34 = type { ptr }
%"class.(anonymous namespace)::BorrowState" = type { ptr, %"class.std::vector.35", %"class.std::vector.40" }
%"class.std::vector.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = type { %"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeInfo, std::allocator<(anonymous namespace)::BorrowState::LifetimeInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeInfo, std::allocator<(anonymous namespace)::BorrowState::LifetimeInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeInfo, std::allocator<(anonymous namespace)::BorrowState::LifetimeInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeInfo, std::allocator<(anonymous namespace)::BorrowState::LifetimeInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeIvar, std::allocator<(anonymous namespace)::BorrowState::LifetimeIvar>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeIvar, std::allocator<(anonymous namespace)::BorrowState::LifetimeIvar>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeIvar, std::allocator<(anonymous namespace)::BorrowState::LifetimeIvar>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeIvar, std::allocator<(anonymous namespace)::BorrowState::LifetimeIvar>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.45 = type { i8 }
%class.anon.46 = type { i8 }
%struct.V = type { %"class.MIR::visit::VisitorMut", ptr, ptr }
%"class.MIR::visit::VisitorMut" = type { %"class.MIR::visit::VisitorBase" }
%"class.MIR::visit::VisitorBase" = type { ptr }
%class.anon.48 = type { i8 }
%class.anon.50 = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.94" = type { ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%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.343" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.343" = type { %"struct.std::_Vector_base.344" }
%"struct.std::_Vector_base.344" = 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.anon.348 = type { ptr, ptr, ptr }
%class.anon.349 = type { ptr, ptr, ptr, ptr }
%class.anon.360 = type { i8 }
%class.anon.362 = type { ptr }
%class.anon.363 = type { ptr, ptr, ptr }
%class.anon.364 = type { ptr }
%class.anon.368 = type { ptr }
%class.anon.369 = type { i8 }
%class.anon.371 = type { i8 }
%class.anon.373 = type { i8 }
%struct.MonomorphState = type { %class.MonomorphiserPP, %"class.HIR::TypeRef", ptr, ptr, %"struct.HIR::PathParams" }
%"struct.HIR::PathParams" = type { %class.ThinVector.84, %class.ThinVector.85, %class.ThinVector.86 }
%class.ThinVector.84 = type { ptr }
%class.ThinVector.85 = type { ptr }
%class.ThinVector.86 = type { ptr }
%"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.375 = type { ptr, ptr, ptr, ptr }
%class.anon.376 = type { i8 }
%"struct.(anonymous namespace)::FcnState" = type { %"struct.(anonymous namespace)::VarState", %"class.std::vector.411", %"class.std::vector.411", %"class.std::map.416", %"class.std::vector.411" }
%"struct.(anonymous namespace)::VarState" = type { i16, [2 x i8] }
%"class.std::map.416" = type { %"class.std::_Rb_tree.417" }
%"class.std::_Rb_tree.417" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, (anonymous namespace)::VarState>, std::_Select1st<std::pair<const HIR::Path, (anonymous namespace)::VarState>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, (anonymous namespace)::VarState>, std::_Select1st<std::pair<const HIR::Path, (anonymous namespace)::VarState>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.411" = type { %"struct.std::_Vector_base.412" }
%"struct.std::_Vector_base.412" = type { %"struct.std::_Vector_base<(anonymous namespace)::VarState, std::allocator<(anonymous namespace)::VarState>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::VarState, std::allocator<(anonymous namespace)::VarState>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::VarState, std::allocator<(anonymous namespace)::VarState>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::VarState, std::allocator<(anonymous namespace)::VarState>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Function" = type { %"class.std::vector.20", %"class.std::vector.25", %"class.std::vector.29", %"class.MIR::EnumCachePtr" }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = 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.25" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = 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.52", %"class.MIR::Terminator" }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = 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.89" }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.57" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = 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" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%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.88" }
%"struct.std::_Head_base.88" = type { ptr }
%"class.std::vector.89" = type { %"struct.std::_Vector_base.90" }
%"struct.std::_Vector_base.90" = 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::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.111", [8 x i8] }
%"class.std::unique_ptr.111" = type { %"struct.std::__uniq_ptr_data.112" }
%"struct.std::__uniq_ptr_data.112" = type { %"class.std::__uniq_ptr_impl.113" }
%"class.std::__uniq_ptr_impl.113" = type { %"class.std::tuple.114" }
%"class.std::tuple.114" = type { %"struct.std::_Tuple_impl.115" }
%"struct.std::_Tuple_impl.115" = type { %"struct.std::_Head_base.118" }
%"struct.std::_Head_base.118" = type { ptr }
%"struct.MIR::RValue::Data_Array" = type { %"class.std::vector.89" }
%"struct.MIR::RValue::Data_SizedArray" = type { %"class.MIR::Param", %"class.HIR::ArraySize" }
%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" }
%class.RangeVecMap = type <{ %"class.std::vector", [8 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.89" }
%"struct.MIR::RValue::Data_EnumVariant" = type { %"class.HIR::GenericPath", i32, %"class.std::vector.89" }
%"class.HIR::Enum" = type { %"class.HIR::GenericParams", i8, i32, %"class.HIR::Enum::Class", %"struct.HIR::TraitMarkings" }
%"class.HIR::GenericParams" = type { %"class.std::vector.160", %"class.std::vector.165", %"class.std::vector.170", %"class.std::vector.175" }
%"class.std::vector.160" = type { %"struct.std::_Vector_base.161" }
%"struct.std::_Vector_base.161" = 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.165" = type { %"struct.std::_Vector_base.166" }
%"struct.std::_Vector_base.166" = 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.170" = type { %"struct.std::_Vector_base.171" }
%"struct.std::_Vector_base.171" = 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.175" = type { %"struct.std::_Vector_base.176" }
%"struct.std::_Vector_base.176" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Enum::Class" = type { i32, %"union.HIR::Enum::Class::DataUnion" }
%"union.HIR::Enum::Class::DataUnion" = type { %"class.std::vector.350", [8 x i8] }
%"class.std::vector.350" = type { %"struct.std::_Vector_base.351" }
%"struct.std::_Vector_base.351" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TraitMarkings" = type { i8, i8, i8, %"class.std::map.338" }
%"class.std::map.338" = type { %"class.std::_Rb_tree.339" }
%"class.std::_Rb_tree.339" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::Enum::DataVariant" = type { %class.RcString, i8, %"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 }
%"class.HIR::Struct" = type <{ %"class.HIR::GenericParams", i32, [4 x i8], %"class.HIR::Struct::Data", i32, i32, %"struct.HIR::TraitMarkings", %"struct.HIR::StructMarkings", i32, [4 x i8] }>
%"class.HIR::Struct::Data" = type { i32, %"union.HIR::Struct::Data::DataUnion" }
%"union.HIR::Struct::Data::DataUnion" = type { %"class.std::vector.328" }
%"class.std::vector.328" = type { %"struct.std::_Vector_base.329" }
%"struct.std::_Vector_base.329" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%class.U128 = type { i64, i64 }
%"struct.HIR::VisEnt" = type { %"class.HIR::Publicity", %"class.HIR::TypeRef" }
%"class.HIR::Publicity" = type { %"class.std::shared_ptr.365" }
%"class.std::shared_ptr.365" = type { %"class.std::__shared_ptr.366" }
%"class.std::__shared_ptr.366" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.std::pair" = type { %class.RcString, %"struct.HIR::VisEnt" }
%"struct.MIR::RValue::Data_Tuple" = type { %"class.std::vector.89" }
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.20" }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.15", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %"struct.HIR::Function::Markings" }
%"struct.HIR::Linkage" = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.20", %"class.std::vector.20", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.62", i8, i32 }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.378" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.380", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.380" = type { %"struct.std::_Vector_base.381" }
%"struct.std::_Vector_base.381" = 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 }

@__dso_handle = external hidden global i8
@_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp = external hidden global %struct.Span, align 8
@_ZGVZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp = external hidden global i64, align 8
@__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ = external hidden unnamed_addr constant [16 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@.str = external hidden unnamed_addr constant [39 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [79 x i8], align 1
@__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ = external hidden unnamed_addr constant [150 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_(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) #1 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 ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %class.TraceLog, align 8
  %14 = alloca %"class.std::function", align 8
  %15 = alloca %class.anon, align 8
  %16 = alloca %"class.MIR::TypeResolve", align 8
  %17 = alloca %struct.FmtLambda, align 8
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.14, align 8
  %20 = alloca %struct.FmtLambda, align 8
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.34, align 8
  %23 = alloca %"class.(anonymous namespace)::BorrowState", align 8
  %24 = alloca %class.TraceLog, align 8
  %25 = alloca %"class.std::function", align 8
  %26 = alloca %class.anon.45, align 1
  %27 = alloca %"class.std::function", align 8
  %28 = alloca %class.anon.46, align 1
  %29 = alloca %struct.V, align 8
  %30 = alloca %class.TraceLog, align 8
  %31 = alloca %"class.std::function", align 8
  %32 = alloca %class.anon.48, align 1
  %33 = alloca %"class.std::function", align 8
  %34 = alloca %class.anon.50, align 1
  %35 = alloca ptr, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %38 = alloca i32, align 4
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.94", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.94", align 8
  %43 = alloca ptr, align 8
  %44 = alloca i8, align 1
  %45 = alloca ptr, align 8
  %46 = alloca i8, align 1
  %47 = alloca ptr, align 8
  %48 = alloca i8, align 1
  %49 = alloca ptr, align 8
  %50 = alloca i8, align 1
  %51 = alloca ptr, align 8
  %52 = alloca %"class.HIR::TypeRef", align 8
  %53 = alloca i8, align 1
  %54 = alloca ptr, align 8
  %55 = alloca %"class.HIR::TypeRef", align 8
  %56 = alloca %"class.HIR::TypeRef", align 8
  %57 = alloca %"struct.HIR::LifetimeRef", align 4
  %58 = alloca %"class.HIR::TypeRef", align 8
  %59 = alloca %"class.HIR::TypeRef", align 8
  %60 = alloca %"struct.HIR::LifetimeRef", align 4
  %61 = alloca i8, align 1
  %62 = alloca ptr, align 8
  %63 = alloca %"class.HIR::TypeRef", align 8
  %64 = alloca ptr, align 8
  %65 = alloca i64, align 8
  %66 = alloca i8, align 1
  %67 = alloca ptr, align 8
  %68 = alloca %"class.HIR::TypeRef", align 8
  %69 = alloca ptr, align 8
  %70 = alloca i8, align 1
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca %struct.MonomorphStatePtr, align 8
  %74 = alloca %"class.HIR::TypeRef", align 8
  %75 = alloca %class.anon.348, align 8
  %76 = alloca %class.anon.349, align 8
  %77 = alloca i64, align 8
  %78 = alloca i8, align 1
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca %struct.MonomorphStatePtr, align 8
  %82 = alloca %"class.HIR::TypeRef", align 8
  %83 = alloca %"class.std::function", align 8
  %84 = alloca %class.anon.360, align 1
  %85 = alloca ptr, align 8
  %86 = alloca %"class.std::function", align 8
  %87 = alloca %class.anon.362, align 8
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca %struct.MonomorphStatePtr, align 8
  %91 = alloca ptr, align 8
  %92 = alloca ptr, align 8
  %93 = alloca %class.anon.363, align 8
  %94 = alloca i8, align 1
  %95 = alloca ptr, align 8
  %96 = alloca i8, align 1
  %97 = alloca ptr, align 8
  %98 = alloca i8, align 1
  %99 = alloca ptr, align 8
  %100 = alloca %"class.std::function", align 8
  %101 = alloca %class.anon.364, align 8
  %102 = alloca i64, align 8
  %103 = alloca i8, align 1
  %104 = alloca ptr, align 8
  %105 = alloca %"class.std::function", align 8
  %106 = alloca %class.anon.368, align 8
  %107 = alloca i64, align 8
  %108 = alloca i8, align 1
  %109 = alloca ptr, align 8
  %110 = alloca %"class.std::function", align 8
  %111 = alloca %class.anon.369, align 1
  %112 = alloca i8, align 1
  %113 = alloca ptr, align 8
  %114 = alloca %"class.HIR::TypeRef", align 8
  %115 = alloca ptr, align 8
  %116 = alloca ptr, align 8
  %117 = alloca %"class.std::function", align 8
  %118 = alloca %class.anon.371, align 1
  %119 = alloca i64, align 8
  %120 = alloca i8, align 1
  %121 = alloca ptr, 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.HIR::TypeRef", align 8
  %127 = alloca ptr, align 8
  %128 = alloca %"class.HIR::TypeRef", align 8
  %129 = alloca ptr, align 8
  %130 = alloca i8, align 1
  %131 = alloca ptr, align 8
  %132 = alloca i8, align 1
  %133 = alloca ptr, 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 ptr, align 8
  %141 = alloca %"class.HIR::TypeRef", align 8
  %142 = alloca ptr, align 8
  %143 = alloca i8, align 1
  %144 = alloca ptr, align 8
  %145 = alloca i8, align 1
  %146 = alloca ptr, align 8
  %147 = alloca i8, align 1
  %148 = alloca ptr, align 8
  %149 = alloca i8, align 1
  %150 = alloca ptr, align 8
  %151 = alloca i8, align 1
  %152 = alloca ptr, align 8
  %153 = alloca i8, align 1
  %154 = alloca ptr, align 8
  %155 = alloca i8, align 1
  %156 = alloca ptr, align 8
  %157 = alloca i8, align 1
  %158 = alloca ptr, align 8
  %159 = alloca i8, align 1
  %160 = alloca ptr, align 8
  %161 = alloca i8, align 1
  %162 = alloca ptr, align 8
  %163 = alloca %"class.HIR::TypeRef", align 8
  %164 = alloca ptr, align 8
  %165 = alloca ptr, align 8
  %166 = alloca %"class.std::function", align 8
  %167 = alloca %class.anon.373, align 1
  %168 = alloca i64, align 8
  %169 = alloca i8, align 1
  %170 = alloca ptr, align 8
  %171 = alloca %"class.HIR::TypeRef", align 8
  %172 = alloca %struct.MonomorphState, align 8
  %173 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %174 = alloca %class.anon.375, align 8
  %175 = alloca ptr, align 8
  %176 = alloca %"class.std::function", align 8
  %177 = alloca %class.anon.376, align 1
  %178 = alloca i64, align 8
  %179 = alloca ptr, align 8
  %180 = alloca ptr, align 8
  %181 = alloca %"struct.(anonymous namespace)::FcnState", 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
  %182 = load atomic i8, ptr @_ZGVZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp acquire, align 8
  %183 = icmp eq i8 %182, 0
  br i1 %183, label %184, label %190, !prof !9

184:                                              ; preds = %5
  %185 = call i32 @__cxa_guard_acquire(ptr @_ZGVZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp) #0
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %187, label %190

187:                                              ; preds = %184
  invoke void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp)
          to label %188 unwind label %221

188:                                              ; preds = %187
  %189 = call i32 @__cxa_atexit(ptr @_ZN4SpanD1Ev, ptr @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp) #0
  br label %190

190:                                              ; preds = %188, %184, %5
  call void @llvm.lifetime.start.p0(i64 40, ptr %13) #0
  %191 = call noundef zeroext i1 @_Z13debug_enabledv()
  %192 = zext i1 %191 to i64
  %193 = select i1 %191, ptr @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #0
  %194 = getelementptr inbounds %class.anon, ptr %15, i32 0, i32 0
  %195 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %195, ptr %194, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #0
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef %193, ptr noundef %14)
          to label %196 unwind label %225

196:                                              ; preds = %190
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #0
  call void @llvm.lifetime.start.p0(i64 120, ptr %16) #0
  %197 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #0
  %198 = getelementptr inbounds %class.anon.14, ptr %19, i32 0, i32 0
  %199 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %199, ptr %198, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #0
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef %18)
          to label %200 unwind label %229

200:                                              ; preds = %196
  %201 = load ptr, ptr %10, align 8, !tbaa !5
  %202 = load ptr, ptr %9, align 8, !tbaa !5
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp, ptr noundef nonnull align 8 dereferenceable(424) %197, ptr noundef %17, ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull align 8 dereferenceable(24) %202, ptr noundef nonnull align 8 dereferenceable(96) %203)
          to label %204 unwind label %233

204:                                              ; preds = %200
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #0
  br label %205

205:                                              ; preds = %204
  %206 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %207 unwind label %238

207:                                              ; preds = %205
  br i1 %206, label %208, label %251

208:                                              ; preds = %207
  %209 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %209, ptr noundef @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %211 unwind label %238

211:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #0
  %212 = getelementptr inbounds %class.anon.34, ptr %22, i32 0, i32 0
  %213 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %213, ptr %212, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #0
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef %21)
          to label %214 unwind label %242

214:                                              ; preds = %211
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK9FmtLambda(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %216 unwind label %246

216:                                              ; preds = %214
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef @_ZSt3decRSt8ios_base)
          to label %218 unwind label %246

218:                                              ; preds = %216
  %219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %220 unwind label %246

220:                                              ; preds = %218
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #0
  br label %251

221:                                              ; preds = %187
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %11, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %12, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp) #0
  br label %2071

225:                                              ; preds = %190
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %11, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #0
  br label %2070

229:                                              ; preds = %196
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %11, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %12, align 4
  br label %237

233:                                              ; preds = %200
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %11, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %12, align 4
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #0
  br label %237

237:                                              ; preds = %233, %229
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #0
  br label %2069

238:                                              ; preds = %208, %205
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %11, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %12, align 4
  br label %2068

242:                                              ; preds = %211
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %11, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %12, align 4
  br label %250

246:                                              ; preds = %218, %216, %214
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %11, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %12, align 4
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #0
  br label %250

250:                                              ; preds = %246, %242
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #0
  br label %2068

251:                                              ; preds = %220, %207
  br label %252

252:                                              ; preds = %251
  br label %253

253:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 56, ptr %23) #0
  invoke void @_ZN12_GLOBAL__N_111BorrowStateC2ERKN3MIR11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(120) %16)
          to label %254 unwind label %279

254:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 40, ptr %24) #0
  %255 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %256 unwind label %283

256:                                              ; preds = %254
  %257 = zext i1 %255 to i64
  %258 = select i1 %255, ptr @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 1 dereferenceable(1) %26) #0
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 1 dereferenceable(1) %28) #0
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %24, ptr noundef %258, ptr noundef %25, ptr noundef %27)
          to label %259 unwind label %287

259:                                              ; preds = %256
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #0
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #0
  invoke void @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_EN1VC2ERKNS6_11TypeResolveERN12_GLOBAL__N_111BorrowStateE(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(56) %23)
          to label %260 unwind label %291

260:                                              ; preds = %259
  %261 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN3MIR5visit11VisitorBaseINS0_6DecMutEE14visit_functionERNS_11TypeResolveERNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(96) %261)
          to label %262 unwind label %291

262:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %24) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %30) #0
  %263 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %264 unwind label %296

264:                                              ; preds = %262
  %265 = zext i1 %263 to i64
  %266 = select i1 %263, ptr @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 1 dereferenceable(1) %32) #0
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 1 dereferenceable(1) %34) #0
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %30, ptr noundef %266, ptr noundef %31, ptr noundef %33)
          to label %267 unwind label %300

267:                                              ; preds = %264
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #0
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = getelementptr inbounds %"class.MIR::Function", ptr %268, i32 0, i32 2
  store ptr %269, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #0
  %270 = load ptr, ptr %35, align 8, !tbaa !5
  %271 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %270) #0
  %272 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %36, i32 0, i32 0
  store ptr %271, ptr %272, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #0
  %273 = load ptr, ptr %35, align 8, !tbaa !5
  %274 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %273) #0
  %275 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %37, i32 0, i32 0
  store ptr %274, ptr %275, align 8
  br label %276

276:                                              ; preds = %2051, %267
  %277 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  br i1 %277, label %304, label %278

278:                                              ; preds = %276
  store i32 4, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #0
  br label %2054

279:                                              ; preds = %253
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %11, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %12, align 4
  br label %2067

283:                                              ; preds = %254
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %11, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %12, align 4
  br label %295

287:                                              ; preds = %256
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %11, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #0
  br label %295

291:                                              ; preds = %260, %259
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %11, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %24) #0
  br label %295

295:                                              ; preds = %291, %287, %283
  call void @llvm.lifetime.end.p0(i64 40, ptr %24) #0
  br label %2066

296:                                              ; preds = %262
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %11, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %12, align 4
  br label %2061

300:                                              ; preds = %264
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %11, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #0
  br label %2061

304:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #0
  %305 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #0
  store ptr %305, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #0
  %306 = load ptr, ptr %39, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %306, i32 0, i32 0
  store ptr %307, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #0
  %308 = load ptr, ptr %40, align 8, !tbaa !5
  %309 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %308) #0
  %310 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.94", ptr %41, i32 0, i32 0
  store ptr %309, ptr %310, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #0
  %311 = load ptr, ptr %40, align 8, !tbaa !5
  %312 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %311) #0
  %313 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.94", ptr %42, i32 0, i32 0
  store ptr %312, ptr %313, align 8
  br label %314

314:                                              ; preds = %1640, %304
  %315 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #0
  br i1 %315, label %317, label %316

316:                                              ; preds = %314
  store i32 6, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  br label %1643

317:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #0
  %318 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #0
  store ptr %318, ptr %43, align 8, !tbaa !5
  %319 = load ptr, ptr %39, align 8, !tbaa !5
  %320 = load ptr, ptr %8, align 8, !tbaa !5
  %321 = getelementptr inbounds %"class.MIR::Function", ptr %320, i32 0, i32 2
  %322 = call noundef ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %321) #0
  %323 = ptrtoint ptr %319 to i64
  %324 = ptrtoint ptr %322 to i64
  %325 = sub i64 %323, %324
  %326 = sdiv exact i64 %325, 192
  %327 = trunc i64 %326 to i32
  %328 = load ptr, ptr %43, align 8, !tbaa !5
  %329 = load ptr, ptr %39, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %329, i32 0, i32 0
  %331 = call noundef ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %330) #0
  %332 = ptrtoint ptr %328 to i64
  %333 = ptrtoint ptr %331 to i64
  %334 = sub i64 %332, %333
  %335 = sdiv exact i64 %334, 152
  %336 = trunc i64 %335 to i32
  invoke void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %16, i32 noundef %327, i32 noundef %336)
          to label %337 unwind label %354

337:                                              ; preds = %317
  br label %338

338:                                              ; preds = %337
  %339 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %340 unwind label %354

340:                                              ; preds = %338
  br i1 %339, label %341, label %358

341:                                              ; preds = %340
  %342 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %342, ptr noundef @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %344 unwind label %354

344:                                              ; preds = %341
  %345 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef nonnull align 8 dereferenceable(120) %16)
          to label %346 unwind label %354

346:                                              ; preds = %344
  %347 = load ptr, ptr %43, align 8, !tbaa !5
  %348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull align 8 dereferenceable(152) %347)
          to label %349 unwind label %354

349:                                              ; preds = %346
  %350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef @_ZSt3decRSt8ios_base)
          to label %351 unwind label %354

351:                                              ; preds = %349
  %352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %350, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %353 unwind label %354

353:                                              ; preds = %351
  br label %358

354:                                              ; preds = %351, %349, %346, %344, %341, %338, %317
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %11, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %12, align 4
  br label %1642

358:                                              ; preds = %353, %340
  br label %359

359:                                              ; preds = %358
  br label %360

360:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #0
  store i8 1, ptr %44, align 1, !tbaa !12
  br label %361

361:                                              ; preds = %1638, %360
  %362 = load i8, ptr %44, align 1, !tbaa !12, !range !14, !noundef !15
  %363 = trunc i8 %362 to i1
  br i1 %363, label %365, label %364

364:                                              ; preds = %361
  store i32 10, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #0
  br label %1639

365:                                              ; preds = %361
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #0
  %366 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %366, ptr %45, align 8, !tbaa !5
  br label %367

367:                                              ; preds = %1635, %365
  %368 = load i8, ptr %44, align 1, !tbaa !12, !range !14, !noundef !15
  %369 = trunc i8 %368 to i1
  br i1 %369, label %371, label %370

370:                                              ; preds = %367
  store i32 13, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  br label %1637

371:                                              ; preds = %367
  %372 = load ptr, ptr %45, align 8, !tbaa !5
  %373 = invoke noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %372)
          to label %374 unwind label %375

374:                                              ; preds = %371
  switch i32 %373, label %1634 [
    i32 0, label %379
    i32 1, label %380
    i32 4, label %1519
    i32 6, label %1542
    i32 5, label %1565
    i32 2, label %1588
    i32 3, label %1611
  ]

375:                                              ; preds = %371
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %11, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %12, align 4
  br label %1636

379:                                              ; preds = %374
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 579, ptr noundef @__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

380:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #0
  store i8 1, ptr %46, align 1, !tbaa !12
  br label %381

381:                                              ; preds = %1517, %380
  %382 = load i8, ptr %46, align 1, !tbaa !12, !range !14, !noundef !15
  %383 = trunc i8 %382 to i1
  br i1 %383, label %385, label %384

384:                                              ; preds = %381
  store i32 17, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #0
  br label %1518

385:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #0
  %386 = load ptr, ptr %45, align 8, !tbaa !5
  %387 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %386)
          to label %388 unwind label %394

388:                                              ; preds = %385
  store ptr %387, ptr %47, align 8, !tbaa !5
  br label %389

389:                                              ; preds = %1514, %388
  %390 = load ptr, ptr %47, align 8, !tbaa !5
  %391 = load i8, ptr %46, align 1, !tbaa !12, !range !14, !noundef !15
  %392 = trunc i8 %391 to i1
  br i1 %392, label %398, label %393

393:                                              ; preds = %389
  store i32 20, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #0
  br label %1516

394:                                              ; preds = %385
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %11, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %12, align 4
  br label %1515

398:                                              ; preds = %389
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #0
  store i8 1, ptr %48, align 1, !tbaa !12
  br label %399

399:                                              ; preds = %1512, %398
  %400 = load i8, ptr %48, align 1, !tbaa !12, !range !14, !noundef !15
  %401 = trunc i8 %400 to i1
  br i1 %401, label %403, label %402

402:                                              ; preds = %399
  store i32 23, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #0
  br label %1513

403:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #0
  %404 = load ptr, ptr %47, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %404, i32 0, i32 1
  store ptr %405, ptr %49, align 8, !tbaa !5
  br label %406

406:                                              ; preds = %1509, %403
  %407 = load i8, ptr %48, align 1, !tbaa !12, !range !14, !noundef !15
  %408 = trunc i8 %407 to i1
  br i1 %408, label %410, label %409

409:                                              ; preds = %406
  store i32 26, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #0
  br label %1511

410:                                              ; preds = %406
  %411 = load ptr, ptr %49, align 8, !tbaa !5
  %412 = invoke noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %411)
          to label %413 unwind label %414

413:                                              ; preds = %410
  switch i32 %412, label %1508 [
    i32 0, label %418
    i32 1, label %419
    i32 2, label %459
    i32 12, label %536
    i32 4, label %603
    i32 15, label %650
    i32 14, label %740
    i32 13, label %1096
    i32 11, label %1129
    i32 9, label %1219
    i32 8, label %1242
    i32 10, label %1265
    i32 7, label %1345
    i32 6, label %1368
    i32 3, label %1391
    i32 5, label %1429
  ]

414:                                              ; preds = %410
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %11, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %12, align 4
  br label %1510

418:                                              ; preds = %413
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 581, ptr noundef @__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

419:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #0
  store i8 1, ptr %50, align 1, !tbaa !12
  br label %420

420:                                              ; preds = %457, %419
  %421 = load i8, ptr %50, align 1, !tbaa !12, !range !14, !noundef !15
  %422 = trunc i8 %421 to i1
  br i1 %422, label %424, label %423

423:                                              ; preds = %420
  store i32 30, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #0
  br label %458

424:                                              ; preds = %420
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #0
  %425 = load ptr, ptr %49, align 8, !tbaa !5
  %426 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %425)
          to label %427 unwind label %433

427:                                              ; preds = %424
  store ptr %426, ptr %51, align 8, !tbaa !5
  br label %428

428:                                              ; preds = %445, %427
  %429 = load ptr, ptr %51, align 8, !tbaa !5
  %430 = load i8, ptr %50, align 1, !tbaa !12, !range !14, !noundef !15
  %431 = trunc i8 %430 to i1
  br i1 %431, label %437, label %432

432:                                              ; preds = %428
  store i32 33, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  br label %456

433:                                              ; preds = %424
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %11, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %12, align 4
  br label %455

437:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %438 unwind label %446

438:                                              ; preds = %437
  %439 = load ptr, ptr %47, align 8, !tbaa !5
  %440 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %439, i32 0, i32 0
  %441 = load ptr, ptr %51, align 8, !tbaa !5
  %442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(32) %441, i32 noundef 0)
          to label %443 unwind label %450

443:                                              ; preds = %438
  invoke void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(32) %440, ptr noundef nonnull align 8 dereferenceable(8) %442)
          to label %444 unwind label %450

444:                                              ; preds = %443
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  br label %445

445:                                              ; preds = %444
  store i8 0, ptr %50, align 1, !tbaa !12
  br label %428, !llvm.loop !16

446:                                              ; preds = %437
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %11, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %12, align 4
  br label %454

450:                                              ; preds = %443, %438
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %11, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #0
  br label %454

454:                                              ; preds = %450, %446
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  br label %455

455:                                              ; preds = %454, %433
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #0
  br label %1510

456:                                              ; preds = %432
  br label %457

457:                                              ; preds = %456
  store i8 0, ptr %50, align 1, !tbaa !12
  br label %420, !llvm.loop !18

458:                                              ; preds = %423
  br label %1508

459:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #0
  store i8 1, ptr %53, align 1, !tbaa !12
  br label %460

460:                                              ; preds = %534, %459
  %461 = load i8, ptr %53, align 1, !tbaa !12, !range !14, !noundef !15
  %462 = trunc i8 %461 to i1
  br i1 %462, label %464, label %463

463:                                              ; preds = %460
  store i32 36, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #0
  br label %535

464:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #0
  %465 = load ptr, ptr %49, align 8, !tbaa !5
  %466 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %465)
          to label %467 unwind label %473

467:                                              ; preds = %464
  store ptr %466, ptr %54, align 8, !tbaa !5
  br label %468

468:                                              ; preds = %502, %467
  %469 = load ptr, ptr %54, align 8, !tbaa !5
  %470 = load i8, ptr %53, align 1, !tbaa !12, !range !14, !noundef !15
  %471 = trunc i8 %470 to i1
  br i1 %471, label %477, label %472

472:                                              ; preds = %468
  store i32 39, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  br label %533

473:                                              ; preds = %464
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %11, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %12, align 4
  br label %532

477:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %478 unwind label %503

478:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #0
  %479 = load ptr, ptr %54, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %479, i32 0, i32 1
  %481 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(32) %480, i32 noundef 0)
          to label %482 unwind label %507

482:                                              ; preds = %478
  invoke void @_ZNK3HIR7TypeRef13clone_shallowEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) %481)
          to label %483 unwind label %507

483:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #0
  %484 = load ptr, ptr %54, align 8, !tbaa !5
  %485 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %484, i32 0, i32 0
  %486 = load i32, ptr %485, align 8, !tbaa !19
  %487 = load ptr, ptr %54, align 8, !tbaa !5
  %488 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %487, i32 0, i32 1
  %489 = invoke i32 @_ZN12_GLOBAL__N_111BorrowState13borrow_lvalueEmN3HIR10BorrowTypeERKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %23, i64 noundef 0, i32 noundef %486, ptr noundef nonnull align 8 dereferenceable(32) %488)
          to label %490 unwind label %511

490:                                              ; preds = %483
  %491 = getelementptr inbounds %"struct.HIR::LifetimeRef", ptr %57, i32 0, i32 0
  store i32 %489, ptr %491, align 4
  %492 = load ptr, ptr %47, align 8, !tbaa !5
  %493 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %492, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #0
  %494 = load ptr, ptr %54, align 8, !tbaa !5
  %495 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %494, i32 0, i32 0
  %496 = load i32, ptr %495, align 8, !tbaa !19
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %497 unwind label %515

497:                                              ; preds = %490
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %57, i64 4, i1 false), !tbaa.struct !29
  %498 = getelementptr inbounds %"struct.HIR::LifetimeRef", ptr %60, i32 0, i32 0
  %499 = load i32, ptr %498, align 4
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_NS_11LifetimeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %58, i32 noundef %496, ptr noundef %59, i32 %499)
          to label %500 unwind label %519

500:                                              ; preds = %497
  invoke void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(32) %493, ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %501 unwind label %523

501:                                              ; preds = %500
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #0
  br label %502

502:                                              ; preds = %501
  store i8 0, ptr %53, align 1, !tbaa !12
  br label %468, !llvm.loop !30

503:                                              ; preds = %477
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %11, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %12, align 4
  br label %531

507:                                              ; preds = %482, %478
  %508 = landingpad { ptr, i32 }
          cleanup
  %509 = extractvalue { ptr, i32 } %508, 0
  store ptr %509, ptr %11, align 8
  %510 = extractvalue { ptr, i32 } %508, 1
  store i32 %510, ptr %12, align 4
  br label %530

511:                                              ; preds = %483
  %512 = landingpad { ptr, i32 }
          cleanup
  %513 = extractvalue { ptr, i32 } %512, 0
  store ptr %513, ptr %11, align 8
  %514 = extractvalue { ptr, i32 } %512, 1
  store i32 %514, ptr %12, align 4
  br label %529

515:                                              ; preds = %490
  %516 = landingpad { ptr, i32 }
          cleanup
  %517 = extractvalue { ptr, i32 } %516, 0
  store ptr %517, ptr %11, align 8
  %518 = extractvalue { ptr, i32 } %516, 1
  store i32 %518, ptr %12, align 4
  br label %528

519:                                              ; preds = %497
  %520 = landingpad { ptr, i32 }
          cleanup
  %521 = extractvalue { ptr, i32 } %520, 0
  store ptr %521, ptr %11, align 8
  %522 = extractvalue { ptr, i32 } %520, 1
  store i32 %522, ptr %12, align 4
  br label %527

523:                                              ; preds = %500
  %524 = landingpad { ptr, i32 }
          cleanup
  %525 = extractvalue { ptr, i32 } %524, 0
  store ptr %525, ptr %11, align 8
  %526 = extractvalue { ptr, i32 } %524, 1
  store i32 %526, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #0
  br label %527

527:                                              ; preds = %523, %519
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #0
  br label %528

528:                                              ; preds = %527, %515
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #0
  br label %529

529:                                              ; preds = %528, %511
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #0
  br label %530

530:                                              ; preds = %529, %507
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #0
  br label %531

531:                                              ; preds = %530, %503
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #0
  br label %532

532:                                              ; preds = %531, %473
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #0
  br label %1510

533:                                              ; preds = %472
  br label %534

534:                                              ; preds = %533
  store i8 0, ptr %53, align 1, !tbaa !12
  br label %460, !llvm.loop !31

535:                                              ; preds = %463
  br label %1508

536:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #0
  store i8 1, ptr %61, align 1, !tbaa !12
  br label %537

537:                                              ; preds = %601, %536
  %538 = load i8, ptr %61, align 1, !tbaa !12, !range !14, !noundef !15
  %539 = trunc i8 %538 to i1
  br i1 %539, label %541, label %540

540:                                              ; preds = %537
  store i32 42, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #0
  br label %602

541:                                              ; preds = %537
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #0
  %542 = load ptr, ptr %49, align 8, !tbaa !5
  %543 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %542)
          to label %544 unwind label %550

544:                                              ; preds = %541
  store ptr %543, ptr %62, align 8, !tbaa !5
  br label %545

545:                                              ; preds = %596, %544
  %546 = load ptr, ptr %62, align 8, !tbaa !5
  %547 = load i8, ptr %61, align 1, !tbaa !12, !range !14, !noundef !15
  %548 = trunc i8 %547 to i1
  br i1 %548, label %554, label %549

549:                                              ; preds = %545
  store i32 45, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #0
  br label %600

550:                                              ; preds = %541
  %551 = landingpad { ptr, i32 }
          cleanup
  %552 = extractvalue { ptr, i32 } %551, 0
  store ptr %552, ptr %11, align 8
  %553 = extractvalue { ptr, i32 } %551, 1
  store i32 %553, ptr %12, align 4
  br label %599

554:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %555 unwind label %572

555:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #0
  %556 = load ptr, ptr %47, align 8, !tbaa !5
  %557 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %556, i32 0, i32 0
  %558 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(32) %557, i32 noundef 0)
          to label %559 unwind label %576

559:                                              ; preds = %555
  %560 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %558)
          to label %561 unwind label %576

561:                                              ; preds = %559
  %562 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %560)
          to label %563 unwind label %576

563:                                              ; preds = %561
  %564 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %562, i32 0, i32 0
  store ptr %564, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #0
  store i64 0, ptr %65, align 8, !tbaa !32
  br label %565

565:                                              ; preds = %588, %563
  %566 = load i64, ptr %65, align 8, !tbaa !32
  %567 = load ptr, ptr %62, align 8, !tbaa !5
  %568 = getelementptr inbounds %"struct.MIR::RValue::Data_Array", ptr %567, i32 0, i32 0
  %569 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %568) #0
  %570 = icmp ult i64 %566, %569
  br i1 %570, label %580, label %571

571:                                              ; preds = %565
  store i32 48, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #0
  br label %595

572:                                              ; preds = %554
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %11, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %12, align 4
  br label %598

576:                                              ; preds = %561, %559, %555
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %11, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %12, align 4
  br label %597

580:                                              ; preds = %565
  %581 = load ptr, ptr %64, align 8, !tbaa !5
  %582 = load ptr, ptr %62, align 8, !tbaa !5
  %583 = getelementptr inbounds %"struct.MIR::RValue::Data_Array", ptr %582, i32 0, i32 0
  %584 = load i64, ptr %65, align 8, !tbaa !32
  %585 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %583, i64 noundef %584) #0
  %586 = load i64, ptr %65, align 8, !tbaa !32
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(8) %581, ptr noundef nonnull align 8 dereferenceable(48) %585, i64 noundef %586)
          to label %587 unwind label %591

587:                                              ; preds = %580
  br label %588

588:                                              ; preds = %587
  %589 = load i64, ptr %65, align 8, !tbaa !32
  %590 = add i64 %589, 1
  store i64 %590, ptr %65, align 8, !tbaa !32
  br label %565, !llvm.loop !33

591:                                              ; preds = %580
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %11, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #0
  br label %597

595:                                              ; preds = %571
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #0
  br label %596

596:                                              ; preds = %595
  store i8 0, ptr %61, align 1, !tbaa !12
  br label %545, !llvm.loop !34

597:                                              ; preds = %591, %576
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #0
  br label %598

598:                                              ; preds = %597, %572
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #0
  br label %599

599:                                              ; preds = %598, %550
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #0
  br label %1510

600:                                              ; preds = %549
  br label %601

601:                                              ; preds = %600
  store i8 0, ptr %61, align 1, !tbaa !12
  br label %537, !llvm.loop !35

602:                                              ; preds = %540
  br label %1508

603:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #0
  store i8 1, ptr %66, align 1, !tbaa !12
  br label %604

604:                                              ; preds = %648, %603
  %605 = load i8, ptr %66, align 1, !tbaa !12, !range !14, !noundef !15
  %606 = trunc i8 %605 to i1
  br i1 %606, label %608, label %607

607:                                              ; preds = %604
  store i32 51, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #0
  br label %649

608:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #0
  %609 = load ptr, ptr %49, align 8, !tbaa !5
  %610 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %609)
          to label %611 unwind label %617

611:                                              ; preds = %608
  store ptr %610, ptr %67, align 8, !tbaa !5
  br label %612

612:                                              ; preds = %636, %611
  %613 = load ptr, ptr %67, align 8, !tbaa !5
  %614 = load i8, ptr %66, align 1, !tbaa !12, !range !14, !noundef !15
  %615 = trunc i8 %614 to i1
  br i1 %615, label %621, label %616

616:                                              ; preds = %612
  store i32 54, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  br label %647

617:                                              ; preds = %608
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %11, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %12, align 4
  br label %646

621:                                              ; preds = %612
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68)
          to label %622 unwind label %637

622:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #0
  %623 = load ptr, ptr %47, align 8, !tbaa !5
  %624 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %623, i32 0, i32 0
  %625 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(32) %624, i32 noundef 0)
          to label %626 unwind label %641

626:                                              ; preds = %622
  %627 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %625)
          to label %628 unwind label %641

628:                                              ; preds = %626
  %629 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %627)
          to label %630 unwind label %641

630:                                              ; preds = %628
  %631 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %629, i32 0, i32 0
  store ptr %631, ptr %69, align 8, !tbaa !5
  %632 = load ptr, ptr %69, align 8, !tbaa !5
  %633 = load ptr, ptr %67, align 8, !tbaa !5
  %634 = getelementptr inbounds %"struct.MIR::RValue::Data_SizedArray", ptr %633, i32 0, i32 0
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(8) %632, ptr noundef nonnull align 8 dereferenceable(48) %634, i64 noundef 0)
          to label %635 unwind label %641

635:                                              ; preds = %630
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #0
  br label %636

636:                                              ; preds = %635
  store i8 0, ptr %66, align 1, !tbaa !12
  br label %612, !llvm.loop !36

637:                                              ; preds = %621
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %11, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %12, align 4
  br label %645

641:                                              ; preds = %630, %628, %626, %622
  %642 = landingpad { ptr, i32 }
          cleanup
  %643 = extractvalue { ptr, i32 } %642, 0
  store ptr %643, ptr %11, align 8
  %644 = extractvalue { ptr, i32 } %642, 1
  store i32 %644, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #0
  br label %645

645:                                              ; preds = %641, %637
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #0
  br label %646

646:                                              ; preds = %645, %617
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #0
  br label %1510

647:                                              ; preds = %616
  br label %648

648:                                              ; preds = %647
  store i8 0, ptr %66, align 1, !tbaa !12
  br label %604, !llvm.loop !37

649:                                              ; preds = %607
  br label %1508

650:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #0
  store i8 1, ptr %70, align 1, !tbaa !12
  br label %651

651:                                              ; preds = %738, %650
  %652 = load i8, ptr %70, align 1, !tbaa !12, !range !14, !noundef !15
  %653 = trunc i8 %652 to i1
  br i1 %653, label %655, label %654

654:                                              ; preds = %651
  store i32 57, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #0
  br label %739

655:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #0
  %656 = load ptr, ptr %49, align 8, !tbaa !5
  %657 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %656)
          to label %658 unwind label %664

658:                                              ; preds = %655
  store ptr %657, ptr %71, align 8, !tbaa !5
  br label %659

659:                                              ; preds = %732, %658
  %660 = load ptr, ptr %71, align 8, !tbaa !5
  %661 = load i8, ptr %70, align 1, !tbaa !12, !range !14, !noundef !15
  %662 = trunc i8 %661 to i1
  br i1 %662, label %668, label %663

663:                                              ; preds = %659
  store i32 60, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #0
  br label %737

664:                                              ; preds = %655
  %665 = landingpad { ptr, i32 }
          cleanup
  %666 = extractvalue { ptr, i32 } %665, 0
  store ptr %666, ptr %11, align 8
  %667 = extractvalue { ptr, i32 } %665, 1
  store i32 %667, ptr %12, align 4
  br label %736

668:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #0
  %669 = load ptr, ptr %6, align 8, !tbaa !5
  %670 = getelementptr inbounds i8, ptr %669, i64 8
  %671 = getelementptr inbounds %struct.TraitResolveCommon, ptr %670, i32 0, i32 0
  %672 = load ptr, ptr %671, align 8, !tbaa !38
  %673 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %16, i32 0, i32 1
  %674 = load ptr, ptr %673, align 8, !tbaa !56
  %675 = load ptr, ptr %71, align 8, !tbaa !5
  %676 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %675, i32 0, i32 0
  %677 = getelementptr inbounds %"class.HIR::GenericPath", ptr %676, i32 0, i32 0
  %678 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %672, ptr noundef nonnull align 8 dereferenceable(8) %674, ptr noundef nonnull align 8 dereferenceable(8) %677)
          to label %679 unwind label %702

679:                                              ; preds = %668
  store ptr %678, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 128, ptr %73) #0
  %680 = load ptr, ptr %71, align 8, !tbaa !5
  %681 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %680, i32 0, i32 0
  %682 = getelementptr inbounds %"class.HIR::GenericPath", ptr %681, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %73, ptr noundef null, ptr noundef %682, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %683 unwind label %706

683:                                              ; preds = %679
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %684 unwind label %710

684:                                              ; preds = %683
  call void @llvm.lifetime.start.p0(i64 24, ptr %75) #0
  %685 = getelementptr inbounds %class.anon.348, ptr %75, i32 0, i32 0
  %686 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %686, ptr %685, align 8, !tbaa !5
  %687 = getelementptr inbounds %class.anon.348, ptr %75, i32 0, i32 1
  store ptr %74, ptr %687, align 8, !tbaa !5
  %688 = getelementptr inbounds %class.anon.348, ptr %75, i32 0, i32 2
  store ptr %73, ptr %688, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #0
  %689 = getelementptr inbounds %class.anon.349, ptr %76, i32 0, i32 0
  %690 = load ptr, ptr %72, align 8, !tbaa !5
  store ptr %690, ptr %689, align 8, !tbaa !5
  %691 = getelementptr inbounds %class.anon.349, ptr %76, i32 0, i32 1
  store ptr %16, ptr %691, align 8, !tbaa !5
  %692 = getelementptr inbounds %class.anon.349, ptr %76, i32 0, i32 2
  %693 = load ptr, ptr %71, align 8, !tbaa !5
  store ptr %693, ptr %692, align 8, !tbaa !5
  %694 = getelementptr inbounds %class.anon.349, ptr %76, i32 0, i32 3
  store ptr %75, ptr %694, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #0
  store i64 0, ptr %77, align 8, !tbaa !32
  br label %695

695:                                              ; preds = %724, %684
  %696 = load i64, ptr %77, align 8, !tbaa !32
  %697 = load ptr, ptr %71, align 8, !tbaa !5
  %698 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %697, i32 0, i32 1
  %699 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %698) #0
  %700 = icmp ult i64 %696, %699
  br i1 %700, label %714, label %701

701:                                              ; preds = %695
  store i32 63, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  br label %731

702:                                              ; preds = %668
  %703 = landingpad { ptr, i32 }
          cleanup
  %704 = extractvalue { ptr, i32 } %703, 0
  store ptr %704, ptr %11, align 8
  %705 = extractvalue { ptr, i32 } %703, 1
  store i32 %705, ptr %12, align 4
  br label %735

706:                                              ; preds = %679
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %11, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %12, align 4
  br label %734

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

714:                                              ; preds = %695
  %715 = load i64, ptr %77, align 8, !tbaa !32
  %716 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK3$_7clEm"(ptr noundef nonnull align 8 dereferenceable(32) %76, i64 noundef %715)
          to label %717 unwind label %727

717:                                              ; preds = %714
  %718 = load ptr, ptr %71, align 8, !tbaa !5
  %719 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %718, i32 0, i32 1
  %720 = load i64, ptr %77, align 8, !tbaa !32
  %721 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %719, i64 noundef %720) #0
  %722 = load i64, ptr %77, align 8, !tbaa !32
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(8) %716, ptr noundef nonnull align 8 dereferenceable(48) %721, i64 noundef %722)
          to label %723 unwind label %727

723:                                              ; preds = %717
  br label %724

724:                                              ; preds = %723
  %725 = load i64, ptr %77, align 8, !tbaa !32
  %726 = add i64 %725, 1
  store i64 %726, ptr %77, align 8, !tbaa !32
  br label %695, !llvm.loop !61

727:                                              ; preds = %717, %714
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %11, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #0
  br label %733

731:                                              ; preds = %701
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %73) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %73) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #0
  br label %732

732:                                              ; preds = %731
  store i8 0, ptr %70, align 1, !tbaa !12
  br label %659, !llvm.loop !62

733:                                              ; preds = %727, %710
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %73) #0
  br label %734

734:                                              ; preds = %733, %706
  call void @llvm.lifetime.end.p0(i64 128, ptr %73) #0
  br label %735

735:                                              ; preds = %734, %702
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #0
  br label %736

736:                                              ; preds = %735, %664
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #0
  br label %1510

737:                                              ; preds = %663
  br label %738

738:                                              ; preds = %737
  store i8 0, ptr %70, align 1, !tbaa !12
  br label %651, !llvm.loop !63

739:                                              ; preds = %654
  br label %1508

740:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #0
  store i8 1, ptr %78, align 1, !tbaa !12
  br label %741

741:                                              ; preds = %1094, %740
  %742 = load i8, ptr %78, align 1, !tbaa !12, !range !14, !noundef !15
  %743 = trunc i8 %742 to i1
  br i1 %743, label %745, label %744

744:                                              ; preds = %741
  store i32 66, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #0
  br label %1095

745:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #0
  %746 = load ptr, ptr %49, align 8, !tbaa !5
  %747 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %746)
          to label %748 unwind label %754

748:                                              ; preds = %745
  store ptr %747, ptr %79, align 8, !tbaa !5
  br label %749

749:                                              ; preds = %1087, %748
  %750 = load ptr, ptr %79, align 8, !tbaa !5
  %751 = load i8, ptr %78, align 1, !tbaa !12, !range !14, !noundef !15
  %752 = trunc i8 %751 to i1
  br i1 %752, label %758, label %753

753:                                              ; preds = %749
  store i32 69, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #0
  br label %1093

754:                                              ; preds = %745
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %11, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %12, align 4
  br label %1092

758:                                              ; preds = %749
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #0
  %759 = load ptr, ptr %6, align 8, !tbaa !5
  %760 = getelementptr inbounds i8, ptr %759, i64 8
  %761 = getelementptr inbounds %struct.TraitResolveCommon, ptr %760, i32 0, i32 0
  %762 = load ptr, ptr %761, align 8, !tbaa !38
  %763 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %16, i32 0, i32 1
  %764 = load ptr, ptr %763, align 8, !tbaa !56
  %765 = load ptr, ptr %79, align 8, !tbaa !5
  %766 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %765, i32 0, i32 0
  %767 = getelementptr inbounds %"class.HIR::GenericPath", ptr %766, i32 0, i32 0
  %768 = invoke noundef nonnull align 8 dereferenceable(200) ptr @_ZNK3HIR5Crate16get_enum_by_pathERK4SpanRKNS_10SimplePathEbb(ptr noundef nonnull align 8 dereferenceable(944) %762, ptr noundef nonnull align 8 dereferenceable(8) %764, ptr noundef nonnull align 8 dereferenceable(8) %767, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %769 unwind label %787

769:                                              ; preds = %758
  store ptr %768, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 128, ptr %81) #0
  %770 = load ptr, ptr %79, align 8, !tbaa !5
  %771 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %770, i32 0, i32 0
  %772 = getelementptr inbounds %"class.HIR::GenericPath", ptr %771, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %81, ptr noundef null, ptr noundef %772, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %773 unwind label %791

773:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82)
          to label %774 unwind label %795

774:                                              ; preds = %773
  %775 = load ptr, ptr %79, align 8, !tbaa !5
  %776 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %775, i32 0, i32 2
  %777 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %776) #0
  %778 = icmp ugt i64 %777, 0
  br i1 %778, label %779, label %1086

779:                                              ; preds = %774
  br label %780

780:                                              ; preds = %779
  %781 = load ptr, ptr %80, align 8, !tbaa !5
  %782 = getelementptr inbounds %"class.HIR::Enum", ptr %781, i32 0, i32 3
  %783 = invoke noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %782)
          to label %784 unwind label %799

784:                                              ; preds = %780
  br i1 %783, label %807, label %785

785:                                              ; preds = %784
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 1 dereferenceable(1) %84) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef %83)
          to label %786 unwind label %803

786:                                              ; preds = %785
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #0
  br label %807

787:                                              ; preds = %758
  %788 = landingpad { ptr, i32 }
          cleanup
  %789 = extractvalue { ptr, i32 } %788, 0
  store ptr %789, ptr %11, align 8
  %790 = extractvalue { ptr, i32 } %788, 1
  store i32 %790, ptr %12, align 4
  br label %1091

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

795:                                              ; preds = %773
  %796 = landingpad { ptr, i32 }
          cleanup
  %797 = extractvalue { ptr, i32 } %796, 0
  store ptr %797, ptr %11, align 8
  %798 = extractvalue { ptr, i32 } %796, 1
  store i32 %798, ptr %12, align 4
  br label %1089

799:                                              ; preds = %780
  %800 = landingpad { ptr, i32 }
          cleanup
  %801 = extractvalue { ptr, i32 } %800, 0
  store ptr %801, ptr %11, align 8
  %802 = extractvalue { ptr, i32 } %800, 1
  store i32 %802, ptr %12, align 4
  br label %1088

803:                                              ; preds = %785
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %11, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #0
  br label %1088

807:                                              ; preds = %786, %784
  br label %808

808:                                              ; preds = %807
  br label %809

809:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #0
  %810 = load ptr, ptr %80, align 8, !tbaa !5
  %811 = getelementptr inbounds %"class.HIR::Enum", ptr %810, i32 0, i32 3
  %812 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %811)
          to label %813 unwind label %826

813:                                              ; preds = %809
  store ptr %812, ptr %85, align 8, !tbaa !5
  br label %814

814:                                              ; preds = %813
  %815 = load ptr, ptr %79, align 8, !tbaa !5
  %816 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %815, i32 0, i32 1
  %817 = load i32, ptr %816, align 8, !tbaa !64
  %818 = zext i32 %817 to i64
  %819 = load ptr, ptr %85, align 8, !tbaa !5
  %820 = call noundef i64 @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %819) #0
  %821 = icmp ult i64 %818, %820
  br i1 %821, label %834, label %822

822:                                              ; preds = %814
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #0
  %823 = getelementptr inbounds %class.anon.362, ptr %87, i32 0, i32 0
  %824 = load ptr, ptr %79, align 8, !tbaa !5
  store ptr %824, ptr %823, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %86, ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef %86)
          to label %825 unwind label %830

825:                                              ; preds = %822
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  br label %834

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

830:                                              ; preds = %822
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %11, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %86) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  br label %1085

834:                                              ; preds = %825, %814
  br label %835

835:                                              ; preds = %834
  br label %836

836:                                              ; preds = %835
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #0
  %837 = load ptr, ptr %85, align 8, !tbaa !5
  %838 = load ptr, ptr %79, align 8, !tbaa !5
  %839 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %838, i32 0, i32 1
  %840 = load i32, ptr %839, align 8, !tbaa !64
  %841 = zext i32 %840 to i64
  %842 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %837, i64 noundef %841) #0
  store ptr %842, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #0
  %843 = load ptr, ptr %6, align 8, !tbaa !5
  %844 = load ptr, ptr %88, align 8, !tbaa !5
  %845 = getelementptr inbounds %"struct.HIR::Enum::DataVariant", ptr %844, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 128, ptr %90) #0
  %846 = load ptr, ptr %79, align 8, !tbaa !5
  %847 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %846, i32 0, i32 0
  %848 = getelementptr inbounds %"class.HIR::GenericPath", ptr %847, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %90, ptr noundef null, ptr noundef %848, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %849 unwind label %879

849:                                              ; preds = %836
  %850 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK18StaticTraitResolve20monomorph_expand_optERK4SpanRN3HIR7TypeRefERKS4_RK13Monomorphiser(ptr noundef nonnull align 8 dereferenceable(424) %843, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp, ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %845, ptr noundef nonnull align 8 dereferenceable(96) %90)
          to label %851 unwind label %883

851:                                              ; preds = %849
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %90) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %90) #0
  store ptr %850, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #0
  %852 = load ptr, ptr %89, align 8, !tbaa !5
  %853 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %852)
          to label %854 unwind label %888

854:                                              ; preds = %851
  %855 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %853)
          to label %856 unwind label %888

856:                                              ; preds = %854
  %857 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %855, i32 0, i32 1
  %858 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %857)
          to label %859 unwind label %888

859:                                              ; preds = %856
  %860 = load ptr, ptr %858, align 8, !tbaa !5
  store ptr %860, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #0
  %861 = load ptr, ptr %89, align 8, !tbaa !5
  %862 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %861)
          to label %863 unwind label %892

863:                                              ; preds = %859
  %864 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %862)
          to label %865 unwind label %892

865:                                              ; preds = %863
  %866 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %864, i32 0, i32 0
  %867 = getelementptr inbounds %"class.HIR::Path", ptr %866, i32 0, i32 0
  %868 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %867)
          to label %869 unwind label %892

869:                                              ; preds = %865
  store ptr %868, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %93) #0
  %870 = getelementptr inbounds %class.anon.363, ptr %93, i32 0, i32 0
  %871 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %871, ptr %870, align 8, !tbaa !5
  %872 = getelementptr inbounds %class.anon.363, ptr %93, i32 0, i32 1
  store ptr %82, ptr %872, align 8, !tbaa !5
  %873 = getelementptr inbounds %class.anon.363, ptr %93, i32 0, i32 2
  %874 = load ptr, ptr %92, align 8, !tbaa !5
  store ptr %874, ptr %873, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #0
  store i8 1, ptr %94, align 1, !tbaa !12
  br label %875

875:                                              ; preds = %1080, %869
  %876 = load i8, ptr %94, align 1, !tbaa !12, !range !14, !noundef !15
  %877 = trunc i8 %876 to i1
  br i1 %877, label %896, label %878

878:                                              ; preds = %875
  store i32 76, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #0
  br label %1081

879:                                              ; preds = %836
  %880 = landingpad { ptr, i32 }
          cleanup
  %881 = extractvalue { ptr, i32 } %880, 0
  store ptr %881, ptr %11, align 8
  %882 = extractvalue { ptr, i32 } %880, 1
  store i32 %882, ptr %12, align 4
  br label %887

883:                                              ; preds = %849
  %884 = landingpad { ptr, i32 }
          cleanup
  %885 = extractvalue { ptr, i32 } %884, 0
  store ptr %885, ptr %11, align 8
  %886 = extractvalue { ptr, i32 } %884, 1
  store i32 %886, ptr %12, align 4
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %90) #0
  br label %887

887:                                              ; preds = %883, %879
  call void @llvm.lifetime.end.p0(i64 128, ptr %90) #0
  br label %1084

888:                                              ; preds = %856, %854, %851
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %11, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %12, align 4
  br label %1083

892:                                              ; preds = %865, %863, %859
  %893 = landingpad { ptr, i32 }
          cleanup
  %894 = extractvalue { ptr, i32 } %893, 0
  store ptr %894, ptr %11, align 8
  %895 = extractvalue { ptr, i32 } %893, 1
  store i32 %895, ptr %12, align 4
  br label %1082

896:                                              ; preds = %875
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #0
  %897 = load ptr, ptr %91, align 8, !tbaa !5
  %898 = getelementptr inbounds %"class.HIR::Struct", ptr %897, i32 0, i32 3
  store ptr %898, ptr %95, align 8, !tbaa !5
  br label %899

899:                                              ; preds = %1077, %896
  %900 = load i8, ptr %94, align 1, !tbaa !12, !range !14, !noundef !15
  %901 = trunc i8 %900 to i1
  br i1 %901, label %903, label %902

902:                                              ; preds = %899
  store i32 79, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #0
  br label %1079

903:                                              ; preds = %899
  %904 = load ptr, ptr %95, align 8, !tbaa !5
  %905 = invoke noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %904)
          to label %906 unwind label %907

906:                                              ; preds = %903
  switch i32 %905, label %1076 [
    i32 0, label %911
    i32 1, label %912
    i32 2, label %935
    i32 3, label %1005
  ]

907:                                              ; preds = %903
  %908 = landingpad { ptr, i32 }
          cleanup
  %909 = extractvalue { ptr, i32 } %908, 0
  store ptr %909, ptr %11, align 8
  %910 = extractvalue { ptr, i32 } %908, 1
  store i32 %910, ptr %12, align 4
  br label %1078

911:                                              ; preds = %906
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 651, ptr noundef @__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

912:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 1, ptr %96) #0
  store i8 1, ptr %96, align 1, !tbaa !12
  br label %913

913:                                              ; preds = %933, %912
  %914 = load i8, ptr %96, align 1, !tbaa !12, !range !14, !noundef !15
  %915 = trunc i8 %914 to i1
  br i1 %915, label %917, label %916

916:                                              ; preds = %913
  store i32 83, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #0
  br label %934

917:                                              ; preds = %913
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #0
  %918 = load ptr, ptr %95, align 8, !tbaa !5
  %919 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %918)
          to label %920 unwind label %926

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

921:                                              ; preds = %931, %920
  %922 = load ptr, ptr %97, align 8, !tbaa !5
  %923 = load i8, ptr %96, align 1, !tbaa !12, !range !14, !noundef !15
  %924 = trunc i8 %923 to i1
  br i1 %924, label %930, label %925

925:                                              ; preds = %921
  store i32 86, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #0
  br label %932

926:                                              ; preds = %917
  %927 = landingpad { ptr, i32 }
          cleanup
  %928 = extractvalue { ptr, i32 } %927, 0
  store ptr %928, ptr %11, align 8
  %929 = extractvalue { ptr, i32 } %927, 1
  store i32 %929, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #0
  br label %1078

930:                                              ; preds = %921
  br label %931

931:                                              ; preds = %930
  store i8 0, ptr %96, align 1, !tbaa !12
  br label %921, !llvm.loop !75

932:                                              ; preds = %925
  br label %933

933:                                              ; preds = %932
  store i8 0, ptr %96, align 1, !tbaa !12
  br label %913, !llvm.loop !76

934:                                              ; preds = %916
  br label %1076

935:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #0
  store i8 1, ptr %98, align 1, !tbaa !12
  br label %936

936:                                              ; preds = %1003, %935
  %937 = load i8, ptr %98, align 1, !tbaa !12, !range !14, !noundef !15
  %938 = trunc i8 %937 to i1
  br i1 %938, label %940, label %939

939:                                              ; preds = %936
  store i32 89, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #0
  br label %1004

940:                                              ; preds = %936
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #0
  %941 = load ptr, ptr %95, align 8, !tbaa !5
  %942 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %941)
          to label %943 unwind label %949

943:                                              ; preds = %940
  store ptr %942, ptr %99, align 8, !tbaa !5
  br label %944

944:                                              ; preds = %1000, %943
  %945 = load ptr, ptr %99, align 8, !tbaa !5
  %946 = load i8, ptr %98, align 1, !tbaa !12, !range !14, !noundef !15
  %947 = trunc i8 %946 to i1
  br i1 %947, label %953, label %948

948:                                              ; preds = %944
  store i32 92, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  br label %1002

949:                                              ; preds = %940
  %950 = landingpad { ptr, i32 }
          cleanup
  %951 = extractvalue { ptr, i32 } %950, 0
  store ptr %951, ptr %11, align 8
  %952 = extractvalue { ptr, i32 } %950, 1
  store i32 %952, ptr %12, align 4
  br label %1001

953:                                              ; preds = %944
  br label %954

954:                                              ; preds = %953
  %955 = load ptr, ptr %99, align 8, !tbaa !5
  %956 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %955) #0
  %957 = load ptr, ptr %79, align 8, !tbaa !5
  %958 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %957, i32 0, i32 2
  %959 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %958) #0
  %960 = icmp eq i64 %956, %959
  br i1 %960, label %969, label %961

961:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #0
  %962 = getelementptr inbounds %class.anon.364, ptr %101, i32 0, i32 0
  %963 = load ptr, ptr %79, align 8, !tbaa !5
  store ptr %963, ptr %962, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(8) %101) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef %100)
          to label %964 unwind label %965

964:                                              ; preds = %961
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #0
  br label %969

965:                                              ; preds = %961
  %966 = landingpad { ptr, i32 }
          cleanup
  %967 = extractvalue { ptr, i32 } %966, 0
  store ptr %967, ptr %11, align 8
  %968 = extractvalue { ptr, i32 } %966, 1
  store i32 %968, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #0
  br label %1001

969:                                              ; preds = %964, %954
  br label %970

970:                                              ; preds = %969
  br label %971

971:                                              ; preds = %970
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #0
  store i64 0, ptr %102, align 8, !tbaa !32
  br label %972

972:                                              ; preds = %992, %971
  %973 = load i64, ptr %102, align 8, !tbaa !32
  %974 = load ptr, ptr %79, align 8, !tbaa !5
  %975 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %974, i32 0, i32 2
  %976 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %975) #0
  %977 = icmp ult i64 %973, %976
  br i1 %977, label %979, label %978

978:                                              ; preds = %972
  store i32 97, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #0
  br label %999

979:                                              ; preds = %972
  %980 = load ptr, ptr %99, align 8, !tbaa !5
  %981 = load i64, ptr %102, align 8, !tbaa !32
  %982 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %980, i64 noundef %981) #0
  %983 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %982, i32 0, i32 1
  %984 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_17clESJ_"(ptr noundef nonnull align 8 dereferenceable(24) %93, ptr noundef nonnull align 8 dereferenceable(8) %983)
          to label %985 unwind label %995

985:                                              ; preds = %979
  %986 = load ptr, ptr %79, align 8, !tbaa !5
  %987 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %986, i32 0, i32 2
  %988 = load i64, ptr %102, align 8, !tbaa !32
  %989 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %987, i64 noundef %988) #0
  %990 = load i64, ptr %102, align 8, !tbaa !32
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(8) %984, ptr noundef nonnull align 8 dereferenceable(48) %989, i64 noundef %990)
          to label %991 unwind label %995

991:                                              ; preds = %985
  br label %992

992:                                              ; preds = %991
  %993 = load i64, ptr %102, align 8, !tbaa !32
  %994 = add i64 %993, 1
  store i64 %994, ptr %102, align 8, !tbaa !32
  br label %972, !llvm.loop !77

995:                                              ; preds = %985, %979
  %996 = landingpad { ptr, i32 }
          cleanup
  %997 = extractvalue { ptr, i32 } %996, 0
  store ptr %997, ptr %11, align 8
  %998 = extractvalue { ptr, i32 } %996, 1
  store i32 %998, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #0
  br label %1001

999:                                              ; preds = %978
  br label %1000

1000:                                             ; preds = %999
  store i8 0, ptr %98, align 1, !tbaa !12
  br label %944, !llvm.loop !78

1001:                                             ; preds = %995, %965, %949
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #0
  br label %1078

1002:                                             ; preds = %948
  br label %1003

1003:                                             ; preds = %1002
  store i8 0, ptr %98, align 1, !tbaa !12
  br label %936, !llvm.loop !79

1004:                                             ; preds = %939
  br label %1076

1005:                                             ; preds = %906
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #0
  store i8 1, ptr %103, align 1, !tbaa !12
  br label %1006

1006:                                             ; preds = %1074, %1005
  %1007 = load i8, ptr %103, align 1, !tbaa !12, !range !14, !noundef !15
  %1008 = trunc i8 %1007 to i1
  br i1 %1008, label %1010, label %1009

1009:                                             ; preds = %1006
  store i32 100, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #0
  br label %1075

1010:                                             ; preds = %1006
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #0
  %1011 = load ptr, ptr %95, align 8, !tbaa !5
  %1012 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %1011)
          to label %1013 unwind label %1019

1013:                                             ; preds = %1010
  store ptr %1012, ptr %104, align 8, !tbaa !5
  br label %1014

1014:                                             ; preds = %1071, %1013
  %1015 = load ptr, ptr %104, align 8, !tbaa !5
  %1016 = load i8, ptr %103, align 1, !tbaa !12, !range !14, !noundef !15
  %1017 = trunc i8 %1016 to i1
  br i1 %1017, label %1023, label %1018

1018:                                             ; preds = %1014
  store i32 103, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  br label %1073

1019:                                             ; preds = %1010
  %1020 = landingpad { ptr, i32 }
          cleanup
  %1021 = extractvalue { ptr, i32 } %1020, 0
  store ptr %1021, ptr %11, align 8
  %1022 = extractvalue { ptr, i32 } %1020, 1
  store i32 %1022, ptr %12, align 4
  br label %1072

1023:                                             ; preds = %1014
  br label %1024

1024:                                             ; preds = %1023
  %1025 = load ptr, ptr %104, align 8, !tbaa !5
  %1026 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1025) #0
  %1027 = load ptr, ptr %79, align 8, !tbaa !5
  %1028 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %1027, i32 0, i32 2
  %1029 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1028) #0
  %1030 = icmp eq i64 %1026, %1029
  br i1 %1030, label %1039, label %1031

1031:                                             ; preds = %1024
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #0
  %1032 = getelementptr inbounds %class.anon.368, ptr %106, i32 0, i32 0
  %1033 = load ptr, ptr %79, align 8, !tbaa !5
  store ptr %1033, ptr %1032, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(8) %106) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef %105)
          to label %1034 unwind label %1035

1034:                                             ; preds = %1031
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #0
  br label %1039

1035:                                             ; preds = %1031
  %1036 = landingpad { ptr, i32 }
          cleanup
  %1037 = extractvalue { ptr, i32 } %1036, 0
  store ptr %1037, ptr %11, align 8
  %1038 = extractvalue { ptr, i32 } %1036, 1
  store i32 %1038, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #0
  br label %1072

1039:                                             ; preds = %1034, %1024
  br label %1040

1040:                                             ; preds = %1039
  br label %1041

1041:                                             ; preds = %1040
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #0
  store i64 0, ptr %107, align 8, !tbaa !32
  br label %1042

1042:                                             ; preds = %1063, %1041
  %1043 = load i64, ptr %107, align 8, !tbaa !32
  %1044 = load ptr, ptr %79, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %1044, i32 0, i32 2
  %1046 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1045) #0
  %1047 = icmp ult i64 %1043, %1046
  br i1 %1047, label %1049, label %1048

1048:                                             ; preds = %1042
  store i32 108, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #0
  br label %1070

1049:                                             ; preds = %1042
  %1050 = load ptr, ptr %104, align 8, !tbaa !5
  %1051 = load i64, ptr %107, align 8, !tbaa !32
  %1052 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1050, i64 noundef %1051) #0
  %1053 = getelementptr inbounds %"struct.std::pair", ptr %1052, i32 0, i32 1
  %1054 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %1053, i32 0, i32 1
  %1055 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_17clESJ_"(ptr noundef nonnull align 8 dereferenceable(24) %93, ptr noundef nonnull align 8 dereferenceable(8) %1054)
          to label %1056 unwind label %1066

1056:                                             ; preds = %1049
  %1057 = load ptr, ptr %79, align 8, !tbaa !5
  %1058 = getelementptr inbounds %"struct.MIR::RValue::Data_EnumVariant", ptr %1057, i32 0, i32 2
  %1059 = load i64, ptr %107, align 8, !tbaa !32
  %1060 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1058, i64 noundef %1059) #0
  %1061 = load i64, ptr %107, align 8, !tbaa !32
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(8) %1055, ptr noundef nonnull align 8 dereferenceable(48) %1060, i64 noundef %1061)
          to label %1062 unwind label %1066

1062:                                             ; preds = %1056
  br label %1063

1063:                                             ; preds = %1062
  %1064 = load i64, ptr %107, align 8, !tbaa !32
  %1065 = add i64 %1064, 1
  store i64 %1065, ptr %107, align 8, !tbaa !32
  br label %1042, !llvm.loop !80

1066:                                             ; preds = %1056, %1049
  %1067 = landingpad { ptr, i32 }
          cleanup
  %1068 = extractvalue { ptr, i32 } %1067, 0
  store ptr %1068, ptr %11, align 8
  %1069 = extractvalue { ptr, i32 } %1067, 1
  store i32 %1069, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #0
  br label %1072

1070:                                             ; preds = %1048
  br label %1071

1071:                                             ; preds = %1070
  store i8 0, ptr %103, align 1, !tbaa !12
  br label %1014, !llvm.loop !81

1072:                                             ; preds = %1066, %1035, %1019
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #0
  br label %1078

1073:                                             ; preds = %1018
  br label %1074

1074:                                             ; preds = %1073
  store i8 0, ptr %103, align 1, !tbaa !12
  br label %1006, !llvm.loop !82

1075:                                             ; preds = %1009
  br label %1076

1076:                                             ; preds = %1075, %1004, %934, %906
  br label %1077

1077:                                             ; preds = %1076
  store i8 0, ptr %94, align 1, !tbaa !12
  br label %899, !llvm.loop !83

1078:                                             ; preds = %1072, %1001, %926, %907
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %93) #0
  br label %1082

1079:                                             ; preds = %902
  br label %1080

1080:                                             ; preds = %1079
  store i8 0, ptr %94, align 1, !tbaa !12
  br label %875, !llvm.loop !84

1081:                                             ; preds = %878
  call void @llvm.lifetime.end.p0(i64 24, ptr %93) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  br label %1086

1082:                                             ; preds = %1078, %892
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  br label %1083

1083:                                             ; preds = %1082, %888
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #0
  br label %1084

1084:                                             ; preds = %1083, %887
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #0
  br label %1085

1085:                                             ; preds = %1084, %830, %826
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  br label %1088

1086:                                             ; preds = %1081, %774
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %81) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %81) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #0
  br label %1087

1087:                                             ; preds = %1086
  store i8 0, ptr %78, align 1, !tbaa !12
  br label %749, !llvm.loop !85

1088:                                             ; preds = %1085, %803, %799
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #0
  br label %1089

1089:                                             ; preds = %1088, %795
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %81) #0
  br label %1090

1090:                                             ; preds = %1089, %791
  call void @llvm.lifetime.end.p0(i64 128, ptr %81) #0
  br label %1091

1091:                                             ; preds = %1090, %787
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #0
  br label %1092

1092:                                             ; preds = %1091, %754
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #0
  br label %1510

1093:                                             ; preds = %753
  br label %1094

1094:                                             ; preds = %1093
  store i8 0, ptr %78, align 1, !tbaa !12
  br label %741, !llvm.loop !86

1095:                                             ; preds = %744
  br label %1508

1096:                                             ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #0
  store i8 1, ptr %108, align 1, !tbaa !12
  br label %1097

1097:                                             ; preds = %1127, %1096
  %1098 = load i8, ptr %108, align 1, !tbaa !12, !range !14, !noundef !15
  %1099 = trunc i8 %1098 to i1
  br i1 %1099, label %1101, label %1100

1100:                                             ; preds = %1097
  store i32 111, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #0
  br label %1128

1101:                                             ; preds = %1097
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #0
  %1102 = load ptr, ptr %49, align 8, !tbaa !5
  %1103 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %1102)
          to label %1104 unwind label %1110

1104:                                             ; preds = %1101
  store ptr %1103, ptr %109, align 8, !tbaa !5
  br label %1105

1105:                                             ; preds = %1124, %1104
  %1106 = load ptr, ptr %109, align 8, !tbaa !5
  %1107 = load i8, ptr %108, align 1, !tbaa !12, !range !14, !noundef !15
  %1108 = trunc i8 %1107 to i1
  br i1 %1108, label %1114, label %1109

1109:                                             ; preds = %1105
  store i32 114, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #0
  br label %1126

1110:                                             ; preds = %1116, %1101
  %1111 = landingpad { ptr, i32 }
          cleanup
  %1112 = extractvalue { ptr, i32 } %1111, 0
  store ptr %1112, ptr %11, align 8
  %1113 = extractvalue { ptr, i32 } %1111, 1
  store i32 %1113, ptr %12, align 4
  br label %1125

1114:                                             ; preds = %1105
  br label %1115

1115:                                             ; preds = %1114
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 1 dereferenceable(1) %111) #0
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef %110)
          to label %1116 unwind label %1118

1116:                                             ; preds = %1115
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #0
  %1117 = call ptr @__cxa_allocate_exception(i64 8) #0
  store ptr @.str.2, ptr %1117, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1117, ptr @_ZTIPKc, ptr null) #11
          to label %2076 unwind label %1110

1118:                                             ; preds = %1115
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %11, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #0
  br label %1125

1122:                                             ; No predecessors!
  br label %1123

1123:                                             ; preds = %1122
  br label %1124

1124:                                             ; preds = %1123
  store i8 0, ptr %108, align 1, !tbaa !12
  br label %1105, !llvm.loop !87

1125:                                             ; preds = %1118, %1110
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #0
  br label %1510

1126:                                             ; preds = %1109
  br label %1127

1127:                                             ; preds = %1126
  store i8 0, ptr %108, align 1, !tbaa !12
  br label %1097, !llvm.loop !88

1128:                                             ; preds = %1100
  br label %1508

1129:                                             ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %112) #0
  store i8 1, ptr %112, align 1, !tbaa !12
  br label %1130

1130:                                             ; preds = %1217, %1129
  %1131 = load i8, ptr %112, align 1, !tbaa !12, !range !14, !noundef !15
  %1132 = trunc i8 %1131 to i1
  br i1 %1132, label %1134, label %1133

1133:                                             ; preds = %1130
  store i32 119, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #0
  br label %1218

1134:                                             ; preds = %1130
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #0
  %1135 = load ptr, ptr %49, align 8, !tbaa !5
  %1136 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %1135)
          to label %1137 unwind label %1143

1137:                                             ; preds = %1134
  store ptr %1136, ptr %113, align 8, !tbaa !5
  br label %1138

1138:                                             ; preds = %1211, %1137
  %1139 = load ptr, ptr %113, align 8, !tbaa !5
  %1140 = load i8, ptr %112, align 1, !tbaa !12, !range !14, !noundef !15
  %1141 = trunc i8 %1140 to i1
  br i1 %1141, label %1147, label %1142

1142:                                             ; preds = %1138
  store i32 122, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #0
  br label %1216

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

1147:                                             ; preds = %1138
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %1148 unwind label %1167

1148:                                             ; preds = %1147
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #0
  %1149 = load ptr, ptr %47, align 8, !tbaa !5
  %1150 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1149, i32 0, i32 0
  %1151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(32) %1150, i32 noundef 0)
          to label %1152 unwind label %1171

1152:                                             ; preds = %1148
  store ptr %1151, ptr %115, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #0
  %1153 = load ptr, ptr %115, align 8, !tbaa !5
  %1154 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1153)
          to label %1155 unwind label %1175

1155:                                             ; preds = %1152
  %1156 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1154)
          to label %1157 unwind label %1175

1157:                                             ; preds = %1155
  store ptr %1156, ptr %116, align 8, !tbaa !5
  br label %1158

1158:                                             ; preds = %1157
  %1159 = load ptr, ptr %116, align 8, !tbaa !5
  %1160 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1159) #0
  %1161 = load ptr, ptr %113, align 8, !tbaa !5
  %1162 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %1161, i32 0, i32 0
  %1163 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1162) #0
  %1164 = icmp eq i64 %1160, %1163
  br i1 %1164, label %1183, label %1165

1165:                                             ; preds = %1158
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 1 dereferenceable(1) %118) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef %117)
          to label %1166 unwind label %1179

1166:                                             ; preds = %1165
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #0
  br label %1183

1167:                                             ; preds = %1147
  %1168 = landingpad { ptr, i32 }
          cleanup
  %1169 = extractvalue { ptr, i32 } %1168, 0
  store ptr %1169, ptr %11, align 8
  %1170 = extractvalue { ptr, i32 } %1168, 1
  store i32 %1170, ptr %12, align 4
  br label %1214

1171:                                             ; preds = %1148
  %1172 = landingpad { ptr, i32 }
          cleanup
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %11, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %12, align 4
  br label %1213

1175:                                             ; preds = %1155, %1152
  %1176 = landingpad { ptr, i32 }
          cleanup
  %1177 = extractvalue { ptr, i32 } %1176, 0
  store ptr %1177, ptr %11, align 8
  %1178 = extractvalue { ptr, i32 } %1176, 1
  store i32 %1178, ptr %12, align 4
  br label %1212

1179:                                             ; preds = %1165
  %1180 = landingpad { ptr, i32 }
          cleanup
  %1181 = extractvalue { ptr, i32 } %1180, 0
  store ptr %1181, ptr %11, align 8
  %1182 = extractvalue { ptr, i32 } %1180, 1
  store i32 %1182, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #0
  br label %1212

1183:                                             ; preds = %1166, %1158
  br label %1184

1184:                                             ; preds = %1183
  br label %1185

1185:                                             ; preds = %1184
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #0
  store i64 0, ptr %119, align 8, !tbaa !32
  br label %1186

1186:                                             ; preds = %1203, %1185
  %1187 = load i64, ptr %119, align 8, !tbaa !32
  %1188 = load ptr, ptr %113, align 8, !tbaa !5
  %1189 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %1188, i32 0, i32 0
  %1190 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1189) #0
  %1191 = icmp ult i64 %1187, %1190
  br i1 %1191, label %1193, label %1192

1192:                                             ; preds = %1186
  store i32 127, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #0
  br label %1210

1193:                                             ; preds = %1186
  %1194 = load ptr, ptr %116, align 8, !tbaa !5
  %1195 = load i64, ptr %119, align 8, !tbaa !32
  %1196 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1194, i64 noundef %1195) #0
  %1197 = load ptr, ptr %113, align 8, !tbaa !5
  %1198 = getelementptr inbounds %"struct.MIR::RValue::Data_Tuple", ptr %1197, i32 0, i32 0
  %1199 = load i64, ptr %119, align 8, !tbaa !32
  %1200 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1198, i64 noundef %1199) #0
  %1201 = load i64, ptr %119, align 8, !tbaa !32
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(8) %1196, ptr noundef nonnull align 8 dereferenceable(48) %1200, i64 noundef %1201)
          to label %1202 unwind label %1206

1202:                                             ; preds = %1193
  br label %1203

1203:                                             ; preds = %1202
  %1204 = load i64, ptr %119, align 8, !tbaa !32
  %1205 = add i64 %1204, 1
  store i64 %1205, ptr %119, align 8, !tbaa !32
  br label %1186, !llvm.loop !89

1206:                                             ; preds = %1193
  %1207 = landingpad { ptr, i32 }
          cleanup
  %1208 = extractvalue { ptr, i32 } %1207, 0
  store ptr %1208, ptr %11, align 8
  %1209 = extractvalue { ptr, i32 } %1207, 1
  store i32 %1209, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #0
  br label %1212

1210:                                             ; preds = %1192
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #0
  br label %1211

1211:                                             ; preds = %1210
  store i8 0, ptr %112, align 1, !tbaa !12
  br label %1138, !llvm.loop !90

1212:                                             ; preds = %1206, %1179, %1175
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #0
  br label %1213

1213:                                             ; preds = %1212, %1171
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #0
  br label %1214

1214:                                             ; preds = %1213, %1167
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #0
  br label %1215

1215:                                             ; preds = %1214, %1143
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %112) #0
  br label %1510

1216:                                             ; preds = %1142
  br label %1217

1217:                                             ; preds = %1216
  store i8 0, ptr %112, align 1, !tbaa !12
  br label %1130, !llvm.loop !91

1218:                                             ; preds = %1133
  br label %1508

1219:                                             ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %120) #0
  store i8 1, ptr %120, align 1, !tbaa !12
  br label %1220

1220:                                             ; preds = %1240, %1219
  %1221 = load i8, ptr %120, align 1, !tbaa !12, !range !14, !noundef !15
  %1222 = trunc i8 %1221 to i1
  br i1 %1222, label %1224, label %1223

1223:                                             ; preds = %1220
  store i32 130, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #0
  br label %1241

1224:                                             ; preds = %1220
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #0
  %1225 = load ptr, ptr %49, align 8, !tbaa !5
  %1226 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %1225)
          to label %1227 unwind label %1233

1227:                                             ; preds = %1224
  store ptr %1226, ptr %121, align 8, !tbaa !5
  br label %1228

1228:                                             ; preds = %1238, %1227
  %1229 = load ptr, ptr %121, align 8, !tbaa !5
  %1230 = load i8, ptr %120, align 1, !tbaa !12, !range !14, !noundef !15
  %1231 = trunc i8 %1230 to i1
  br i1 %1231, label %1237, label %1232

1232:                                             ; preds = %1228
  store i32 133, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #0
  br label %1239

1233:                                             ; preds = %1224
  %1234 = landingpad { ptr, i32 }
          cleanup
  %1235 = extractvalue { ptr, i32 } %1234, 0
  store ptr %1235, ptr %11, align 8
  %1236 = extractvalue { ptr, i32 } %1234, 1
  store i32 %1236, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #0
  br label %1510

1237:                                             ; preds = %1228
  br label %1238

1238:                                             ; preds = %1237
  store i8 0, ptr %120, align 1, !tbaa !12
  br label %1228, !llvm.loop !92

1239:                                             ; preds = %1232
  br label %1240

1240:                                             ; preds = %1239
  store i8 0, ptr %120, align 1, !tbaa !12
  br label %1220, !llvm.loop !93

1241:                                             ; preds = %1223
  br label %1508

1242:                                             ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %122) #0
  store i8 1, ptr %122, align 1, !tbaa !12
  br label %1243

1243:                                             ; preds = %1263, %1242
  %1244 = load i8, ptr %122, align 1, !tbaa !12, !range !14, !noundef !15
  %1245 = trunc i8 %1244 to i1
  br i1 %1245, label %1247, label %1246

1246:                                             ; preds = %1243
  store i32 136, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #0
  br label %1264

1247:                                             ; preds = %1243
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #0
  %1248 = load ptr, ptr %49, align 8, !tbaa !5
  %1249 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %1248)
          to label %1250 unwind label %1256

1250:                                             ; preds = %1247
  store ptr %1249, ptr %123, align 8, !tbaa !5
  br label %1251

1251:                                             ; preds = %1261, %1250
  %1252 = load ptr, ptr %123, align 8, !tbaa !5
  %1253 = load i8, ptr %122, align 1, !tbaa !12, !range !14, !noundef !15
  %1254 = trunc i8 %1253 to i1
  br i1 %1254, label %1260, label %1255

1255:                                             ; preds = %1251
  store i32 139, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #0
  br label %1262

1256:                                             ; preds = %1247
  %1257 = landingpad { ptr, i32 }
          cleanup
  %1258 = extractvalue { ptr, i32 } %1257, 0
  store ptr %1258, ptr %11, align 8
  %1259 = extractvalue { ptr, i32 } %1257, 1
  store i32 %1259, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #0
  br label %1510

1260:                                             ; preds = %1251
  br label %1261

1261:                                             ; preds = %1260
  store i8 0, ptr %122, align 1, !tbaa !12
  br label %1251, !llvm.loop !94

1262:                                             ; preds = %1255
  br label %1263

1263:                                             ; preds = %1262
  store i8 0, ptr %122, align 1, !tbaa !12
  br label %1243, !llvm.loop !95

1264:                                             ; preds = %1246
  br label %1508

1265:                                             ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %124) #0
  store i8 1, ptr %124, align 1, !tbaa !12
  br label %1266

1266:                                             ; preds = %1343, %1265
  %1267 = load i8, ptr %124, align 1, !tbaa !12, !range !14, !noundef !15
  %1268 = trunc i8 %1267 to i1
  br i1 %1268, label %1270, label %1269

1269:                                             ; preds = %1266
  store i32 142, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #0
  br label %1344

1270:                                             ; preds = %1266
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #0
  %1271 = load ptr, ptr %49, align 8, !tbaa !5
  %1272 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %1271)
          to label %1273 unwind label %1279

1273:                                             ; preds = %1270
  store ptr %1272, ptr %125, align 8, !tbaa !5
  br label %1274

1274:                                             ; preds = %1338, %1273
  %1275 = load ptr, ptr %125, align 8, !tbaa !5
  %1276 = load i8, ptr %124, align 1, !tbaa !12, !range !14, !noundef !15
  %1277 = trunc i8 %1276 to i1
  br i1 %1277, label %1283, label %1278

1278:                                             ; preds = %1274
  store i32 145, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #0
  br label %1342

1279:                                             ; preds = %1270
  %1280 = landingpad { ptr, i32 }
          cleanup
  %1281 = extractvalue { ptr, i32 } %1280, 0
  store ptr %1281, ptr %11, align 8
  %1282 = extractvalue { ptr, i32 } %1280, 1
  store i32 %1282, ptr %12, align 4
  br label %1341

1283:                                             ; preds = %1274
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %1284 unwind label %1300

1284:                                             ; preds = %1283
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #0
  %1285 = load ptr, ptr %47, align 8, !tbaa !5
  %1286 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1285, i32 0, i32 0
  %1287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull align 8 dereferenceable(32) %1286, i32 noundef 0)
          to label %1288 unwind label %1304

1288:                                             ; preds = %1284
  store ptr %1287, ptr %127, align 8, !tbaa !5
  %1289 = load ptr, ptr %127, align 8, !tbaa !5
  %1290 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1289)
          to label %1291 unwind label %1304

1291:                                             ; preds = %1288
  %1292 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1290)
          to label %1293 unwind label %1304

1293:                                             ; preds = %1291
  br i1 %1292, label %1294, label %1337

1294:                                             ; preds = %1293
  %1295 = load ptr, ptr %125, align 8, !tbaa !5
  %1296 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1295, i32 0, i32 0
  %1297 = invoke noundef zeroext i1 @_ZNK3MIR5Param9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(48) %1296)
          to label %1298 unwind label %1304

1298:                                             ; preds = %1294
  br i1 %1297, label %1299, label %1308

1299:                                             ; preds = %1298
  br label %1336

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

1304:                                             ; preds = %1294, %1291, %1288, %1284
  %1305 = landingpad { ptr, i32 }
          cleanup
  %1306 = extractvalue { ptr, i32 } %1305, 0
  store ptr %1306, ptr %11, align 8
  %1307 = extractvalue { ptr, i32 } %1305, 1
  store i32 %1307, ptr %12, align 4
  br label %1339

1308:                                             ; preds = %1298
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %1309 unwind label %1327

1309:                                             ; preds = %1308
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #0
  %1310 = load ptr, ptr %125, align 8, !tbaa !5
  %1311 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %1310, i32 0, i32 0
  %1312 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(48) %1311)
          to label %1313 unwind label %1331

1313:                                             ; preds = %1309
  store ptr %1312, ptr %129, align 8, !tbaa !5
  %1314 = load ptr, ptr %127, align 8, !tbaa !5
  %1315 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1314)
          to label %1316 unwind label %1331

1316:                                             ; preds = %1313
  %1317 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1315)
          to label %1318 unwind label %1331

1318:                                             ; preds = %1316
  %1319 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1317, i32 0, i32 0
  %1320 = load ptr, ptr %129, align 8, !tbaa !5
  %1321 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1320)
          to label %1322 unwind label %1331

1322:                                             ; preds = %1318
  %1323 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1321)
          to label %1324 unwind label %1331

1324:                                             ; preds = %1322
  %1325 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1323, i32 0, i32 0
  invoke void @_ZN12_GLOBAL__N_111BorrowState15lifetime_assignERKN3HIR11LifetimeRefES4_(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 4 dereferenceable(4) %1319, ptr noundef nonnull align 4 dereferenceable(4) %1325)
          to label %1326 unwind label %1331

1326:                                             ; preds = %1324
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #0
  br label %1336

1327:                                             ; preds = %1308
  %1328 = landingpad { ptr, i32 }
          cleanup
  %1329 = extractvalue { ptr, i32 } %1328, 0
  store ptr %1329, ptr %11, align 8
  %1330 = extractvalue { ptr, i32 } %1328, 1
  store i32 %1330, ptr %12, align 4
  br label %1335

1331:                                             ; preds = %1324, %1322, %1318, %1316, %1313, %1309
  %1332 = landingpad { ptr, i32 }
          cleanup
  %1333 = extractvalue { ptr, i32 } %1332, 0
  store ptr %1333, ptr %11, align 8
  %1334 = extractvalue { ptr, i32 } %1332, 1
  store i32 %1334, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #0
  br label %1335

1335:                                             ; preds = %1331, %1327
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #0
  br label %1339

1336:                                             ; preds = %1326, %1299
  br label %1337

1337:                                             ; preds = %1336, %1293
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #0
  br label %1338

1338:                                             ; preds = %1337
  store i8 0, ptr %124, align 1, !tbaa !12
  br label %1274, !llvm.loop !96

1339:                                             ; preds = %1335, %1304
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #0
  br label %1340

1340:                                             ; preds = %1339, %1300
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #0
  br label %1341

1341:                                             ; preds = %1340, %1279
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #0
  br label %1510

1342:                                             ; preds = %1278
  br label %1343

1343:                                             ; preds = %1342
  store i8 0, ptr %124, align 1, !tbaa !12
  br label %1266, !llvm.loop !97

1344:                                             ; preds = %1269
  br label %1508

1345:                                             ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %130) #0
  store i8 1, ptr %130, align 1, !tbaa !12
  br label %1346

1346:                                             ; preds = %1366, %1345
  %1347 = load i8, ptr %130, align 1, !tbaa !12, !range !14, !noundef !15
  %1348 = trunc i8 %1347 to i1
  br i1 %1348, label %1350, label %1349

1349:                                             ; preds = %1346
  store i32 148, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #0
  br label %1367

1350:                                             ; preds = %1346
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #0
  %1351 = load ptr, ptr %49, align 8, !tbaa !5
  %1352 = invoke noundef nonnull align 8 dereferenceable(36) ptr @_ZN3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %1351)
          to label %1353 unwind label %1359

1353:                                             ; preds = %1350
  store ptr %1352, ptr %131, align 8, !tbaa !5
  br label %1354

1354:                                             ; preds = %1364, %1353
  %1355 = load ptr, ptr %131, align 8, !tbaa !5
  %1356 = load i8, ptr %130, align 1, !tbaa !12, !range !14, !noundef !15
  %1357 = trunc i8 %1356 to i1
  br i1 %1357, label %1363, label %1358

1358:                                             ; preds = %1354
  store i32 151, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #0
  br label %1365

1359:                                             ; preds = %1350
  %1360 = landingpad { ptr, i32 }
          cleanup
  %1361 = extractvalue { ptr, i32 } %1360, 0
  store ptr %1361, ptr %11, align 8
  %1362 = extractvalue { ptr, i32 } %1360, 1
  store i32 %1362, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #0
  br label %1510

1363:                                             ; preds = %1354
  br label %1364

1364:                                             ; preds = %1363
  store i8 0, ptr %130, align 1, !tbaa !12
  br label %1354, !llvm.loop !98

1365:                                             ; preds = %1358
  br label %1366

1366:                                             ; preds = %1365
  store i8 0, ptr %130, align 1, !tbaa !12
  br label %1346, !llvm.loop !99

1367:                                             ; preds = %1349
  br label %1508

1368:                                             ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %132) #0
  store i8 1, ptr %132, align 1, !tbaa !12
  br label %1369

1369:                                             ; preds = %1389, %1368
  %1370 = load i8, ptr %132, align 1, !tbaa !12, !range !14, !noundef !15
  %1371 = trunc i8 %1370 to i1
  br i1 %1371, label %1373, label %1372

1372:                                             ; preds = %1369
  store i32 154, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #0
  br label %1390

1373:                                             ; preds = %1369
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #0
  %1374 = load ptr, ptr %49, align 8, !tbaa !5
  %1375 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZN3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %1374)
          to label %1376 unwind label %1382

1376:                                             ; preds = %1373
  store ptr %1375, ptr %133, align 8, !tbaa !5
  br label %1377

1377:                                             ; preds = %1387, %1376
  %1378 = load ptr, ptr %133, align 8, !tbaa !5
  %1379 = load i8, ptr %132, align 1, !tbaa !12, !range !14, !noundef !15
  %1380 = trunc i8 %1379 to i1
  br i1 %1380, label %1386, label %1381

1381:                                             ; preds = %1377
  store i32 157, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #0
  br label %1388

1382:                                             ; preds = %1373
  %1383 = landingpad { ptr, i32 }
          cleanup
  %1384 = extractvalue { ptr, i32 } %1383, 0
  store ptr %1384, ptr %11, align 8
  %1385 = extractvalue { ptr, i32 } %1383, 1
  store i32 %1385, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %132) #0
  br label %1510

1386:                                             ; preds = %1377
  br label %1387

1387:                                             ; preds = %1386
  store i8 0, ptr %132, align 1, !tbaa !12
  br label %1377, !llvm.loop !100

1388:                                             ; preds = %1381
  br label %1389

1389:                                             ; preds = %1388
  store i8 0, ptr %132, align 1, !tbaa !12
  br label %1369, !llvm.loop !101

1390:                                             ; preds = %1372
  br label %1508

1391:                                             ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #0
  store i8 1, ptr %134, align 1, !tbaa !12
  br label %1392

1392:                                             ; preds = %1427, %1391
  %1393 = load i8, ptr %134, align 1, !tbaa !12, !range !14, !noundef !15
  %1394 = trunc i8 %1393 to i1
  br i1 %1394, label %1396, label %1395

1395:                                             ; preds = %1392
  store i32 160, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #0
  br label %1428

1396:                                             ; preds = %1392
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #0
  %1397 = load ptr, ptr %49, align 8, !tbaa !5
  %1398 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %1397)
          to label %1399 unwind label %1405

1399:                                             ; preds = %1396
  store ptr %1398, ptr %135, align 8, !tbaa !5
  br label %1400

1400:                                             ; preds = %1415, %1399
  %1401 = load ptr, ptr %135, align 8, !tbaa !5
  %1402 = load i8, ptr %134, align 1, !tbaa !12, !range !14, !noundef !15
  %1403 = trunc i8 %1402 to i1
  br i1 %1403, label %1409, label %1404

1404:                                             ; preds = %1400
  store i32 163, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #0
  br label %1426

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

1409:                                             ; preds = %1400
  %1410 = load ptr, ptr %47, align 8, !tbaa !5
  %1411 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1410, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #0
  %1412 = load ptr, ptr %135, align 8, !tbaa !5
  invoke void @_ZNK3MIR11TypeResolve14get_const_typeERKNS_8ConstantE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %136, ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(40) %1412)
          to label %1413 unwind label %1416

1413:                                             ; preds = %1409
  invoke void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(32) %1411, ptr noundef nonnull align 8 dereferenceable(8) %136)
          to label %1414 unwind label %1420

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

1415:                                             ; preds = %1414
  store i8 0, ptr %134, align 1, !tbaa !12
  br label %1400, !llvm.loop !102

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

1420:                                             ; preds = %1413
  %1421 = landingpad { ptr, i32 }
          cleanup
  %1422 = extractvalue { ptr, i32 } %1421, 0
  store ptr %1422, ptr %11, align 8
  %1423 = extractvalue { ptr, i32 } %1421, 1
  store i32 %1423, ptr %12, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #0
  br label %1424

1424:                                             ; preds = %1420, %1416
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #0
  br label %1425

1425:                                             ; preds = %1424, %1405
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #0
  br label %1510

1426:                                             ; preds = %1404
  br label %1427

1427:                                             ; preds = %1426
  store i8 0, ptr %134, align 1, !tbaa !12
  br label %1392, !llvm.loop !103

1428:                                             ; preds = %1395
  br label %1508

1429:                                             ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %137) #0
  store i8 1, ptr %137, align 1, !tbaa !12
  br label %1430

1430:                                             ; preds = %1506, %1429
  %1431 = load i8, ptr %137, align 1, !tbaa !12, !range !14, !noundef !15
  %1432 = trunc i8 %1431 to i1
  br i1 %1432, label %1434, label %1433

1433:                                             ; preds = %1430
  store i32 166, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #0
  br label %1507

1434:                                             ; preds = %1430
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #0
  %1435 = load ptr, ptr %49, align 8, !tbaa !5
  %1436 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %1435)
          to label %1437 unwind label %1443

1437:                                             ; preds = %1434
  store ptr %1436, ptr %138, align 8, !tbaa !5
  br label %1438

1438:                                             ; preds = %1500, %1437
  %1439 = load ptr, ptr %138, align 8, !tbaa !5
  %1440 = load i8, ptr %137, align 1, !tbaa !12, !range !14, !noundef !15
  %1441 = trunc i8 %1440 to i1
  br i1 %1441, label %1447, label %1442

1442:                                             ; preds = %1438
  store i32 169, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #0
  br label %1505

1443:                                             ; preds = %1434
  %1444 = landingpad { ptr, i32 }
          cleanup
  %1445 = extractvalue { ptr, i32 } %1444, 0
  store ptr %1445, ptr %11, align 8
  %1446 = extractvalue { ptr, i32 } %1444, 1
  store i32 %1446, ptr %12, align 4
  br label %1504

1447:                                             ; preds = %1438
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139)
          to label %1448 unwind label %1483

1448:                                             ; preds = %1447
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #0
  %1449 = load ptr, ptr %47, align 8, !tbaa !5
  %1450 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %1449, i32 0, i32 0
  %1451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull align 8 dereferenceable(32) %1450, i32 noundef 0)
          to label %1452 unwind label %1487

1452:                                             ; preds = %1448
  store ptr %1451, ptr %140, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %141)
          to label %1453 unwind label %1491

1453:                                             ; preds = %1452
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #0
  %1454 = load ptr, ptr %138, align 8, !tbaa !5
  %1455 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %1454, i32 0, i32 0
  %1456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull align 8 dereferenceable(32) %1455, i32 noundef 0)
          to label %1457 unwind label %1495

1457:                                             ; preds = %1453
  store ptr %1456, ptr %142, align 8, !tbaa !5
  %1458 = load ptr, ptr %140, align 8, !tbaa !5
  %1459 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1458)
          to label %1460 unwind label %1495

1460:                                             ; preds = %1457
  %1461 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1459)
          to label %1462 unwind label %1495

1462:                                             ; preds = %1460
  br i1 %1461, label %1463, label %1499

1463:                                             ; preds = %1462
  %1464 = load ptr, ptr %142, align 8, !tbaa !5
  %1465 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1464)
          to label %1466 unwind label %1495

1466:                                             ; preds = %1463
  %1467 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1465)
          to label %1468 unwind label %1495

1468:                                             ; preds = %1466
  br i1 %1467, label %1469, label %1499

1469:                                             ; preds = %1468
  %1470 = load ptr, ptr %140, align 8, !tbaa !5
  %1471 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1470)
          to label %1472 unwind label %1495

1472:                                             ; preds = %1469
  %1473 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1471)
          to label %1474 unwind label %1495

1474:                                             ; preds = %1472
  %1475 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1473, i32 0, i32 0
  %1476 = load ptr, ptr %142, align 8, !tbaa !5
  %1477 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1476)
          to label %1478 unwind label %1495

1478:                                             ; preds = %1474
  %1479 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1477)
          to label %1480 unwind label %1495

1480:                                             ; preds = %1478
  %1481 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1479, i32 0, i32 0
  invoke void @_ZN12_GLOBAL__N_111BorrowState15lifetime_assignERKN3HIR11LifetimeRefES4_(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 4 dereferenceable(4) %1475, ptr noundef nonnull align 4 dereferenceable(4) %1481)
          to label %1482 unwind label %1495

1482:                                             ; preds = %1480
  br label %1499

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

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

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

1495:                                             ; preds = %1480, %1478, %1474, %1472, %1469, %1466, %1463, %1460, %1457, %1453
  %1496 = landingpad { ptr, i32 }
          cleanup
  %1497 = extractvalue { ptr, i32 } %1496, 0
  store ptr %1497, ptr %11, align 8
  %1498 = extractvalue { ptr, i32 } %1496, 1
  store i32 %1498, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %141) #0
  br label %1501

1499:                                             ; preds = %1482, %1468, %1462
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %141) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #0
  br label %1500

1500:                                             ; preds = %1499
  store i8 0, ptr %137, align 1, !tbaa !12
  br label %1438, !llvm.loop !104

1501:                                             ; preds = %1495, %1491
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #0
  br label %1502

1502:                                             ; preds = %1501, %1487
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #0
  br label %1503

1503:                                             ; preds = %1502, %1483
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #0
  br label %1504

1504:                                             ; preds = %1503, %1443
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #0
  br label %1510

1505:                                             ; preds = %1442
  br label %1506

1506:                                             ; preds = %1505
  store i8 0, ptr %137, align 1, !tbaa !12
  br label %1430, !llvm.loop !105

1507:                                             ; preds = %1433
  br label %1508

1508:                                             ; preds = %1507, %1428, %1390, %1367, %1344, %1264, %1241, %1218, %1128, %1095, %739, %649, %602, %535, %458, %413
  br label %1509

1509:                                             ; preds = %1508
  store i8 0, ptr %48, align 1, !tbaa !12
  br label %406, !llvm.loop !106

1510:                                             ; preds = %1504, %1425, %1382, %1359, %1341, %1256, %1233, %1215, %1125, %1092, %736, %646, %599, %532, %455, %414
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #0
  br label %1515

1511:                                             ; preds = %409
  br label %1512

1512:                                             ; preds = %1511
  store i8 0, ptr %48, align 1, !tbaa !12
  br label %399, !llvm.loop !107

1513:                                             ; preds = %402
  br label %1514

1514:                                             ; preds = %1513
  store i8 0, ptr %46, align 1, !tbaa !12
  br label %389, !llvm.loop !108

1515:                                             ; preds = %1510, %394
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #0
  br label %1636

1516:                                             ; preds = %393
  br label %1517

1517:                                             ; preds = %1516
  store i8 0, ptr %46, align 1, !tbaa !12
  br label %381, !llvm.loop !109

1518:                                             ; preds = %384
  br label %1634

1519:                                             ; preds = %374
  call void @llvm.lifetime.start.p0(i64 1, ptr %143) #0
  store i8 1, ptr %143, align 1, !tbaa !12
  br label %1520

1520:                                             ; preds = %1540, %1519
  %1521 = load i8, ptr %143, align 1, !tbaa !12, !range !14, !noundef !15
  %1522 = trunc i8 %1521 to i1
  br i1 %1522, label %1524, label %1523

1523:                                             ; preds = %1520
  store i32 172, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #0
  br label %1541

1524:                                             ; preds = %1520
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #0
  %1525 = load ptr, ptr %45, align 8, !tbaa !5
  %1526 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152) %1525)
          to label %1527 unwind label %1533

1527:                                             ; preds = %1524
  store ptr %1526, ptr %144, align 8, !tbaa !5
  br label %1528

1528:                                             ; preds = %1538, %1527
  %1529 = load ptr, ptr %144, align 8, !tbaa !5
  %1530 = load i8, ptr %143, align 1, !tbaa !12, !range !14, !noundef !15
  %1531 = trunc i8 %1530 to i1
  br i1 %1531, label %1537, label %1532

1532:                                             ; preds = %1528
  store i32 175, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #0
  br label %1539

1533:                                             ; preds = %1524
  %1534 = landingpad { ptr, i32 }
          cleanup
  %1535 = extractvalue { ptr, i32 } %1534, 0
  store ptr %1535, ptr %11, align 8
  %1536 = extractvalue { ptr, i32 } %1534, 1
  store i32 %1536, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #0
  br label %1636

1537:                                             ; preds = %1528
  br label %1538

1538:                                             ; preds = %1537
  store i8 0, ptr %143, align 1, !tbaa !12
  br label %1528, !llvm.loop !110

1539:                                             ; preds = %1532
  br label %1540

1540:                                             ; preds = %1539
  store i8 0, ptr %143, align 1, !tbaa !12
  br label %1520, !llvm.loop !111

1541:                                             ; preds = %1523
  br label %1634

1542:                                             ; preds = %374
  call void @llvm.lifetime.start.p0(i64 1, ptr %145) #0
  store i8 1, ptr %145, align 1, !tbaa !12
  br label %1543

1543:                                             ; preds = %1563, %1542
  %1544 = load i8, ptr %145, align 1, !tbaa !12, !range !14, !noundef !15
  %1545 = trunc i8 %1544 to i1
  br i1 %1545, label %1547, label %1546

1546:                                             ; preds = %1543
  store i32 178, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #0
  br label %1564

1547:                                             ; preds = %1543
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #0
  %1548 = load ptr, ptr %45, align 8, !tbaa !5
  %1549 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152) %1548)
          to label %1550 unwind label %1556

1550:                                             ; preds = %1547
  store ptr %1549, ptr %146, align 8, !tbaa !5
  br label %1551

1551:                                             ; preds = %1561, %1550
  %1552 = load ptr, ptr %146, align 8, !tbaa !5
  %1553 = load i8, ptr %145, align 1, !tbaa !12, !range !14, !noundef !15
  %1554 = trunc i8 %1553 to i1
  br i1 %1554, label %1560, label %1555

1555:                                             ; preds = %1551
  store i32 181, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  br label %1562

1556:                                             ; preds = %1547
  %1557 = landingpad { ptr, i32 }
          cleanup
  %1558 = extractvalue { ptr, i32 } %1557, 0
  store ptr %1558, ptr %11, align 8
  %1559 = extractvalue { ptr, i32 } %1557, 1
  store i32 %1559, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #0
  br label %1636

1560:                                             ; preds = %1551
  br label %1561

1561:                                             ; preds = %1560
  store i8 0, ptr %145, align 1, !tbaa !12
  br label %1551, !llvm.loop !112

1562:                                             ; preds = %1555
  br label %1563

1563:                                             ; preds = %1562
  store i8 0, ptr %145, align 1, !tbaa !12
  br label %1543, !llvm.loop !113

1564:                                             ; preds = %1546
  br label %1634

1565:                                             ; preds = %374
  call void @llvm.lifetime.start.p0(i64 1, ptr %147) #0
  store i8 1, ptr %147, align 1, !tbaa !12
  br label %1566

1566:                                             ; preds = %1586, %1565
  %1567 = load i8, ptr %147, align 1, !tbaa !12, !range !14, !noundef !15
  %1568 = trunc i8 %1567 to i1
  br i1 %1568, label %1570, label %1569

1569:                                             ; preds = %1566
  store i32 184, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #0
  br label %1587

1570:                                             ; preds = %1566
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #0
  %1571 = load ptr, ptr %45, align 8, !tbaa !5
  %1572 = invoke noundef nonnull align 8 dereferenceable(44) ptr @_ZN3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %1571)
          to label %1573 unwind label %1579

1573:                                             ; preds = %1570
  store ptr %1572, ptr %148, align 8, !tbaa !5
  br label %1574

1574:                                             ; preds = %1584, %1573
  %1575 = load ptr, ptr %148, align 8, !tbaa !5
  %1576 = load i8, ptr %147, align 1, !tbaa !12, !range !14, !noundef !15
  %1577 = trunc i8 %1576 to i1
  br i1 %1577, label %1583, label %1578

1578:                                             ; preds = %1574
  store i32 187, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #0
  br label %1585

1579:                                             ; preds = %1570
  %1580 = landingpad { ptr, i32 }
          cleanup
  %1581 = extractvalue { ptr, i32 } %1580, 0
  store ptr %1581, ptr %11, align 8
  %1582 = extractvalue { ptr, i32 } %1580, 1
  store i32 %1582, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #0
  br label %1636

1583:                                             ; preds = %1574
  br label %1584

1584:                                             ; preds = %1583
  store i8 0, ptr %147, align 1, !tbaa !12
  br label %1574, !llvm.loop !114

1585:                                             ; preds = %1578
  br label %1586

1586:                                             ; preds = %1585
  store i8 0, ptr %147, align 1, !tbaa !12
  br label %1566, !llvm.loop !115

1587:                                             ; preds = %1569
  br label %1634

1588:                                             ; preds = %374
  call void @llvm.lifetime.start.p0(i64 1, ptr %149) #0
  store i8 1, ptr %149, align 1, !tbaa !12
  br label %1589

1589:                                             ; preds = %1609, %1588
  %1590 = load i8, ptr %149, align 1, !tbaa !12, !range !14, !noundef !15
  %1591 = trunc i8 %1590 to i1
  br i1 %1591, label %1593, label %1592

1592:                                             ; preds = %1589
  store i32 190, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %149) #0
  br label %1610

1593:                                             ; preds = %1589
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #0
  %1594 = load ptr, ptr %45, align 8, !tbaa !5
  %1595 = invoke noundef nonnull align 8 dereferenceable(128) ptr @_ZN3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %1594)
          to label %1596 unwind label %1602

1596:                                             ; preds = %1593
  store ptr %1595, ptr %150, align 8, !tbaa !5
  br label %1597

1597:                                             ; preds = %1607, %1596
  %1598 = load ptr, ptr %150, align 8, !tbaa !5
  %1599 = load i8, ptr %149, align 1, !tbaa !12, !range !14, !noundef !15
  %1600 = trunc i8 %1599 to i1
  br i1 %1600, label %1606, label %1601

1601:                                             ; preds = %1597
  store i32 193, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #0
  br label %1608

1602:                                             ; preds = %1593
  %1603 = landingpad { ptr, i32 }
          cleanup
  %1604 = extractvalue { ptr, i32 } %1603, 0
  store ptr %1604, ptr %11, align 8
  %1605 = extractvalue { ptr, i32 } %1603, 1
  store i32 %1605, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %149) #0
  br label %1636

1606:                                             ; preds = %1597
  br label %1607

1607:                                             ; preds = %1606
  store i8 0, ptr %149, align 1, !tbaa !12
  br label %1597, !llvm.loop !116

1608:                                             ; preds = %1601
  br label %1609

1609:                                             ; preds = %1608
  store i8 0, ptr %149, align 1, !tbaa !12
  br label %1589, !llvm.loop !117

1610:                                             ; preds = %1592
  br label %1634

1611:                                             ; preds = %374
  call void @llvm.lifetime.start.p0(i64 1, ptr %151) #0
  store i8 1, ptr %151, align 1, !tbaa !12
  br label %1612

1612:                                             ; preds = %1632, %1611
  %1613 = load i8, ptr %151, align 1, !tbaa !12, !range !14, !noundef !15
  %1614 = trunc i8 %1613 to i1
  br i1 %1614, label %1616, label %1615

1615:                                             ; preds = %1612
  store i32 196, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %151) #0
  br label %1633

1616:                                             ; preds = %1612
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #0
  %1617 = load ptr, ptr %45, align 8, !tbaa !5
  %1618 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %1617)
          to label %1619 unwind label %1625

1619:                                             ; preds = %1616
  store ptr %1618, ptr %152, align 8, !tbaa !5
  br label %1620

1620:                                             ; preds = %1630, %1619
  %1621 = load ptr, ptr %152, align 8, !tbaa !5
  %1622 = load i8, ptr %151, align 1, !tbaa !12, !range !14, !noundef !15
  %1623 = trunc i8 %1622 to i1
  br i1 %1623, label %1629, label %1624

1624:                                             ; preds = %1620
  store i32 199, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #0
  br label %1631

1625:                                             ; preds = %1616
  %1626 = landingpad { ptr, i32 }
          cleanup
  %1627 = extractvalue { ptr, i32 } %1626, 0
  store ptr %1627, ptr %11, align 8
  %1628 = extractvalue { ptr, i32 } %1626, 1
  store i32 %1628, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %151) #0
  br label %1636

1629:                                             ; preds = %1620
  br label %1630

1630:                                             ; preds = %1629
  store i8 0, ptr %151, align 1, !tbaa !12
  br label %1620, !llvm.loop !118

1631:                                             ; preds = %1624
  br label %1632

1632:                                             ; preds = %1631
  store i8 0, ptr %151, align 1, !tbaa !12
  br label %1612, !llvm.loop !119

1633:                                             ; preds = %1615
  br label %1634

1634:                                             ; preds = %1633, %1610, %1587, %1564, %1541, %1518, %374
  br label %1635

1635:                                             ; preds = %1634
  store i8 0, ptr %44, align 1, !tbaa !12
  br label %367, !llvm.loop !120

1636:                                             ; preds = %1625, %1602, %1579, %1556, %1533, %1515, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #0
  br label %1642

1637:                                             ; preds = %370
  br label %1638

1638:                                             ; preds = %1637
  store i8 0, ptr %44, align 1, !tbaa !12
  br label %361, !llvm.loop !121

1639:                                             ; preds = %364
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  br label %1640

1640:                                             ; preds = %1639
  %1641 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #0
  br label %314

1642:                                             ; preds = %1636, %354
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  br label %2053

1643:                                             ; preds = %316
  %1644 = load ptr, ptr %39, align 8, !tbaa !5
  %1645 = load ptr, ptr %8, align 8, !tbaa !5
  %1646 = getelementptr inbounds %"class.MIR::Function", ptr %1645, i32 0, i32 2
  %1647 = call noundef ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1646) #0
  %1648 = ptrtoint ptr %1644 to i64
  %1649 = ptrtoint ptr %1647 to i64
  %1650 = sub i64 %1648, %1649
  %1651 = sdiv exact i64 %1650, 192
  %1652 = trunc i64 %1651 to i32
  invoke void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %16, i32 noundef %1652)
          to label %1653 unwind label %1671

1653:                                             ; preds = %1643
  br label %1654

1654:                                             ; preds = %1653
  %1655 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1656 unwind label %1671

1656:                                             ; preds = %1654
  br i1 %1655, label %1657, label %1675

1657:                                             ; preds = %1656
  %1658 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %1659 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1658, ptr noundef @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %1660 unwind label %1671

1660:                                             ; preds = %1657
  %1661 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %1659, ptr noundef nonnull align 8 dereferenceable(120) %16)
          to label %1662 unwind label %1671

1662:                                             ; preds = %1660
  %1663 = load ptr, ptr %39, align 8, !tbaa !5
  %1664 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1663, i32 0, i32 1
  %1665 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %1661, ptr noundef nonnull align 8 dereferenceable(168) %1664)
          to label %1666 unwind label %1671

1666:                                             ; preds = %1662
  %1667 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1665, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1668 unwind label %1671

1668:                                             ; preds = %1666
  %1669 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1667, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1670 unwind label %1671

1670:                                             ; preds = %1668
  br label %1675

1671:                                             ; preds = %1668, %1666, %1662, %1660, %1657, %1654, %1643
  %1672 = landingpad { ptr, i32 }
          cleanup
  %1673 = extractvalue { ptr, i32 } %1672, 0
  store ptr %1673, ptr %11, align 8
  %1674 = extractvalue { ptr, i32 } %1672, 1
  store i32 %1674, ptr %12, align 4
  br label %2053

1675:                                             ; preds = %1670, %1656
  br label %1676

1676:                                             ; preds = %1675
  br label %1677

1677:                                             ; preds = %1676
  call void @llvm.lifetime.start.p0(i64 1, ptr %153) #0
  store i8 1, ptr %153, align 1, !tbaa !12
  br label %1678

1678:                                             ; preds = %2049, %1677
  %1679 = load i8, ptr %153, align 1, !tbaa !12, !range !14, !noundef !15
  %1680 = trunc i8 %1679 to i1
  br i1 %1680, label %1682, label %1681

1681:                                             ; preds = %1678
  store i32 204, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %153) #0
  br label %2050

1682:                                             ; preds = %1678
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #0
  %1683 = load ptr, ptr %39, align 8, !tbaa !5
  %1684 = getelementptr inbounds %"struct.MIR::BasicBlock", ptr %1683, i32 0, i32 1
  store ptr %1684, ptr %154, align 8, !tbaa !5
  br label %1685

1685:                                             ; preds = %2046, %1682
  %1686 = load i8, ptr %153, align 1, !tbaa !12, !range !14, !noundef !15
  %1687 = trunc i8 %1686 to i1
  br i1 %1687, label %1689, label %1688

1688:                                             ; preds = %1685
  store i32 207, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #0
  br label %2048

1689:                                             ; preds = %1685
  %1690 = load ptr, ptr %154, align 8, !tbaa !5
  %1691 = invoke noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %1690)
          to label %1692 unwind label %1693

1692:                                             ; preds = %1689
  switch i32 %1691, label %1698 [
    i32 0, label %1697
    i32 9, label %1699
  ]

1693:                                             ; preds = %1689
  %1694 = landingpad { ptr, i32 }
          cleanup
  %1695 = extractvalue { ptr, i32 } %1694, 0
  store ptr %1695, ptr %11, align 8
  %1696 = extractvalue { ptr, i32 } %1694, 1
  store i32 %1696, ptr %12, align 4
  br label %2047

1697:                                             ; preds = %1692
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 733, ptr noundef @__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

1698:                                             ; preds = %1692
  br label %2045

1699:                                             ; preds = %1692
  call void @llvm.lifetime.start.p0(i64 1, ptr %155) #0
  store i8 1, ptr %155, align 1, !tbaa !12
  br label %1700

1700:                                             ; preds = %2043, %1699
  %1701 = load i8, ptr %155, align 1, !tbaa !12, !range !14, !noundef !15
  %1702 = trunc i8 %1701 to i1
  br i1 %1702, label %1704, label %1703

1703:                                             ; preds = %1700
  store i32 211, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %155) #0
  br label %2044

1704:                                             ; preds = %1700
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #0
  %1705 = load ptr, ptr %154, align 8, !tbaa !5
  %1706 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZN3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %1705)
          to label %1707 unwind label %1713

1707:                                             ; preds = %1704
  store ptr %1706, ptr %156, align 8, !tbaa !5
  br label %1708

1708:                                             ; preds = %2040, %1707
  %1709 = load ptr, ptr %156, align 8, !tbaa !5
  %1710 = load i8, ptr %155, align 1, !tbaa !12, !range !14, !noundef !15
  %1711 = trunc i8 %1710 to i1
  br i1 %1711, label %1717, label %1712

1712:                                             ; preds = %1708
  store i32 214, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #0
  br label %2042

1713:                                             ; preds = %1704
  %1714 = landingpad { ptr, i32 }
          cleanup
  %1715 = extractvalue { ptr, i32 } %1714, 0
  store ptr %1715, ptr %11, align 8
  %1716 = extractvalue { ptr, i32 } %1714, 1
  store i32 %1716, ptr %12, align 4
  br label %2041

1717:                                             ; preds = %1708
  call void @llvm.lifetime.start.p0(i64 1, ptr %157) #0
  store i8 1, ptr %157, align 1, !tbaa !12
  br label %1718

1718:                                             ; preds = %2038, %1717
  %1719 = load i8, ptr %157, align 1, !tbaa !12, !range !14, !noundef !15
  %1720 = trunc i8 %1719 to i1
  br i1 %1720, label %1722, label %1721

1721:                                             ; preds = %1718
  store i32 217, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %157) #0
  br label %2039

1722:                                             ; preds = %1718
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #0
  %1723 = load ptr, ptr %156, align 8, !tbaa !5
  %1724 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1723, i32 0, i32 3
  store ptr %1724, ptr %158, align 8, !tbaa !5
  br label %1725

1725:                                             ; preds = %2035, %1722
  %1726 = load i8, ptr %157, align 1, !tbaa !12, !range !14, !noundef !15
  %1727 = trunc i8 %1726 to i1
  br i1 %1727, label %1729, label %1728

1728:                                             ; preds = %1725
  store i32 220, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #0
  br label %2037

1729:                                             ; preds = %1725
  %1730 = load ptr, ptr %158, align 8, !tbaa !5
  %1731 = invoke noundef i32 @_ZNK3MIR10CallTarget3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %1730)
          to label %1732 unwind label %1733

1732:                                             ; preds = %1729
  switch i32 %1731, label %2034 [
    i32 0, label %1737
    i32 3, label %1738
    i32 1, label %1761
    i32 2, label %1857
  ]

1733:                                             ; preds = %1729
  %1734 = landingpad { ptr, i32 }
          cleanup
  %1735 = extractvalue { ptr, i32 } %1734, 0
  store ptr %1735, ptr %11, align 8
  %1736 = extractvalue { ptr, i32 } %1734, 1
  store i32 %1736, ptr %12, align 4
  br label %2036

1737:                                             ; preds = %1732
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 737, ptr noundef @__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

1738:                                             ; preds = %1732
  call void @llvm.lifetime.start.p0(i64 1, ptr %159) #0
  store i8 1, ptr %159, align 1, !tbaa !12
  br label %1739

1739:                                             ; preds = %1759, %1738
  %1740 = load i8, ptr %159, align 1, !tbaa !12, !range !14, !noundef !15
  %1741 = trunc i8 %1740 to i1
  br i1 %1741, label %1743, label %1742

1742:                                             ; preds = %1739
  store i32 224, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #0
  br label %1760

1743:                                             ; preds = %1739
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #0
  %1744 = load ptr, ptr %158, align 8, !tbaa !5
  %1745 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget12as_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %1744)
          to label %1746 unwind label %1752

1746:                                             ; preds = %1743
  store ptr %1745, ptr %160, align 8, !tbaa !5
  br label %1747

1747:                                             ; preds = %1757, %1746
  %1748 = load ptr, ptr %160, align 8, !tbaa !5
  %1749 = load i8, ptr %159, align 1, !tbaa !12, !range !14, !noundef !15
  %1750 = trunc i8 %1749 to i1
  br i1 %1750, label %1756, label %1751

1751:                                             ; preds = %1747
  store i32 227, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #0
  br label %1758

1752:                                             ; preds = %1743
  %1753 = landingpad { ptr, i32 }
          cleanup
  %1754 = extractvalue { ptr, i32 } %1753, 0
  store ptr %1754, ptr %11, align 8
  %1755 = extractvalue { ptr, i32 } %1753, 1
  store i32 %1755, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #0
  br label %2036

1756:                                             ; preds = %1747
  br label %1757

1757:                                             ; preds = %1756
  store i8 0, ptr %159, align 1, !tbaa !12
  br label %1747, !llvm.loop !122

1758:                                             ; preds = %1751
  br label %1759

1759:                                             ; preds = %1758
  store i8 0, ptr %159, align 1, !tbaa !12
  br label %1739, !llvm.loop !123

1760:                                             ; preds = %1742
  br label %2034

1761:                                             ; preds = %1732
  call void @llvm.lifetime.start.p0(i64 1, ptr %161) #0
  store i8 1, ptr %161, align 1, !tbaa !12
  br label %1762

1762:                                             ; preds = %1855, %1761
  %1763 = load i8, ptr %161, align 1, !tbaa !12, !range !14, !noundef !15
  %1764 = trunc i8 %1763 to i1
  br i1 %1764, label %1766, label %1765

1765:                                             ; preds = %1762
  store i32 230, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %161) #0
  br label %1856

1766:                                             ; preds = %1762
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #0
  %1767 = load ptr, ptr %158, align 8, !tbaa !5
  %1768 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %1767)
          to label %1769 unwind label %1775

1769:                                             ; preds = %1766
  store ptr %1768, ptr %162, align 8, !tbaa !5
  br label %1770

1770:                                             ; preds = %1849, %1769
  %1771 = load ptr, ptr %162, align 8, !tbaa !5
  %1772 = load i8, ptr %161, align 1, !tbaa !12, !range !14, !noundef !15
  %1773 = trunc i8 %1772 to i1
  br i1 %1773, label %1779, label %1774

1774:                                             ; preds = %1770
  store i32 233, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #0
  br label %1854

1775:                                             ; preds = %1766
  %1776 = landingpad { ptr, i32 }
          cleanup
  %1777 = extractvalue { ptr, i32 } %1776, 0
  store ptr %1777, ptr %11, align 8
  %1778 = extractvalue { ptr, i32 } %1776, 1
  store i32 %1778, ptr %12, align 4
  br label %1853

1779:                                             ; preds = %1770
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %163)
          to label %1780 unwind label %1799

1780:                                             ; preds = %1779
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #0
  %1781 = load ptr, ptr %162, align 8, !tbaa !5
  %1782 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef nonnull align 8 dereferenceable(32) %1781, i32 noundef 0)
          to label %1783 unwind label %1803

1783:                                             ; preds = %1780
  store ptr %1782, ptr %164, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #0
  %1784 = load ptr, ptr %164, align 8, !tbaa !5
  %1785 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1784)
          to label %1786 unwind label %1807

1786:                                             ; preds = %1783
  %1787 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1785)
          to label %1788 unwind label %1807

1788:                                             ; preds = %1786
  store ptr %1787, ptr %165, align 8, !tbaa !5
  br label %1789

1789:                                             ; preds = %1788
  %1790 = load ptr, ptr %165, align 8, !tbaa !5
  %1791 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %1790, i32 0, i32 5
  %1792 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1791) #0
  %1793 = load ptr, ptr %156, align 8, !tbaa !5
  %1794 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1793, i32 0, i32 4
  %1795 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1794) #0
  %1796 = icmp eq i64 %1792, %1795
  br i1 %1796, label %1815, label %1797

1797:                                             ; preds = %1789
  call void @llvm.lifetime.start.p0(i64 1, ptr %167) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull align 1 dereferenceable(1) %167) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef %166)
          to label %1798 unwind label %1811

1798:                                             ; preds = %1797
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %167) #0
  br label %1815

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

1803:                                             ; preds = %1780
  %1804 = landingpad { ptr, i32 }
          cleanup
  %1805 = extractvalue { ptr, i32 } %1804, 0
  store ptr %1805, ptr %11, align 8
  %1806 = extractvalue { ptr, i32 } %1804, 1
  store i32 %1806, ptr %12, align 4
  br label %1851

1807:                                             ; preds = %1843, %1786, %1783
  %1808 = landingpad { ptr, i32 }
          cleanup
  %1809 = extractvalue { ptr, i32 } %1808, 0
  store ptr %1809, ptr %11, align 8
  %1810 = extractvalue { ptr, i32 } %1808, 1
  store i32 %1810, ptr %12, align 4
  br label %1850

1811:                                             ; preds = %1797
  %1812 = landingpad { ptr, i32 }
          cleanup
  %1813 = extractvalue { ptr, i32 } %1812, 0
  store ptr %1813, ptr %11, align 8
  %1814 = extractvalue { ptr, i32 } %1812, 1
  store i32 %1814, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %167) #0
  br label %1850

1815:                                             ; preds = %1798, %1789
  br label %1816

1816:                                             ; preds = %1815
  br label %1817

1817:                                             ; preds = %1816
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #0
  store i64 0, ptr %168, align 8, !tbaa !32
  br label %1818

1818:                                             ; preds = %1836, %1817
  %1819 = load i64, ptr %168, align 8, !tbaa !32
  %1820 = load ptr, ptr %165, align 8, !tbaa !5
  %1821 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %1820, i32 0, i32 5
  %1822 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1821) #0
  %1823 = icmp ult i64 %1819, %1822
  br i1 %1823, label %1825, label %1824

1824:                                             ; preds = %1818
  store i32 238, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #0
  br label %1843

1825:                                             ; preds = %1818
  %1826 = load ptr, ptr %165, align 8, !tbaa !5
  %1827 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %1826, i32 0, i32 5
  %1828 = load i64, ptr %168, align 8, !tbaa !32
  %1829 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1827, i64 noundef %1828) #0
  %1830 = load ptr, ptr %156, align 8, !tbaa !5
  %1831 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1830, i32 0, i32 4
  %1832 = load i64, ptr %168, align 8, !tbaa !32
  %1833 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1831, i64 noundef %1832) #0
  %1834 = load i64, ptr %168, align 8, !tbaa !32
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(8) %1829, ptr noundef nonnull align 8 dereferenceable(48) %1833, i64 noundef %1834)
          to label %1835 unwind label %1839

1835:                                             ; preds = %1825
  br label %1836

1836:                                             ; preds = %1835
  %1837 = load i64, ptr %168, align 8, !tbaa !32
  %1838 = add i64 %1837, 1
  store i64 %1838, ptr %168, align 8, !tbaa !32
  br label %1818, !llvm.loop !124

1839:                                             ; preds = %1825
  %1840 = landingpad { ptr, i32 }
          cleanup
  %1841 = extractvalue { ptr, i32 } %1840, 0
  store ptr %1841, ptr %11, align 8
  %1842 = extractvalue { ptr, i32 } %1840, 1
  store i32 %1842, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #0
  br label %1850

1843:                                             ; preds = %1824
  %1844 = load ptr, ptr %156, align 8, !tbaa !5
  %1845 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1844, i32 0, i32 2
  %1846 = load ptr, ptr %165, align 8, !tbaa !5
  %1847 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %1846, i32 0, i32 4
  invoke void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(32) %1845, ptr noundef nonnull align 8 dereferenceable(8) %1847)
          to label %1848 unwind label %1807

1848:                                             ; preds = %1843
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #0
  br label %1849

1849:                                             ; preds = %1848
  store i8 0, ptr %161, align 1, !tbaa !12
  br label %1770, !llvm.loop !125

1850:                                             ; preds = %1839, %1811, %1807
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #0
  br label %1851

1851:                                             ; preds = %1850, %1803
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #0
  br label %1852

1852:                                             ; preds = %1851, %1799
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #0
  br label %1853

1853:                                             ; preds = %1852, %1775
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %161) #0
  br label %2036

1854:                                             ; preds = %1774
  br label %1855

1855:                                             ; preds = %1854
  store i8 0, ptr %161, align 1, !tbaa !12
  br label %1762, !llvm.loop !126

1856:                                             ; preds = %1765
  br label %2034

1857:                                             ; preds = %1732
  call void @llvm.lifetime.start.p0(i64 1, ptr %169) #0
  store i8 1, ptr %169, align 1, !tbaa !12
  br label %1858

1858:                                             ; preds = %2032, %1857
  %1859 = load i8, ptr %169, align 1, !tbaa !12, !range !14, !noundef !15
  %1860 = trunc i8 %1859 to i1
  br i1 %1860, label %1862, label %1861

1861:                                             ; preds = %1858
  store i32 241, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %169) #0
  br label %2033

1862:                                             ; preds = %1858
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #0
  %1863 = load ptr, ptr %158, align 8, !tbaa !5
  %1864 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %1863)
          to label %1865 unwind label %1871

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

1866:                                             ; preds = %2025, %1865
  %1867 = load ptr, ptr %170, align 8, !tbaa !5
  %1868 = load i8, ptr %169, align 1, !tbaa !12, !range !14, !noundef !15
  %1869 = trunc i8 %1868 to i1
  br i1 %1869, label %1875, label %1870

1870:                                             ; preds = %1866
  store i32 244, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #0
  br label %2031

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

1875:                                             ; preds = %1866
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %171)
          to label %1876 unwind label %1901

1876:                                             ; preds = %1875
  call void @llvm.lifetime.start.p0(i64 144, ptr %172) #0
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %172)
          to label %1877 unwind label %1905

1877:                                             ; preds = %1876
  call void @llvm.lifetime.start.p0(i64 24, ptr %173) #0
  %1878 = load ptr, ptr %6, align 8, !tbaa !5
  %1879 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %16, i32 0, i32 1
  %1880 = load ptr, ptr %1879, align 8, !tbaa !56
  %1881 = load ptr, ptr %170, align 8, !tbaa !5
  invoke void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %173, ptr noundef nonnull align 8 dereferenceable(424) %1878, ptr noundef nonnull align 8 dereferenceable(8) %1880, ptr noundef nonnull align 8 dereferenceable(88) %1881, ptr noundef nonnull align 8 dereferenceable(144) %172, i1 noundef zeroext true, ptr noundef null)
          to label %1882 unwind label %1909

1882:                                             ; preds = %1877
  call void @llvm.lifetime.start.p0(i64 32, ptr %174) #0
  %1883 = getelementptr inbounds %class.anon.375, ptr %174, i32 0, i32 0
  %1884 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %1884, ptr %1883, align 8, !tbaa !5
  %1885 = getelementptr inbounds %class.anon.375, ptr %174, i32 0, i32 1
  store ptr %16, ptr %1885, align 8, !tbaa !5
  %1886 = getelementptr inbounds %class.anon.375, ptr %174, i32 0, i32 2
  store ptr %171, ptr %1886, align 8, !tbaa !5
  %1887 = getelementptr inbounds %class.anon.375, ptr %174, i32 0, i32 3
  store ptr %172, ptr %1887, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #0
  %1888 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %173)
          to label %1889 unwind label %1913

1889:                                             ; preds = %1882
  %1890 = load ptr, ptr %1888, align 8, !tbaa !5
  store ptr %1890, ptr %175, align 8, !tbaa !5
  br label %1891

1891:                                             ; preds = %1889
  %1892 = load ptr, ptr %175, align 8, !tbaa !5
  %1893 = getelementptr inbounds %"class.HIR::Function", ptr %1892, i32 0, i32 8
  %1894 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1893) #0
  %1895 = load ptr, ptr %156, align 8, !tbaa !5
  %1896 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1895, i32 0, i32 4
  %1897 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1896) #0
  %1898 = icmp ule i64 %1894, %1897
  br i1 %1898, label %1921, label %1899

1899:                                             ; preds = %1891
  call void @llvm.lifetime.start.p0(i64 1, ptr %177) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %176, ptr noundef nonnull align 1 dereferenceable(1) %177) #0
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef %176)
          to label %1900 unwind label %1917

1900:                                             ; preds = %1899
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %176) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %177) #0
  br label %1921

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

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

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

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

1917:                                             ; preds = %1899
  %1918 = landingpad { ptr, i32 }
          cleanup
  %1919 = extractvalue { ptr, i32 } %1918, 0
  store ptr %1919, ptr %11, align 8
  %1920 = extractvalue { ptr, i32 } %1918, 1
  store i32 %1920, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %176) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %177) #0
  br label %2026

1921:                                             ; preds = %1900, %1891
  br label %1922

1922:                                             ; preds = %1921
  br label %1923

1923:                                             ; preds = %1922
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #0
  store i64 0, ptr %178, align 8, !tbaa !32
  br label %1924

1924:                                             ; preds = %1982, %1923
  %1925 = load i64, ptr %178, align 8, !tbaa !32
  %1926 = load ptr, ptr %175, align 8, !tbaa !5
  %1927 = getelementptr inbounds %"class.HIR::Function", ptr %1926, i32 0, i32 8
  %1928 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1927) #0
  %1929 = icmp ult i64 %1925, %1928
  br i1 %1929, label %1931, label %1930

1930:                                             ; preds = %1924
  store i32 249, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #0
  br label %1985

1931:                                             ; preds = %1924
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #0
  %1932 = load ptr, ptr %175, align 8, !tbaa !5
  %1933 = getelementptr inbounds %"class.HIR::Function", ptr %1932, i32 0, i32 8
  %1934 = load i64, ptr %178, align 8, !tbaa !32
  %1935 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1933, i64 noundef %1934) #0
  %1936 = getelementptr inbounds %"struct.std::pair.378", ptr %1935, i32 0, i32 1
  %1937 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_18clESJ_"(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull align 8 dereferenceable(8) %1936)
          to label %1938 unwind label %1968

1938:                                             ; preds = %1931
  store ptr %1937, ptr %179, align 8, !tbaa !5
  br label %1939

1939:                                             ; preds = %1938
  %1940 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1941 unwind label %1968

1941:                                             ; preds = %1939
  br i1 %1940, label %1942, label %1972

1942:                                             ; preds = %1941
  %1943 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %1944 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1943, ptr noundef @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %1945 unwind label %1968

1945:                                             ; preds = %1942
  %1946 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1944, ptr noundef @.str.3)
          to label %1947 unwind label %1968

1947:                                             ; preds = %1945
  %1948 = load i64, ptr %178, align 8, !tbaa !32
  %1949 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %1946, i64 noundef %1948)
          to label %1950 unwind label %1968

1950:                                             ; preds = %1947
  %1951 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1949, ptr noundef @.str.4)
          to label %1952 unwind label %1968

1952:                                             ; preds = %1950
  %1953 = load ptr, ptr %179, align 8, !tbaa !5
  %1954 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1951, ptr noundef nonnull align 8 dereferenceable(8) %1953)
          to label %1955 unwind label %1968

1955:                                             ; preds = %1952
  %1956 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1954, ptr noundef @.str.5)
          to label %1957 unwind label %1968

1957:                                             ; preds = %1955
  %1958 = load ptr, ptr %156, align 8, !tbaa !5
  %1959 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1958, i32 0, i32 4
  %1960 = load i64, ptr %178, align 8, !tbaa !32
  %1961 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1959, i64 noundef %1960) #0
  %1962 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(8) %1956, ptr noundef nonnull align 8 dereferenceable(48) %1961)
          to label %1963 unwind label %1968

1963:                                             ; preds = %1957
  %1964 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1962, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1965 unwind label %1968

1965:                                             ; preds = %1963
  %1966 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1964, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1967 unwind label %1968

1967:                                             ; preds = %1965
  br label %1972

1968:                                             ; preds = %1974, %1965, %1963, %1957, %1955, %1952, %1950, %1947, %1945, %1942, %1939, %1931
  %1969 = landingpad { ptr, i32 }
          cleanup
  %1970 = extractvalue { ptr, i32 } %1969, 0
  store ptr %1970, ptr %11, align 8
  %1971 = extractvalue { ptr, i32 } %1969, 1
  store i32 %1971, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #0
  br label %2026

1972:                                             ; preds = %1967, %1941
  br label %1973

1973:                                             ; preds = %1972
  br label %1974

1974:                                             ; preds = %1973
  %1975 = load ptr, ptr %179, align 8, !tbaa !5
  %1976 = load ptr, ptr %156, align 8, !tbaa !5
  %1977 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %1976, i32 0, i32 4
  %1978 = load i64, ptr %178, align 8, !tbaa !32
  %1979 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1977, i64 noundef %1978) #0
  %1980 = load i64, ptr %178, align 8, !tbaa !32
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(8) %1975, ptr noundef nonnull align 8 dereferenceable(48) %1979, i64 noundef %1980)
          to label %1981 unwind label %1968

1981:                                             ; preds = %1974
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #0
  br label %1982

1982:                                             ; preds = %1981
  %1983 = load i64, ptr %178, align 8, !tbaa !32
  %1984 = add i64 %1983, 1
  store i64 %1984, ptr %178, align 8, !tbaa !32
  br label %1924, !llvm.loop !127

1985:                                             ; preds = %1930
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #0
  %1986 = load ptr, ptr %175, align 8, !tbaa !5
  %1987 = getelementptr inbounds %"class.HIR::Function", ptr %1986, i32 0, i32 10
  %1988 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_18clESJ_"(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull align 8 dereferenceable(8) %1987)
          to label %1989 unwind label %2014

1989:                                             ; preds = %1985
  store ptr %1988, ptr %180, align 8, !tbaa !5
  br label %1990

1990:                                             ; preds = %1989
  %1991 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1992 unwind label %2014

1992:                                             ; preds = %1990
  br i1 %1991, label %1993, label %2018

1993:                                             ; preds = %1992
  %1994 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %1995 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1994, ptr noundef @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %1996 unwind label %2014

1996:                                             ; preds = %1993
  %1997 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1995, ptr noundef @.str.6)
          to label %1998 unwind label %2014

1998:                                             ; preds = %1996
  %1999 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1997, ptr noundef @.str.4)
          to label %2000 unwind label %2014

2000:                                             ; preds = %1998
  %2001 = load ptr, ptr %156, align 8, !tbaa !5
  %2002 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2001, i32 0, i32 2
  %2003 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %1999, ptr noundef nonnull align 8 dereferenceable(32) %2002)
          to label %2004 unwind label %2014

2004:                                             ; preds = %2000
  %2005 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2003, ptr noundef @.str.5)
          to label %2006 unwind label %2014

2006:                                             ; preds = %2004
  %2007 = load ptr, ptr %180, align 8, !tbaa !5
  %2008 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2005, ptr noundef nonnull align 8 dereferenceable(8) %2007)
          to label %2009 unwind label %2014

2009:                                             ; preds = %2006
  %2010 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2008, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2011 unwind label %2014

2011:                                             ; preds = %2009
  %2012 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2010, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2013 unwind label %2014

2013:                                             ; preds = %2011
  br label %2018

2014:                                             ; preds = %2020, %2011, %2009, %2006, %2004, %2000, %1998, %1996, %1993, %1990, %1985
  %2015 = landingpad { ptr, i32 }
          cleanup
  %2016 = extractvalue { ptr, i32 } %2015, 0
  store ptr %2016, ptr %11, align 8
  %2017 = extractvalue { ptr, i32 } %2015, 1
  store i32 %2017, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #0
  br label %2026

2018:                                             ; preds = %2013, %1992
  br label %2019

2019:                                             ; preds = %2018
  br label %2020

2020:                                             ; preds = %2019
  %2021 = load ptr, ptr %156, align 8, !tbaa !5
  %2022 = getelementptr inbounds %"struct.MIR::Terminator::Data_Call", ptr %2021, i32 0, i32 2
  %2023 = load ptr, ptr %180, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %23, ptr noundef nonnull align 8 dereferenceable(32) %2022, ptr noundef nonnull align 8 dereferenceable(8) %2023)
          to label %2024 unwind label %2014

2024:                                             ; preds = %2020
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %174) #0
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %173) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %173) #0
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %172) #0
  call void @llvm.lifetime.end.p0(i64 144, ptr %172) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #0
  br label %2025

2025:                                             ; preds = %2024
  store i8 0, ptr %169, align 1, !tbaa !12
  br label %1866, !llvm.loop !128

2026:                                             ; preds = %2014, %1968, %1917, %1913
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %174) #0
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %173) #0
  br label %2027

2027:                                             ; preds = %2026, %1909
  call void @llvm.lifetime.end.p0(i64 24, ptr %173) #0
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %172) #0
  br label %2028

2028:                                             ; preds = %2027, %1905
  call void @llvm.lifetime.end.p0(i64 144, ptr %172) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #0
  br label %2029

2029:                                             ; preds = %2028, %1901
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #0
  br label %2030

2030:                                             ; preds = %2029, %1871
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %169) #0
  br label %2036

2031:                                             ; preds = %1870
  br label %2032

2032:                                             ; preds = %2031
  store i8 0, ptr %169, align 1, !tbaa !12
  br label %1858, !llvm.loop !129

2033:                                             ; preds = %1861
  br label %2034

2034:                                             ; preds = %2033, %1856, %1760, %1732
  br label %2035

2035:                                             ; preds = %2034
  store i8 0, ptr %157, align 1, !tbaa !12
  br label %1725, !llvm.loop !130

2036:                                             ; preds = %2030, %1853, %1752, %1733
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %157) #0
  br label %2041

2037:                                             ; preds = %1728
  br label %2038

2038:                                             ; preds = %2037
  store i8 0, ptr %157, align 1, !tbaa !12
  br label %1718, !llvm.loop !131

2039:                                             ; preds = %1721
  br label %2040

2040:                                             ; preds = %2039
  store i8 0, ptr %155, align 1, !tbaa !12
  br label %1708, !llvm.loop !132

2041:                                             ; preds = %2036, %1713
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %155) #0
  br label %2047

2042:                                             ; preds = %1712
  br label %2043

2043:                                             ; preds = %2042
  store i8 0, ptr %155, align 1, !tbaa !12
  br label %1700, !llvm.loop !133

2044:                                             ; preds = %1703
  br label %2045

2045:                                             ; preds = %2044, %1698
  br label %2046

2046:                                             ; preds = %2045
  store i8 0, ptr %153, align 1, !tbaa !12
  br label %1685, !llvm.loop !134

2047:                                             ; preds = %2041, %1693
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %153) #0
  br label %2053

2048:                                             ; preds = %1688
  br label %2049

2049:                                             ; preds = %2048
  store i8 0, ptr %153, align 1, !tbaa !12
  br label %1678, !llvm.loop !135

2050:                                             ; preds = %1681
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  br label %2051

2051:                                             ; preds = %2050
  %2052 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #0
  br label %276

2053:                                             ; preds = %2047, %1671, %1642
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %30) #0
  br label %2061

2054:                                             ; preds = %278
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %30) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %30) #0
  call void @llvm.lifetime.start.p0(i64 128, ptr %181) #0
  %2055 = load ptr, ptr %9, align 8, !tbaa !5
  %2056 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2055) #0
  %2057 = load ptr, ptr %8, align 8, !tbaa !5
  %2058 = getelementptr inbounds %"class.MIR::Function", ptr %2057, i32 0, i32 0
  %2059 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2058) #0
  invoke void @_ZN12_GLOBAL__N_18FcnStateC2Emm(ptr noundef nonnull align 8 dereferenceable(128) %181, i64 noundef %2056, i64 noundef %2059)
          to label %2060 unwind label %2062

2060:                                             ; preds = %2054
  call void @_ZN12_GLOBAL__N_18FcnStateD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %181) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %181) #0
  call void @_ZN12_GLOBAL__N_111BorrowStateD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %23) #0
  call void @llvm.lifetime.end.p0(i64 56, ptr %23) #0
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %16) #0
  call void @llvm.lifetime.end.p0(i64 120, ptr %16) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %13) #0
  ret void

2061:                                             ; preds = %2053, %300, %296
  call void @llvm.lifetime.end.p0(i64 40, ptr %30) #0
  br label %2066

2062:                                             ; preds = %2054
  %2063 = landingpad { ptr, i32 }
          cleanup
  %2064 = extractvalue { ptr, i32 } %2063, 0
  store ptr %2064, ptr %11, align 8
  %2065 = extractvalue { ptr, i32 } %2063, 1
  store i32 %2065, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 128, ptr %181) #0
  br label %2066

2066:                                             ; preds = %2062, %2061, %295
  call void @_ZN12_GLOBAL__N_111BorrowStateD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %23) #0
  br label %2067

2067:                                             ; preds = %2066, %279
  call void @llvm.lifetime.end.p0(i64 56, ptr %23) #0
  br label %2068

2068:                                             ; preds = %2067, %250, %238
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %16) #0
  br label %2069

2069:                                             ; preds = %2068, %237
  call void @llvm.lifetime.end.p0(i64 120, ptr %16) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #0
  br label %2070

2070:                                             ; preds = %2069, %225
  call void @llvm.lifetime.end.p0(i64 40, ptr %13) #0
  br label %2071

2071:                                             ; preds = %2070, %221
  %2072 = load ptr, ptr %11, align 8
  %2073 = load i32, ptr %12, align 4
  %2074 = insertvalue { ptr, i32 } poison, ptr %2072, 0
  %2075 = insertvalue { ptr, i32 } %2074, i32 %2073, 1
  resume { ptr, i32 } %2075

2076:                                             ; preds = %1116
  unreachable
}

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK9FmtLambda(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #1

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 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) #1 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111BorrowStateC2ERKN3MIR11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #2 align 2

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

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

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_EN1VC2ERKNS6_11TypeResolveERN12_GLOBAL__N_111BorrowStateE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #5

; 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(40) ptr @_ZN3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden i32 @_ZN12_GLOBAL__N_111BorrowState13borrow_lvalueEmN3HIR10BorrowTypeERKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) #1 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK3$_7clEm"(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #7 align 2

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

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

declare noundef nonnull align 8 dereferenceable(200) ptr @_ZNK3HIR5Crate16get_enum_by_pathERK4SpanRKNS_10SimplePathEbb(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext, i1 noundef zeroext) #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_17clESJ_"(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #7 align 2

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

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

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

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

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

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

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

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

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(24) ptr @_ZN3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112)) #2 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)) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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) #2 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZNK3MIR11TypeResolve14get_const_typeERKNS_8ConstantE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40)) #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152)) #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, ptr noundef) #5

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_18clESJ_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #7 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) #2 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) #5

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #5

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_18FcnStateC2Emm(ptr noundef nonnull align 8 dereferenceable(128), i64 noundef, i64 noundef) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_18FcnStateD2Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111BorrowStateD2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 align 2

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

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

attributes #0 = { nounwind }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { noreturn nounwind }
attributes #11 = { 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 = !{!"branch_weights", i32 1, i32 1048575}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{i8 0, i8 2}
!15 = !{}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = !{!20, !21, i64 0}
!20 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !21, i64 0, !22, i64 8}
!21 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!22 = !{!"_ZTSN3MIR6LValueE", !23, i64 0, !25, i64 8}
!23 = !{!"_ZTSN3MIR6LValue7StorageE", !24, i64 0}
!24 = !{!"long", !7, i64 0}
!25 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{i64 0, i64 4, !10}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = !{!24, !24, i64 0}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !17}
!38 = !{!39, !6, i64 0}
!39 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !40, i64 24, !48, i64 72, !54, i64 104, !54, i64 112, !54, i64 120, !54, i64 128, !54, i64 136, !54, i64 144, !54, i64 152, !54, i64 160, !54, i64 168, !54, i64 176, !54, i64 184, !54, i64 192, !54, i64 200, !54, i64 208}
!40 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !41, i64 0}
!41 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !42, i64 0}
!42 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !43, i64 0, !45, i64 8}
!43 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !44, i64 0}
!44 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!45 = !{!"_ZTSSt15_Rb_tree_header", !46, i64 0, !24, i64 32}
!46 = !{!"_ZTSSt18_Rb_tree_node_base", !47, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!47 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!48 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !49, i64 0, !53, i64 24}
!49 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!54 = !{!"_ZTSN3HIR10SimplePathE", !55, i64 0}
!55 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!56 = !{!57, !6, i64 8}
!57 = !{!"_ZTSN3MIR11TypeResolveE", !11, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !58, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !11, i64 112, !11, i64 116}
!58 = !{!"_ZTS9FmtLambda", !59, i64 0}
!59 = !{!"_ZTSSt8functionIFvRSoEE", !60, i64 0, !6, i64 24}
!60 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!61 = distinct !{!61, !17}
!62 = distinct !{!62, !17}
!63 = distinct !{!63, !17}
!64 = !{!65, !11, i64 32}
!65 = !{!"_ZTSN3MIR6RValue16Data_EnumVariantE", !66, i64 0, !11, i64 32, !71, i64 40}
!66 = !{!"_ZTSN3HIR11GenericPathE", !54, i64 0, !67, i64 8}
!67 = !{!"_ZTSN3HIR10PathParamsE", !68, i64 0, !69, i64 8, !70, i64 16}
!68 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!69 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!70 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!71 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!75 = distinct !{!75, !17}
!76 = distinct !{!76, !17}
!77 = distinct !{!77, !17}
!78 = distinct !{!78, !17}
!79 = distinct !{!79, !17}
!80 = distinct !{!80, !17}
!81 = distinct !{!81, !17}
!82 = distinct !{!82, !17}
!83 = distinct !{!83, !17}
!84 = distinct !{!84, !17}
!85 = distinct !{!85, !17}
!86 = distinct !{!86, !17}
!87 = distinct !{!87, !17}
!88 = distinct !{!88, !17}
!89 = distinct !{!89, !17}
!90 = distinct !{!90, !17}
!91 = distinct !{!91, !17}
!92 = distinct !{!92, !17}
!93 = distinct !{!93, !17}
!94 = distinct !{!94, !17}
!95 = distinct !{!95, !17}
!96 = distinct !{!96, !17}
!97 = distinct !{!97, !17}
!98 = distinct !{!98, !17}
!99 = distinct !{!99, !17}
!100 = distinct !{!100, !17}
!101 = distinct !{!101, !17}
!102 = distinct !{!102, !17}
!103 = distinct !{!103, !17}
!104 = distinct !{!104, !17}
!105 = distinct !{!105, !17}
!106 = distinct !{!106, !17}
!107 = distinct !{!107, !17}
!108 = distinct !{!108, !17}
!109 = distinct !{!109, !17}
!110 = distinct !{!110, !17}
!111 = distinct !{!111, !17}
!112 = distinct !{!112, !17}
!113 = distinct !{!113, !17}
!114 = distinct !{!114, !17}
!115 = distinct !{!115, !17}
!116 = distinct !{!116, !17}
!117 = distinct !{!117, !17}
!118 = distinct !{!118, !17}
!119 = distinct !{!119, !17}
!120 = distinct !{!120, !17}
!121 = distinct !{!121, !17}
!122 = distinct !{!122, !17}
!123 = distinct !{!123, !17}
!124 = distinct !{!124, !17}
!125 = distinct !{!125, !17}
!126 = distinct !{!126, !17}
!127 = distinct !{!127, !17}
!128 = distinct !{!128, !17}
!129 = distinct !{!129, !17}
!130 = distinct !{!130, !17}
!131 = distinct !{!131, !17}
!132 = distinct !{!132, !17}
!133 = distinct !{!133, !17}
!134 = distinct !{!134, !17}
!135 = distinct !{!135, !17}


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

%struct.Span = 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 = 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.14 = type { ptr }
%class.anon.34 = type { ptr }
%"class.(anonymous namespace)::BorrowState" = type { ptr, %"class.std::vector.35", %"class.std::vector.40" }
%"class.std::vector.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = type { %"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeInfo, std::allocator<(anonymous namespace)::BorrowState::LifetimeInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeInfo, std::allocator<(anonymous namespace)::BorrowState::LifetimeInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeInfo, std::allocator<(anonymous namespace)::BorrowState::LifetimeInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeInfo, std::allocator<(anonymous namespace)::BorrowState::LifetimeInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeIvar, std::allocator<(anonymous namespace)::BorrowState::LifetimeIvar>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeIvar, std::allocator<(anonymous namespace)::BorrowState::LifetimeIvar>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeIvar, std::allocator<(anonymous namespace)::BorrowState::LifetimeIvar>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::BorrowState::LifetimeIvar, std::allocator<(anonymous namespace)::BorrowState::LifetimeIvar>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.45 = type { i8 }
%class.anon.46 = type { i8 }
%struct.V = type { %"class.MIR::visit::VisitorMut", ptr, ptr }
%"class.MIR::visit::VisitorMut" = type { %"class.MIR::visit::VisitorBase" }
%"class.MIR::visit::VisitorBase" = type { ptr }
%class.anon.48 = type { i8 }
%class.anon.50 = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.94" = type { ptr }
%"class.HIR::TypeRef" = 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.343" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.343" = type { %"struct.std::_Vector_base.344" }
%"struct.std::_Vector_base.344" = 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.anon.348 = type { ptr, ptr, ptr }
%class.anon.349 = type { ptr, ptr, ptr, ptr }
%class.anon.360 = type { i8 }
%class.anon.362 = type { ptr }
%class.anon.363 = type { ptr, ptr, ptr }
%class.anon.364 = type { ptr }
%class.anon.368 = type { ptr }
%class.anon.369 = type { i8 }
%class.anon.371 = type { i8 }
%class.anon.373 = type { i8 }
%struct.MonomorphState = type { %class.MonomorphiserPP, %"class.HIR::TypeRef", ptr, ptr, %"struct.HIR::PathParams" }
%"struct.HIR::PathParams" = type { %class.ThinVector.84, %class.ThinVector.85, %class.ThinVector.86 }
%class.ThinVector.84 = type { ptr }
%class.ThinVector.85 = type { ptr }
%class.ThinVector.86 = type { ptr }
%"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.375 = type { ptr, ptr, ptr, ptr }
%class.anon.376 = type { i8 }
%"struct.(anonymous namespace)::FcnState" = type { %"struct.(anonymous namespace)::VarState", %"class.std::vector.411", %"class.std::vector.411", %"class.std::map.416", %"class.std::vector.411" }
%"struct.(anonymous namespace)::VarState" = type { i16, [2 x i8] }
%"class.std::map.416" = type { %"class.std::_Rb_tree.417" }
%"class.std::_Rb_tree.417" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, (anonymous namespace)::VarState>, std::_Select1st<std::pair<const HIR::Path, (anonymous namespace)::VarState>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, (anonymous namespace)::VarState>, std::_Select1st<std::pair<const HIR::Path, (anonymous namespace)::VarState>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.411" = type { %"struct.std::_Vector_base.412" }
%"struct.std::_Vector_base.412" = type { %"struct.std::_Vector_base<(anonymous namespace)::VarState, std::allocator<(anonymous namespace)::VarState>>::_Vector_impl" }
%"struct.std::_Vector_base<(anonymous namespace)::VarState, std::allocator<(anonymous namespace)::VarState>>::_Vector_impl" = type { %"struct.std::_Vector_base<(anonymous namespace)::VarState, std::allocator<(anonymous namespace)::VarState>>::_Vector_impl_data" }
%"struct.std::_Vector_base<(anonymous namespace)::VarState, std::allocator<(anonymous namespace)::VarState>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@__dso_handle = external hidden global i8
@_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp = external hidden global %struct.Span, align 8
@_ZGVZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp = external hidden global i64, align 8
@__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ = external hidden unnamed_addr constant [16 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [39 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [79 x i8], align 1
@__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ = external hidden unnamed_addr constant [150 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_(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 #1 personality ptr @__gxx_personality_v0 {
  %6 = alloca %class.TraceLog, align 8
  %7 = alloca %"class.std::function", align 8
  %8 = alloca %class.anon, align 8
  %9 = alloca %"class.MIR::TypeResolve", align 8
  %10 = alloca %struct.FmtLambda, align 8
  %11 = alloca %"class.std::function", align 8
  %12 = alloca %class.anon.14, align 8
  %13 = alloca %struct.FmtLambda, align 8
  %14 = alloca %"class.std::function", align 8
  %15 = alloca %class.anon.34, align 8
  %16 = alloca %"class.(anonymous namespace)::BorrowState", align 8
  %17 = alloca %class.TraceLog, align 8
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.45, align 1
  %20 = alloca %"class.std::function", align 8
  %21 = alloca %class.anon.46, align 1
  %22 = alloca %struct.V, align 8
  %23 = alloca %class.TraceLog, align 8
  %24 = alloca %"class.std::function", align 8
  %25 = alloca %class.anon.48, align 1
  %26 = alloca %"class.std::function", align 8
  %27 = alloca %class.anon.50, align 1
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.94", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.94", align 8
  %32 = alloca %"class.HIR::TypeRef", align 8
  %33 = alloca %"class.HIR::TypeRef", align 8
  %34 = alloca %"class.HIR::TypeRef", align 8
  %35 = alloca %"class.HIR::TypeRef", align 8
  %36 = alloca %"class.HIR::TypeRef", align 8
  %37 = alloca %"class.HIR::TypeRef", align 8
  %38 = alloca %"class.HIR::TypeRef", align 8
  %39 = alloca %struct.MonomorphStatePtr, align 8
  %40 = alloca %"class.HIR::TypeRef", align 8
  %41 = alloca %class.anon.348, align 8
  %42 = alloca %class.anon.349, align 8
  %43 = alloca %struct.MonomorphStatePtr, align 8
  %44 = alloca %"class.HIR::TypeRef", align 8
  %45 = alloca %"class.std::function", align 8
  %46 = alloca %class.anon.360, align 1
  %47 = alloca %"class.std::function", align 8
  %48 = alloca %class.anon.362, align 8
  %49 = alloca %struct.MonomorphStatePtr, align 8
  %50 = alloca %class.anon.363, align 8
  %51 = alloca %"class.std::function", align 8
  %52 = alloca %class.anon.364, align 8
  %53 = alloca %"class.std::function", align 8
  %54 = alloca %class.anon.368, align 8
  %55 = alloca %"class.std::function", align 8
  %56 = alloca %class.anon.369, align 1
  %57 = alloca %"class.HIR::TypeRef", align 8
  %58 = alloca %"class.std::function", align 8
  %59 = alloca %class.anon.371, align 1
  %60 = alloca %"class.HIR::TypeRef", align 8
  %61 = alloca %"class.HIR::TypeRef", align 8
  %62 = alloca %"class.HIR::TypeRef", align 8
  %63 = alloca %"class.HIR::TypeRef", align 8
  %64 = alloca %"class.HIR::TypeRef", align 8
  %65 = alloca %"class.HIR::TypeRef", align 8
  %66 = alloca %"class.std::function", align 8
  %67 = alloca %class.anon.373, align 1
  %68 = alloca %"class.HIR::TypeRef", align 8
  %69 = alloca %struct.MonomorphState, align 8
  %70 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %71 = alloca %class.anon.375, align 8
  %72 = alloca %"class.std::function", align 8
  %73 = alloca %class.anon.376, align 1
  %74 = alloca %"struct.(anonymous namespace)::FcnState", align 8
  %75 = load atomic i8, ptr @_ZGVZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp acquire, align 8
  %76 = icmp eq i8 %75, 0
  br i1 %76, label %77, label %81, !prof !5

77:                                               ; preds = %5
  %78 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp) #9
  %.not = icmp eq i32 %78, 0
  br i1 %.not, label %81, label %79

79:                                               ; preds = %77
  tail call void @_ZN4SpanC2Ev(ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp)
  %80 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN4SpanD1Ev, ptr nonnull @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp, ptr nonnull @__dso_handle) #9
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp) #9
  br label %81

81:                                               ; preds = %79, %77, %5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #9
  %82 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %83 = select i1 %82, ptr @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  store ptr %1, ptr %8, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %6, ptr noundef %83, ptr noundef nonnull %7)
          to label %84 unwind label %100

84:                                               ; preds = %81
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %9) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  store ptr %1, ptr %12, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %11)
          to label %85 unwind label %102

85:                                               ; preds = %84
  invoke void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp, ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull %10, 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 %86 unwind label %104

86:                                               ; preds = %85
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  %87 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %88 unwind label %107

88:                                               ; preds = %86
  br i1 %87, label %89, label %114

89:                                               ; preds = %88
  %90 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %91 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %90, ptr noundef nonnull @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %92 unwind label %107

92:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #9
  store ptr %2, ptr %15, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  invoke void @_ZN9FmtLambdaC2ESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull %14)
          to label %93 unwind label %109

93:                                               ; preds = %92
  %94 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK9FmtLambda(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %95 unwind label %111

95:                                               ; preds = %93
  %96 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %97 unwind label %111

97:                                               ; preds = %95
  %98 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %99 unwind label %111

99:                                               ; preds = %97
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %114

100:                                              ; preds = %81
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  br label %627

102:                                              ; preds = %84
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %106

104:                                              ; preds = %85
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %106

106:                                              ; preds = %104, %102
  %.pn = phi { ptr, i32 } [ %105, %104 ], [ %103, %102 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  br label %626

107:                                              ; preds = %89, %86
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %625

109:                                              ; preds = %92
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %113

111:                                              ; preds = %97, %95, %93
  %112 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9FmtLambdaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %113

113:                                              ; preds = %111, %109
  %.pn416 = phi { ptr, i32 } [ %112, %111 ], [ %110, %109 ]
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %625

114:                                              ; preds = %99, %88
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %16) #9
  call void @_ZN12_GLOBAL__N_111BorrowStateC2ERKN3MIR11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(120) %9)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %17) #9
  %115 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %116 unwind label %141

116:                                              ; preds = %114
  %117 = select i1 %115, ptr @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %17, ptr noundef %117, ptr noundef nonnull %18, ptr noundef nonnull %20)
          to label %118 unwind label %143

118:                                              ; preds = %116
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #9
  call void @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_EN1VC2ERKNS6_11TypeResolveERN12_GLOBAL__N_111BorrowStateE(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(56) %16)
  invoke void @_ZN3MIR5visit11VisitorBaseINS0_6DecMutEE14visit_functionERNS_11TypeResolveERNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(96) %2)
          to label %119 unwind label %145

119:                                              ; preds = %118
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %17) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %23) #9
  %120 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %121 unwind label %148

121:                                              ; preds = %119
  %122 = select i1 %120, ptr @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_, ptr null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 1 dereferenceable(1) %27) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %23, ptr noundef %122, ptr noundef nonnull %24, ptr noundef nonnull %26)
          to label %.split2711 unwind label %150

.split2711:                                       ; preds = %121
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  %123 = getelementptr inbounds i8, ptr %2, i64 64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #9
  %124 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %123) #9
  store ptr %124, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  %125 = call ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %123) #9
  store ptr %125, ptr %29, align 8
  %126 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br i1 %126, label %.split2672.lr.ph, label %._crit_edge2712

.split2672.lr.ph:                                 ; preds = %.split2711
  %127 = getelementptr inbounds i8, ptr %0, i64 8
  %128 = getelementptr inbounds i8, ptr %9, i64 8
  %129 = getelementptr inbounds i8, ptr %50, i64 8
  %130 = getelementptr inbounds i8, ptr %50, i64 16
  %131 = getelementptr inbounds i8, ptr %41, i64 8
  %132 = getelementptr inbounds i8, ptr %41, i64 16
  %133 = getelementptr inbounds i8, ptr %42, i64 8
  %134 = getelementptr inbounds i8, ptr %42, i64 16
  %135 = getelementptr inbounds i8, ptr %42, i64 24
  %136 = getelementptr inbounds i8, ptr %71, i64 8
  %137 = getelementptr inbounds i8, ptr %71, i64 16
  %138 = getelementptr inbounds i8, ptr %71, i64 24
  br label %.split2672

._crit_edge2712:                                  ; preds = %.loopexit575, %.split2711
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %74) #9
  %139 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %140 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  invoke void @_ZN12_GLOBAL__N_18FcnStateC2Emm(ptr noundef nonnull align 8 dereferenceable(128) %74, i64 noundef %139, i64 noundef %140)
          to label %620 unwind label %622

141:                                              ; preds = %114
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %147

143:                                              ; preds = %116
  %144 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  br label %147

145:                                              ; preds = %118
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #9
  br label %147

147:                                              ; preds = %145, %143, %141
  %.pn418 = phi { ptr, i32 } [ %146, %145 ], [ %144, %143 ], [ %142, %141 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %17) #9
  br label %624

148:                                              ; preds = %119
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %621

150:                                              ; preds = %121
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  br label %621

.split2672:                                       ; preds = %.split2672.lr.ph, %.loopexit575
  %152 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  %153 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #9
  store ptr %153, ptr %30, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #9
  %154 = call ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #9
  store ptr %154, ptr %31, align 8
  %155 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  %156 = ptrtoint ptr %152 to i64
  br i1 %155, label %.lr.ph2673, label %._crit_edge2674

._crit_edge2674:                                  ; preds = %.loopexit574, %.split2672
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  %157 = call noundef ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %123) #9
  %158 = ptrtoint ptr %157 to i64
  %159 = sub i64 %156, %158
  %160 = sdiv exact i64 %159, 192
  %161 = trunc i64 %160 to i32
  call void @_ZN3MIR11TypeResolve17set_cur_stmt_termEj(ptr noundef nonnull align 8 dereferenceable(120) %9, i32 noundef %161)
  %162 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %474 unwind label %487

.lr.ph2673:                                       ; preds = %.split2672, %.loopexit574
  %163 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  %164 = call noundef ptr @_ZNSt6vectorIN3MIR10BasicBlockESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %123) #9
  %165 = ptrtoint ptr %164 to i64
  %166 = sub i64 %156, %165
  %167 = sdiv exact i64 %166, 192
  %168 = trunc i64 %167 to i32
  %169 = call noundef ptr @_ZNSt6vectorIN3MIR9StatementESaIS1_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #9
  %170 = ptrtoint ptr %163 to i64
  %171 = ptrtoint ptr %169 to i64
  %172 = sub i64 %170, %171
  %173 = sdiv exact i64 %172, 152
  %174 = trunc i64 %173 to i32
  call void @_ZN3MIR11TypeResolve12set_cur_stmtEjj(ptr noundef nonnull align 8 dereferenceable(120) %9, i32 noundef %168, i32 noundef %174)
  %175 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %176 unwind label %188

176:                                              ; preds = %.lr.ph2673
  br i1 %175, label %177, label %.lr.ph2669

177:                                              ; preds = %176
  %178 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %178, ptr noundef nonnull @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %180 unwind label %188

180:                                              ; preds = %177
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef nonnull align 8 dereferenceable(120) %9)
          to label %182 unwind label %188

182:                                              ; preds = %180
  %183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_9StatementE(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(152) %163)
          to label %184 unwind label %188

184:                                              ; preds = %182
  %185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %186 unwind label %188

186:                                              ; preds = %184
  %187 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.lr.ph2669 unwind label %188

188:                                              ; preds = %186, %184, %182, %180, %177, %.lr.ph2673
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %473

.loopexit574:                                     ; preds = %.preheader569, %.preheader567, %.preheader565, %.preheader563, %.preheader561, %.preheader534, %.preheader532, %.preheader528, %.preheader526, %.lr.ph2669, %.lr.ph, %..loopexit495_crit_edge, %..loopexit496_crit_edge, %..loopexit497_crit_edge, %..loopexit498_crit_edge, %..loopexit504_crit_edge, %..loopexit507_crit_edge, %..loopexit508_crit_edge, %..loopexit499_crit_edge, %..loopexit500_crit_edge, %..loopexit501_crit_edge
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  %191 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR9StatementESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  br i1 %191, label %.lr.ph2673, label %._crit_edge2674

.lr.ph2669:                                       ; preds = %186, %176
  %192 = call noundef i32 @_ZNK3MIR9Statement3tagEv(ptr noundef nonnull align 8 dereferenceable(152) %163)
  switch i32 %192, label %.loopexit574 [
    i32 0, label %198
    i32 1, label %.lr.ph
    i32 4, label %.preheader561
    i32 6, label %.preheader563
    i32 5, label %.preheader565
    i32 2, label %.preheader567
    i32 3, label %.preheader569
  ]

.preheader569:                                    ; preds = %.lr.ph2669
  %193 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR9Statement7as_Asm2Ev(ptr noundef nonnull align 8 dereferenceable(152) %163)
  br label %.loopexit574

.preheader567:                                    ; preds = %.lr.ph2669
  %194 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZN3MIR9Statement6as_AsmEv(ptr noundef nonnull align 8 dereferenceable(152) %163)
  br label %.loopexit574

.preheader565:                                    ; preds = %.lr.ph2669
  %195 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN3MIR9Statement7as_DropEv(ptr noundef nonnull align 8 dereferenceable(152) %163)
  br label %.loopexit574

.preheader563:                                    ; preds = %.lr.ph2669
  %196 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR9Statement11as_ScopeEndEv(ptr noundef nonnull align 8 dereferenceable(152) %163)
  br label %.loopexit574

.preheader561:                                    ; preds = %.lr.ph2669
  %197 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152) %163)
  br label %.loopexit574

198:                                              ; preds = %.lr.ph2669
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 579, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

.lr.ph:                                           ; preds = %.lr.ph2669
  %199 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3MIR9Statement9as_AssignEv(ptr noundef nonnull align 8 dereferenceable(152) %163)
  %200 = getelementptr inbounds i8, ptr %199, i64 32
  %201 = call noundef i32 @_ZNK3MIR6RValue3tagEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  switch i32 %201, label %.loopexit574 [
    i32 0, label %214
    i32 1, label %.preheader512
    i32 2, label %.preheader514
    i32 12, label %.preheader516
    i32 4, label %.preheader518
    i32 15, label %.lr.ph1744
    i32 14, label %.lr.ph1737
    i32 13, label %386
    i32 11, label %.lr.ph1565
    i32 9, label %.preheader526
    i32 8, label %.preheader528
    i32 10, label %.preheader530
    i32 7, label %.preheader532
    i32 6, label %.preheader534
    i32 3, label %.preheader536
    i32 5, label %.preheader538
  ]

.preheader538:                                    ; preds = %.lr.ph
  %202 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue7as_CastEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %450 unwind label %.split.split

.preheader536:                                    ; preds = %.lr.ph
  %203 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #9
  invoke void @_ZNK3MIR11TypeResolve14get_const_typeERKNS_8ConstantE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %62, ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(40) %203)
          to label %446 unwind label %.split1024.split

.preheader534:                                    ; preds = %.lr.ph
  %204 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZN3MIR6RValue8as_BinOpEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  br label %.loopexit574

.preheader532:                                    ; preds = %.lr.ph
  %205 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN3MIR6RValue8as_UniOpEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  br label %.loopexit574

.preheader530:                                    ; preds = %.lr.ph
  %206 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN3MIR6RValue10as_MakeDstEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %423 unwind label %.split1279.split

.preheader528:                                    ; preds = %.lr.ph
  %207 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue10as_DstMetaEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  br label %.loopexit574

.preheader526:                                    ; preds = %.lr.ph
  %208 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue9as_DstPtrEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  br label %.loopexit574

.preheader518:                                    ; preds = %.lr.ph
  %209 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3MIR6RValue13as_SizedArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %255 unwind label %.split1811.split

.preheader516:                                    ; preds = %.lr.ph
  %210 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %239 unwind label %.split2012.split

.preheader514:                                    ; preds = %.lr.ph
  %211 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  %212 = getelementptr inbounds i8, ptr %211, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %221 unwind label %.split2223.split

.preheader512:                                    ; preds = %.lr.ph
  %213 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6RValue6as_UseEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %215 unwind label %.split2453.split

214:                                              ; preds = %.lr.ph
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 581, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

215:                                              ; preds = %.preheader512
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(32) %213, i32 noundef 0)
          to label %217 unwind label %.split2456.split

217:                                              ; preds = %215
  invoke void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef nonnull align 8 dereferenceable(8) %216)
          to label %..loopexit495_crit_edge unwind label %.split2456.split

..loopexit495_crit_edge:                          ; preds = %217
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  br label %.loopexit574

.split2453.split:                                 ; preds = %.preheader512
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %220

.split2456.split:                                 ; preds = %217, %215
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  br label %220

220:                                              ; preds = %.split2456.split, %.split2453.split
  %.pn475 = phi { ptr, i32 } [ %219, %.split2456.split ], [ %218, %.split2453.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  br label %473

221:                                              ; preds = %.preheader514
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #9
  %222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(32) %212, i32 noundef 0)
          to label %223 unwind label %.split2226.split

223:                                              ; preds = %221
  invoke void @_ZNK3HIR7TypeRef13clone_shallowEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %34, ptr noundef nonnull align 8 dereferenceable(8) %222)
          to label %224 unwind label %.split2226.split

224:                                              ; preds = %223
  %225 = load i32, ptr %211, align 8, !tbaa !12
  %226 = invoke i32 @_ZN12_GLOBAL__N_111BorrowState13borrow_lvalueEmN3HIR10BorrowTypeERKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(56) %16, i64 noundef 0, i32 noundef %225, ptr noundef nonnull align 8 dereferenceable(32) %212)
          to label %227 unwind label %.split2229.split

227:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #9
  %228 = load i32, ptr %211, align 8, !tbaa !12
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %34)
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_NS_11LifetimeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %35, i32 noundef %228, ptr noundef nonnull %36, i32 %226)
          to label %229 unwind label %.split2232.split

229:                                              ; preds = %227
  invoke void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %..loopexit496_crit_edge unwind label %.split2235.split

..loopexit496_crit_edge:                          ; preds = %229
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %.loopexit574

.split2223.split:                                 ; preds = %.preheader514
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %238

.split2226.split:                                 ; preds = %223, %221
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %237

.split2229.split:                                 ; preds = %224
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %236

.split2232.split:                                 ; preds = %227
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %235

.split2235.split:                                 ; preds = %229
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  br label %235

235:                                              ; preds = %.split2235.split, %.split2232.split
  %.pn470 = phi { ptr, i32 } [ %234, %.split2235.split ], [ %233, %.split2232.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  br label %236

236:                                              ; preds = %235, %.split2229.split
  %.pn470.pn = phi { ptr, i32 } [ %.pn470, %235 ], [ %232, %.split2229.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br label %237

237:                                              ; preds = %236, %.split2226.split
  %.pn470.pn.pn = phi { ptr, i32 } [ %.pn470.pn, %236 ], [ %231, %.split2226.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  br label %238

238:                                              ; preds = %237, %.split2223.split
  %.pn470.pn.pn.pn = phi { ptr, i32 } [ %.pn470.pn.pn, %237 ], [ %230, %.split2223.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %473

239:                                              ; preds = %.preheader516
  %240 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(32) %199, i32 noundef 0)
          to label %241 unwind label %.split2015.split

241:                                              ; preds = %239
  %242 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %240)
  %243 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %242)
  %244 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %210) #9
  %.not2717 = icmp eq i64 %244, 0
  br i1 %.not2717, label %..loopexit497_crit_edge, label %.lr.ph2007

..loopexit497_crit_edge:                          ; preds = %248, %241
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  br label %.loopexit574

.split2012.split:                                 ; preds = %.preheader516
  %245 = landingpad { ptr, i32 }
          cleanup
  br label %254

.split2015.split:                                 ; preds = %239
  %246 = landingpad { ptr, i32 }
          cleanup
  br label %253

.lr.ph2007:                                       ; preds = %241, %248
  %.03652005 = phi i64 [ %249, %248 ], [ 0, %241 ]
  %247 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %210, i64 noundef %.03652005) #9
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef nonnull align 8 dereferenceable(48) %247, i64 noundef %.03652005)
          to label %248 unwind label %.split2018.split

248:                                              ; preds = %.lr.ph2007
  %249 = add nuw i64 %.03652005, 1
  %250 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %210) #9
  %251 = icmp ult i64 %249, %250
  br i1 %251, label %.lr.ph2007, label %..loopexit497_crit_edge, !llvm.loop !22

.split2018.split:                                 ; preds = %.lr.ph2007
  %252 = landingpad { ptr, i32 }
          cleanup
  br label %253

253:                                              ; preds = %.split2018.split, %.split2015.split
  %.pn467 = phi { ptr, i32 } [ %252, %.split2018.split ], [ %246, %.split2015.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  br label %254

254:                                              ; preds = %253, %.split2012.split
  %.pn467.pn = phi { ptr, i32 } [ %.pn467, %253 ], [ %245, %.split2012.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  br label %473

255:                                              ; preds = %.preheader518
  %256 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(32) %199, i32 noundef 0)
          to label %257 unwind label %.split1814.split

257:                                              ; preds = %255
  %258 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %256)
  %259 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %258)
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef nonnull align 8 dereferenceable(48) %209, i64 noundef 0)
          to label %..loopexit498_crit_edge unwind label %.split1814.split

..loopexit498_crit_edge:                          ; preds = %257
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  br label %.loopexit574

.split1811.split:                                 ; preds = %.preheader518
  %260 = landingpad { ptr, i32 }
          cleanup
  br label %262

.split1814.split:                                 ; preds = %257, %255
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  br label %262

262:                                              ; preds = %.split1814.split, %.split1811.split
  %.pn465 = phi { ptr, i32 } [ %261, %.split1814.split ], [ %260, %.split1811.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  br label %473

.lr.ph1744:                                       ; preds = %.lr.ph
  %263 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN3MIR6RValue9as_StructEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  %264 = getelementptr inbounds i8, ptr %263, i64 32
  %265 = load ptr, ptr %127, align 8, !tbaa !24
  %266 = load ptr, ptr %128, align 8, !tbaa !42
  %267 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %265, ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef nonnull align 8 dereferenceable(8) %263)
          to label %268 unwind label %.split1746

268:                                              ; preds = %.lr.ph1744
  %269 = getelementptr inbounds i8, ptr %263, i64 8
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %39) #9
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %39, ptr noundef null, ptr noundef nonnull %269, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %270 unwind label %.split1749

270:                                              ; preds = %268
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %271 unwind label %.split1752

271:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %41) #9
  store ptr %0, ptr %41, align 8, !tbaa !6
  store ptr %40, ptr %131, align 8, !tbaa !6
  store ptr %39, ptr %132, align 8, !tbaa !6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #9
  store ptr %267, ptr %42, align 8, !tbaa !6
  store ptr %9, ptr %133, align 8, !tbaa !6
  store ptr %263, ptr %134, align 8, !tbaa !6
  store ptr %41, ptr %135, align 8, !tbaa !6
  %272 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #9
  %.not2716 = icmp eq i64 %272, 0
  br i1 %.not2716, label %..loopexit499_crit_edge, label %.lr.ph1741

..loopexit499_crit_edge:                          ; preds = %279, %271
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %39) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %39) #9
  br label %.loopexit574

.split1746:                                       ; preds = %.lr.ph1744
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %473

.split1749:                                       ; preds = %268
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %285

.split1752:                                       ; preds = %270
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %284

.lr.ph1741:                                       ; preds = %271, %279
  %.03761739 = phi i64 [ %280, %279 ], [ 0, %271 ]
  %276 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK3$_7clEm"(ptr noundef nonnull align 8 dereferenceable(32) %42, i64 noundef %.03761739)
          to label %277 unwind label %.split1755

277:                                              ; preds = %.lr.ph1741
  %278 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %.03761739) #9
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(8) %276, ptr noundef nonnull align 8 dereferenceable(48) %278, i64 noundef %.03761739)
          to label %279 unwind label %.split1755

279:                                              ; preds = %277
  %280 = add nuw i64 %.03761739, 1
  %281 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #9
  %282 = icmp ult i64 %280, %281
  br i1 %282, label %.lr.ph1741, label %..loopexit499_crit_edge, !llvm.loop !47

.split1755:                                       ; preds = %277, %.lr.ph1741
  %283 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  br label %284

284:                                              ; preds = %.split1755, %.split1752
  %.pn461 = phi { ptr, i32 } [ %283, %.split1755 ], [ %275, %.split1752 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %39) #9
  br label %285

285:                                              ; preds = %284, %.split1749
  %.pn461.pn = phi { ptr, i32 } [ %.pn461, %284 ], [ %274, %.split1749 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %39) #9
  br label %473

.lr.ph1737:                                       ; preds = %.lr.ph
  %286 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3MIR6RValue14as_EnumVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  %287 = getelementptr inbounds i8, ptr %286, i64 8
  %288 = getelementptr inbounds i8, ptr %286, i64 40
  %289 = getelementptr inbounds i8, ptr %286, i64 32
  %290 = load ptr, ptr %127, align 8, !tbaa !24
  %291 = load ptr, ptr %128, align 8, !tbaa !42
  %292 = invoke noundef nonnull align 8 dereferenceable(200) ptr @_ZNK3HIR5Crate16get_enum_by_pathERK4SpanRKNS_10SimplePathEbb(ptr noundef nonnull align 8 dereferenceable(944) %290, ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull align 8 dereferenceable(8) %286, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %293 unwind label %302

293:                                              ; preds = %.lr.ph1737
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %43) #9
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %43, ptr noundef null, ptr noundef nonnull %287, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %294 unwind label %304

294:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %295 unwind label %306

295:                                              ; preds = %294
  %296 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %288) #9
  %.not447 = icmp eq i64 %296, 0
  br i1 %.not447, label %..loopexit500_crit_edge, label %297

297:                                              ; preds = %295
  %298 = getelementptr inbounds i8, ptr %292, i64 104
  %299 = call noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %298)
  br i1 %299, label %310, label %300

300:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 1 dereferenceable(1) %46) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull %45)
          to label %301 unwind label %308

301:                                              ; preds = %300
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #9
  br label %310

302:                                              ; preds = %.lr.ph1737
  %303 = landingpad { ptr, i32 }
          cleanup
  br label %473

304:                                              ; preds = %293
  %305 = landingpad { ptr, i32 }
          cleanup
  br label %385

306:                                              ; preds = %294
  %307 = landingpad { ptr, i32 }
          cleanup
  br label %384

308:                                              ; preds = %300
  %309 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #9
  br label %383

310:                                              ; preds = %301, %297
  %311 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %298)
  %312 = load i32, ptr %289, align 8, !tbaa !48
  %313 = zext i32 %312 to i64
  %314 = call noundef i64 @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %311) #9
  %315 = icmp ugt i64 %314, %313
  br i1 %315, label %320, label %316

316:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #9
  store ptr %286, ptr %48, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull %47)
          to label %317 unwind label %318

317:                                              ; preds = %316
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  br label %320

318:                                              ; preds = %316
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  br label %383

320:                                              ; preds = %317, %310
  %321 = load i32, ptr %289, align 8, !tbaa !48
  %322 = zext i32 %321 to i64
  %323 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef %322) #9
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %49) #9
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %49, ptr noundef null, ptr noundef nonnull %287, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %324 unwind label %327

324:                                              ; preds = %320
  %325 = getelementptr inbounds i8, ptr %323, i64 16
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK18StaticTraitResolve20monomorph_expand_optERK4SpanRN3HIR7TypeRefERKS4_RK13Monomorphiser(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_E2sp, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %325, ptr noundef nonnull align 8 dereferenceable(96) %49)
          to label %.lr.ph1733 unwind label %329

.loopexit494:                                     ; preds = %377, %362, %.preheader, %.lr.ph1733, %355, %370
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %50) #9
  br label %..loopexit500_crit_edge

327:                                              ; preds = %320
  %328 = landingpad { ptr, i32 }
          cleanup
  br label %331

329:                                              ; preds = %324
  %330 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %49) #9
  br label %331

331:                                              ; preds = %329, %327
  %.pn448 = phi { ptr, i32 } [ %330, %329 ], [ %328, %327 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %49) #9
  br label %383

.lr.ph1733:                                       ; preds = %324
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %49) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %49) #9
  %332 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %326)
  %333 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %332)
  %334 = getelementptr inbounds i8, ptr %333, i64 88
  %335 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %334)
  %336 = load ptr, ptr %335, align 8, !tbaa !6
  %337 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %326)
  %338 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %337)
  %339 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %338)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %50) #9
  store ptr %0, ptr %50, align 8, !tbaa !6
  store ptr %44, ptr %129, align 8, !tbaa !6
  store ptr %339, ptr %130, align 8, !tbaa !6
  %340 = getelementptr inbounds i8, ptr %336, i64 104
  %341 = call noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %340)
  switch i32 %341, label %.loopexit494 [
    i32 0, label %351
    i32 1, label %.preheader
    i32 2, label %.preheader490
    i32 3, label %.preheader492
  ]

.preheader492:                                    ; preds = %.lr.ph1733
  %342 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %340)
  %343 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %342) #9
  %344 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %288) #9
  %345 = icmp eq i64 %343, %344
  br i1 %345, label %370, label %367

.preheader490:                                    ; preds = %.lr.ph1733
  %346 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %340)
  %347 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %346) #9
  %348 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %288) #9
  %349 = icmp eq i64 %347, %348
  br i1 %349, label %355, label %352

.preheader:                                       ; preds = %.lr.ph1733
  %350 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %340)
  br label %.loopexit494

351:                                              ; preds = %.lr.ph1733
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 651, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

352:                                              ; preds = %.preheader490
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #9
  store ptr %286, ptr %52, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull %51)
          to label %353 unwind label %.split1645.split

353:                                              ; preds = %352
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  br label %355

.split1645.split:                                 ; preds = %352
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #9
  br label %382

355:                                              ; preds = %353, %.preheader490
  %356 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %288) #9
  %.not2715 = icmp eq i64 %356, 0
  br i1 %.not2715, label %.loopexit494, label %.lr.ph1641

.lr.ph1641:                                       ; preds = %355, %362
  %.03931639 = phi i64 [ %363, %362 ], [ 0, %355 ]
  %357 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %346, i64 noundef %.03931639) #9
  %358 = getelementptr inbounds i8, ptr %357, i64 16
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_17clESJ_"(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 8 dereferenceable(8) %358)
          to label %360 unwind label %.split1648.split

360:                                              ; preds = %.lr.ph1641
  %361 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %288, i64 noundef %.03931639) #9
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef nonnull align 8 dereferenceable(48) %361, i64 noundef %.03931639)
          to label %362 unwind label %.split1648.split

362:                                              ; preds = %360
  %363 = add nuw i64 %.03931639, 1
  %364 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %288) #9
  %365 = icmp ult i64 %363, %364
  br i1 %365, label %.lr.ph1641, label %.loopexit494, !llvm.loop !59

.split1648.split:                                 ; preds = %360, %.lr.ph1641
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %382

367:                                              ; preds = %.preheader492
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #9
  store ptr %286, ptr %54, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull %53)
          to label %368 unwind label %.split1573.split

368:                                              ; preds = %367
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #9
  br label %370

.split1573.split:                                 ; preds = %367
  %369 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #9
  br label %382

370:                                              ; preds = %368, %.preheader492
  %371 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %288) #9
  %.not2714 = icmp eq i64 %371, 0
  br i1 %.not2714, label %.loopexit494, label %.lr.ph1569

.lr.ph1569:                                       ; preds = %370, %377
  %.03981567 = phi i64 [ %378, %377 ], [ 0, %370 ]
  %372 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %342, i64 noundef %.03981567) #9
  %373 = getelementptr inbounds i8, ptr %372, i64 24
  %374 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_17clESJ_"(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 8 dereferenceable(8) %373)
          to label %375 unwind label %.split1576.split

375:                                              ; preds = %.lr.ph1569
  %376 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %288, i64 noundef %.03981567) #9
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(8) %374, ptr noundef nonnull align 8 dereferenceable(48) %376, i64 noundef %.03981567)
          to label %377 unwind label %.split1576.split

377:                                              ; preds = %375
  %378 = add nuw i64 %.03981567, 1
  %379 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %288) #9
  %380 = icmp ult i64 %378, %379
  br i1 %380, label %.lr.ph1569, label %.loopexit494, !llvm.loop !60

.split1576.split:                                 ; preds = %375, %.lr.ph1569
  %381 = landingpad { ptr, i32 }
          cleanup
  br label %382

382:                                              ; preds = %.split1573.split, %.split1576.split, %.split1645.split, %.split1648.split
  %.pn450.pn = phi { ptr, i32 } [ %366, %.split1648.split ], [ %354, %.split1645.split ], [ %381, %.split1576.split ], [ %369, %.split1573.split ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %50) #9
  br label %383

..loopexit500_crit_edge:                          ; preds = %.loopexit494, %295
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %43) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %43) #9
  br label %.loopexit574

383:                                              ; preds = %318, %382, %331, %308
  %.pn450.pn.pn.pn.pn = phi { ptr, i32 } [ %309, %308 ], [ %319, %318 ], [ %.pn450.pn, %382 ], [ %.pn448, %331 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #9
  br label %384

384:                                              ; preds = %383, %306
  %.pn450.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn450.pn.pn.pn.pn, %383 ], [ %307, %306 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %43) #9
  br label %385

385:                                              ; preds = %384, %304
  %.pn450.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn450.pn.pn.pn.pn.pn, %384 ], [ %305, %304 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %43) #9
  br label %473

386:                                              ; preds = %.lr.ph
  %387 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR6RValue15as_UnionVariantEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 1 dereferenceable(1) %56) #9
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull %55)
          to label %390 unwind label %392

388:                                              ; preds = %390
  %389 = landingpad { ptr, i32 }
          cleanup
  br label %473

390:                                              ; preds = %386
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #9
  %391 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.2, ptr %391, align 16, !tbaa !6
  invoke void @__cxa_throw(ptr nonnull %391, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %628 unwind label %388

392:                                              ; preds = %386
  %393 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #9
  br label %473

.lr.ph1565:                                       ; preds = %.lr.ph
  %394 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112) %200)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %395 unwind label %405

395:                                              ; preds = %.lr.ph1565
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(32) %199, i32 noundef 0)
          to label %397 unwind label %407

397:                                              ; preds = %395
  %398 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %396)
  %399 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %398)
  %400 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %399) #9
  %401 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %394) #9
  %402 = icmp eq i64 %400, %401
  br i1 %402, label %411, label %403

403:                                              ; preds = %397
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 1 dereferenceable(1) %59) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull %58)
          to label %404 unwind label %409

404:                                              ; preds = %403
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #9
  br label %411

405:                                              ; preds = %.lr.ph1565
  %406 = landingpad { ptr, i32 }
          cleanup
  br label %422

407:                                              ; preds = %395
  %408 = landingpad { ptr, i32 }
          cleanup
  br label %421

409:                                              ; preds = %403
  %410 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #9
  br label %421

411:                                              ; preds = %404, %397
  %412 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %394) #9
  %.not2713 = icmp eq i64 %412, 0
  br i1 %.not2713, label %..loopexit501_crit_edge, label %.lr.ph1563

..loopexit501_crit_edge:                          ; preds = %415, %411
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #9
  br label %.loopexit574

.lr.ph1563:                                       ; preds = %411, %415
  %.04081562 = phi i64 [ %416, %415 ], [ 0, %411 ]
  %413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %399, i64 noundef %.04081562) #9
  %414 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef %.04081562) #9
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(8) %413, ptr noundef nonnull align 8 dereferenceable(48) %414, i64 noundef %.04081562)
          to label %415 unwind label %419

415:                                              ; preds = %.lr.ph1563
  %416 = add nuw i64 %.04081562, 1
  %417 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %394) #9
  %418 = icmp ult i64 %416, %417
  br i1 %418, label %.lr.ph1563, label %..loopexit501_crit_edge, !llvm.loop !61

419:                                              ; preds = %.lr.ph1563
  %420 = landingpad { ptr, i32 }
          cleanup
  br label %421

421:                                              ; preds = %409, %419, %407
  %.pn441.pn = phi { ptr, i32 } [ %408, %407 ], [ %420, %419 ], [ %410, %409 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #9
  br label %422

422:                                              ; preds = %421, %405
  %.pn441.pn.pn = phi { ptr, i32 } [ %.pn441.pn, %421 ], [ %406, %405 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #9
  br label %473

423:                                              ; preds = %.preheader530
  %424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(32) %199, i32 noundef 0)
          to label %425 unwind label %.split1282.split

425:                                              ; preds = %423
  %426 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %424)
  %427 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %426)
  br i1 %427, label %428, label %..loopexit504_crit_edge

428:                                              ; preds = %425
  %429 = call noundef zeroext i1 @_ZNK3MIR5Param9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(48) %206)
  br i1 %429, label %..loopexit504_crit_edge, label %432

.split1279.split:                                 ; preds = %.preheader530
  %430 = landingpad { ptr, i32 }
          cleanup
  br label %445

.split1282.split:                                 ; preds = %423
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %444

432:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %433 unwind label %.split1285.split

433:                                              ; preds = %432
  %434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve14get_param_typeERN3HIR7TypeRefERKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(48) %206)
          to label %435 unwind label %.split1288.split

435:                                              ; preds = %433
  %436 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %424)
  %437 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %436)
  %438 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %434)
  %439 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %438)
  invoke void @_ZN12_GLOBAL__N_111BorrowState15lifetime_assignERKN3HIR11LifetimeRefES4_(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 4 dereferenceable(4) %437, ptr noundef nonnull align 4 dereferenceable(4) %439)
          to label %440 unwind label %.split1288.split

440:                                              ; preds = %435
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #9
  br label %..loopexit504_crit_edge

.split1285.split:                                 ; preds = %432
  %441 = landingpad { ptr, i32 }
          cleanup
  br label %443

.split1288.split:                                 ; preds = %435, %433
  %442 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #9
  br label %443

443:                                              ; preds = %.split1288.split, %.split1285.split
  %.pn437 = phi { ptr, i32 } [ %442, %.split1288.split ], [ %441, %.split1285.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #9
  br label %444

..loopexit504_crit_edge:                          ; preds = %440, %428, %425
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #9
  br label %.loopexit574

444:                                              ; preds = %443, %.split1282.split
  %.pn437.pn = phi { ptr, i32 } [ %.pn437, %443 ], [ %431, %.split1282.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #9
  br label %445

445:                                              ; preds = %444, %.split1279.split
  %.pn437.pn.pn = phi { ptr, i32 } [ %.pn437.pn, %444 ], [ %430, %.split1279.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #9
  br label %473

446:                                              ; preds = %.preheader536
  invoke void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %..loopexit507_crit_edge unwind label %.split1027.split

..loopexit507_crit_edge:                          ; preds = %446
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #9
  br label %.loopexit574

.split1024.split:                                 ; preds = %.preheader536
  %447 = landingpad { ptr, i32 }
          cleanup
  br label %449

.split1027.split:                                 ; preds = %446
  %448 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  br label %449

449:                                              ; preds = %.split1027.split, %.split1024.split
  %.pn435 = phi { ptr, i32 } [ %448, %.split1027.split ], [ %447, %.split1024.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #9
  br label %473

450:                                              ; preds = %.preheader538
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(32) %199, i32 noundef 0)
          to label %452 unwind label %.split869.split

452:                                              ; preds = %450
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %453 unwind label %.split872.split

453:                                              ; preds = %452
  %454 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(32) %202, i32 noundef 0)
          to label %455 unwind label %.split875.split

455:                                              ; preds = %453
  %456 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %451)
  %457 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %456)
  br i1 %457, label %458, label %..loopexit508_crit_edge

458:                                              ; preds = %455
  %459 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %454)
  %460 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %459)
  br i1 %460, label %461, label %..loopexit508_crit_edge

461:                                              ; preds = %458
  %462 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %451)
  %463 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %462)
  %464 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %454)
  %465 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  invoke void @_ZN12_GLOBAL__N_111BorrowState15lifetime_assignERKN3HIR11LifetimeRefES4_(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 4 dereferenceable(4) %463, ptr noundef nonnull align 4 dereferenceable(4) %465)
          to label %..loopexit508_crit_edge unwind label %.split875.split

.split.split:                                     ; preds = %.preheader538
  %466 = landingpad { ptr, i32 }
          cleanup
  br label %472

.split869.split:                                  ; preds = %450
  %467 = landingpad { ptr, i32 }
          cleanup
  br label %471

.split872.split:                                  ; preds = %452
  %468 = landingpad { ptr, i32 }
          cleanup
  br label %470

.split875.split:                                  ; preds = %461, %453
  %469 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  br label %470

..loopexit508_crit_edge:                          ; preds = %461, %458, %455
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #9
  br label %.loopexit574

470:                                              ; preds = %.split875.split, %.split872.split
  %.pn431 = phi { ptr, i32 } [ %469, %.split875.split ], [ %468, %.split872.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #9
  br label %471

471:                                              ; preds = %470, %.split869.split
  %.pn431.pn = phi { ptr, i32 } [ %.pn431, %470 ], [ %467, %.split869.split ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #9
  br label %472

472:                                              ; preds = %471, %.split.split
  %.pn431.pn.pn = phi { ptr, i32 } [ %.pn431.pn, %471 ], [ %466, %.split.split ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #9
  br label %473

473:                                              ; preds = %220, %238, %254, %262, %422, %445, %449, %472, %285, %.split1746, %385, %302, %392, %388, %188
  %.pn431.pn.pn.pn.pn = phi { ptr, i32 } [ %189, %188 ], [ %.pn431.pn.pn, %472 ], [ %.pn435, %449 ], [ %.pn437.pn.pn, %445 ], [ %.pn441.pn.pn, %422 ], [ %.pn465, %262 ], [ %.pn467.pn, %254 ], [ %.pn470.pn.pn.pn, %238 ], [ %.pn475, %220 ], [ %.pn461.pn, %285 ], [ %273, %.split1746 ], [ %.pn450.pn.pn.pn.pn.pn.pn, %385 ], [ %303, %302 ], [ %389, %388 ], [ %393, %392 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  br label %619

474:                                              ; preds = %._crit_edge2674
  br i1 %162, label %475, label %.lr.ph2708

475:                                              ; preds = %474
  %476 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %477 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %476, ptr noundef nonnull @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %478 unwind label %487

478:                                              ; preds = %475
  %479 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(8) %477, ptr noundef nonnull align 8 dereferenceable(120) %9)
          to label %480 unwind label %487

480:                                              ; preds = %478
  %481 = getelementptr inbounds i8, ptr %152, i64 24
  %482 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_10TerminatorE(ptr noundef nonnull align 8 dereferenceable(8) %479, ptr noundef nonnull align 8 dereferenceable(168) %481)
          to label %483 unwind label %487

483:                                              ; preds = %480
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %482, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %485 unwind label %487

485:                                              ; preds = %483
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %484, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.lr.ph2708 unwind label %487

487:                                              ; preds = %485, %483, %480, %478, %475, %._crit_edge2674
  %488 = landingpad { ptr, i32 }
          cleanup
  br label %619

.loopexit575:                                     ; preds = %.preheader540, %.lr.ph2708, %.lr.ph2703, %..loopexit510_crit_edge, %..loopexit511_crit_edge
  %489 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  %490 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3MIR10BasicBlockESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br i1 %490, label %.split2672, label %._crit_edge2712

.lr.ph2708:                                       ; preds = %474, %485
  %491 = getelementptr inbounds i8, ptr %152, i64 24
  %492 = call noundef i32 @_ZNK3MIR10Terminator3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %491)
  switch i32 %492, label %.loopexit575 [
    i32 0, label %493
    i32 9, label %.lr.ph2703
  ]

493:                                              ; preds = %.lr.ph2708
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 733, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

.lr.ph2703:                                       ; preds = %.lr.ph2708
  %494 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZN3MIR10Terminator7as_CallEv(ptr noundef nonnull align 8 dereferenceable(168) %491)
  %495 = getelementptr inbounds i8, ptr %494, i64 40
  %496 = getelementptr inbounds i8, ptr %494, i64 136
  %497 = getelementptr inbounds i8, ptr %494, i64 8
  %498 = call noundef i32 @_ZNK3MIR10CallTarget3tagEv(ptr noundef nonnull align 8 dereferenceable(96) %495)
  switch i32 %498, label %.loopexit575 [
    i32 0, label %500
    i32 3, label %.preheader540
    i32 1, label %.lr.ph2687
    i32 2, label %.lr.ph2680
  ]

.preheader540:                                    ; preds = %.lr.ph2703
  %499 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget12as_IntrinsicEv(ptr noundef nonnull align 8 dereferenceable(96) %495)
  br label %.loopexit575

500:                                              ; preds = %.lr.ph2703
  call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 737, ptr noundef nonnull @__PRETTY_FUNCTION__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_) #10
  unreachable

.lr.ph2687:                                       ; preds = %.lr.ph2703
  %501 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR10CallTarget8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(96) %495)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %502 unwind label %513

502:                                              ; preds = %.lr.ph2687
  %503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(32) %501, i32 noundef 0)
          to label %504 unwind label %515

504:                                              ; preds = %502
  %505 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %503)
  %506 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %505)
  %507 = getelementptr inbounds i8, ptr %506, i64 120
  %508 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %507) #9
  %509 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %496) #9
  %510 = icmp eq i64 %508, %509
  br i1 %510, label %521, label %511

511:                                              ; preds = %504
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %67) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 1 dereferenceable(1) %67) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull %66)
          to label %512 unwind label %519

512:                                              ; preds = %511
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #9
  br label %521

513:                                              ; preds = %.lr.ph2687
  %514 = landingpad { ptr, i32 }
          cleanup
  br label %533

515:                                              ; preds = %502
  %516 = landingpad { ptr, i32 }
          cleanup
  br label %532

517:                                              ; preds = %._crit_edge2685
  %518 = landingpad { ptr, i32 }
          cleanup
  br label %532

519:                                              ; preds = %511
  %520 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #9
  br label %532

521:                                              ; preds = %512, %504
  %522 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %507) #9
  %.not2719 = icmp eq i64 %522, 0
  br i1 %.not2719, label %._crit_edge2685, label %.lr.ph2684

._crit_edge2685:                                  ; preds = %526, %521
  %523 = getelementptr inbounds i8, ptr %506, i64 112
  invoke void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(32) %497, ptr noundef nonnull align 8 dereferenceable(8) %523)
          to label %..loopexit510_crit_edge unwind label %517

.lr.ph2684:                                       ; preds = %521, %526
  %.03482682 = phi i64 [ %527, %526 ], [ 0, %521 ]
  %524 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %507, i64 noundef %.03482682) #9
  %525 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %496, i64 noundef %.03482682) #9
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(8) %524, ptr noundef nonnull align 8 dereferenceable(48) %525, i64 noundef %.03482682)
          to label %526 unwind label %530

526:                                              ; preds = %.lr.ph2684
  %527 = add nuw i64 %.03482682, 1
  %528 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %507) #9
  %529 = icmp ult i64 %527, %528
  br i1 %529, label %.lr.ph2684, label %._crit_edge2685, !llvm.loop !62

530:                                              ; preds = %.lr.ph2684
  %531 = landingpad { ptr, i32 }
          cleanup
  br label %532

..loopexit510_crit_edge:                          ; preds = %._crit_edge2685
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #9
  br label %.loopexit575

532:                                              ; preds = %517, %519, %530, %515
  %.pn426.pn = phi { ptr, i32 } [ %516, %515 ], [ %531, %530 ], [ %518, %517 ], [ %520, %519 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  br label %533

533:                                              ; preds = %532, %513
  %.pn426.pn.pn = phi { ptr, i32 } [ %.pn426.pn, %532 ], [ %514, %513 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #9
  br label %619

.lr.ph2680:                                       ; preds = %.lr.ph2703
  %534 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZN3MIR10CallTarget7as_PathEv(ptr noundef nonnull align 8 dereferenceable(96) %495)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68)
          to label %535 unwind label %546

535:                                              ; preds = %.lr.ph2680
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %69) #9
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %69)
          to label %536 unwind label %548

536:                                              ; preds = %535
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %70) #9
  %537 = load ptr, ptr %128, align 8, !tbaa !42
  invoke void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind nonnull writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %70, ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %537, ptr noundef nonnull align 8 dereferenceable(88) %534, ptr noundef nonnull align 8 dereferenceable(144) %69, i1 noundef zeroext true, ptr noundef null)
          to label %538 unwind label %550

538:                                              ; preds = %536
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71) #9
  store ptr %0, ptr %71, align 8, !tbaa !6
  store ptr %9, ptr %136, align 8, !tbaa !6
  store ptr %68, ptr %137, align 8, !tbaa !6
  store ptr %69, ptr %138, align 8, !tbaa !6
  %539 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(24) %70)
  %540 = load ptr, ptr %539, align 8, !tbaa !6
  %541 = getelementptr inbounds i8, ptr %540, i64 208
  %542 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %541) #9
  %543 = call noundef i64 @_ZNKSt6vectorIN3MIR5ParamESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %496) #9
  %.not420 = icmp ugt i64 %542, %543
  br i1 %.not420, label %544, label %554

544:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %73) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 1 dereferenceable(1) %73) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull %72)
          to label %545 unwind label %552

545:                                              ; preds = %544
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #9
  br label %554

546:                                              ; preds = %.lr.ph2680
  %547 = landingpad { ptr, i32 }
          cleanup
  br label %618

548:                                              ; preds = %535
  %549 = landingpad { ptr, i32 }
          cleanup
  br label %617

550:                                              ; preds = %536
  %551 = landingpad { ptr, i32 }
          cleanup
  br label %616

552:                                              ; preds = %544
  %553 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %73) #9
  br label %615

554:                                              ; preds = %545, %538
  %555 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %541) #9
  %.not2718 = icmp eq i64 %555, 0
  br i1 %.not2718, label %._crit_edge2678, label %.lr.ph2677

._crit_edge2678:                                  ; preds = %588, %554
  %556 = getelementptr inbounds i8, ptr %540, i64 240
  %557 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_18clESJ_"(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(8) %556)
          to label %592 unwind label %612

.lr.ph2677:                                       ; preds = %554, %588
  %.03432675 = phi i64 [ %589, %588 ], [ 0, %554 ]
  %558 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %541, i64 noundef %.03432675) #9
  %559 = getelementptr inbounds i8, ptr %558, i64 216
  %560 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_18clESJ_"(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(8) %559)
          to label %561 unwind label %584

561:                                              ; preds = %.lr.ph2677
  %562 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %563 unwind label %584

563:                                              ; preds = %561
  br i1 %562, label %564, label %586

564:                                              ; preds = %563
  %565 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %566 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %565, ptr noundef nonnull @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %567 unwind label %584

567:                                              ; preds = %564
  %568 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %566, ptr noundef nonnull @.str.3)
          to label %569 unwind label %584

569:                                              ; preds = %567
  %570 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %568, i64 noundef %.03432675)
          to label %571 unwind label %584

571:                                              ; preds = %569
  %572 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %570, ptr noundef nonnull @.str.4)
          to label %573 unwind label %584

573:                                              ; preds = %571
  %574 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %572, ptr noundef nonnull align 8 dereferenceable(8) %560)
          to label %575 unwind label %584

575:                                              ; preds = %573
  %576 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %574, ptr noundef nonnull @.str.5)
          to label %577 unwind label %584

577:                                              ; preds = %575
  %578 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %496, i64 noundef %.03432675) #9
  %579 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(8) %576, ptr noundef nonnull align 8 dereferenceable(48) %578)
          to label %580 unwind label %584

580:                                              ; preds = %577
  %581 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %579, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %582 unwind label %584

582:                                              ; preds = %580
  %583 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %581, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %586 unwind label %584

584:                                              ; preds = %586, %582, %580, %577, %575, %573, %571, %569, %567, %564, %561, %.lr.ph2677
  %585 = landingpad { ptr, i32 }
          cleanup
  br label %615

586:                                              ; preds = %582, %563
  %587 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt6vectorIN3MIR5ParamESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %496, i64 noundef %.03432675) #9
  invoke void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(8) %560, ptr noundef nonnull align 8 dereferenceable(48) %587, i64 noundef %.03432675)
          to label %588 unwind label %584

588:                                              ; preds = %586
  %589 = add nuw i64 %.03432675, 1
  %590 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %541) #9
  %591 = icmp ult i64 %589, %590
  br i1 %591, label %.lr.ph2677, label %._crit_edge2678, !llvm.loop !63

592:                                              ; preds = %._crit_edge2678
  %593 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %594 unwind label %612

594:                                              ; preds = %592
  br i1 %593, label %595, label %614

595:                                              ; preds = %594
  %596 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %597 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %596, ptr noundef nonnull @__func__._Z15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_)
          to label %598 unwind label %612

598:                                              ; preds = %595
  %599 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %597, ptr noundef nonnull @.str.6)
          to label %600 unwind label %612

600:                                              ; preds = %598
  %601 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %599, ptr noundef nonnull @.str.4)
          to label %602 unwind label %612

602:                                              ; preds = %600
  %603 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %601, ptr noundef nonnull align 8 dereferenceable(32) %497)
          to label %604 unwind label %612

604:                                              ; preds = %602
  %605 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %603, ptr noundef nonnull @.str.5)
          to label %606 unwind label %612

606:                                              ; preds = %604
  %607 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %605, ptr noundef nonnull align 8 dereferenceable(8) %557)
          to label %608 unwind label %612

608:                                              ; preds = %606
  %609 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %607, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %610 unwind label %612

610:                                              ; preds = %608
  %611 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %609, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %614 unwind label %612

612:                                              ; preds = %614, %610, %608, %606, %604, %602, %600, %598, %595, %592, %._crit_edge2678
  %613 = landingpad { ptr, i32 }
          cleanup
  br label %615

614:                                              ; preds = %610, %594
  invoke void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef nonnull align 8 dereferenceable(32) %497, ptr noundef nonnull align 8 dereferenceable(8) %557)
          to label %..loopexit511_crit_edge unwind label %612

..loopexit511_crit_edge:                          ; preds = %614
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #9
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #9
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %69) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %69) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #9
  br label %.loopexit575

615:                                              ; preds = %612, %584, %552
  %.pn421 = phi { ptr, i32 } [ %585, %584 ], [ %613, %612 ], [ %553, %552 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #9
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #9
  br label %616

616:                                              ; preds = %615, %550
  %.pn421.pn = phi { ptr, i32 } [ %.pn421, %615 ], [ %551, %550 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #9
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %69) #9
  br label %617

617:                                              ; preds = %616, %548
  %.pn421.pn.pn = phi { ptr, i32 } [ %.pn421.pn, %616 ], [ %549, %548 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %69) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  br label %618

618:                                              ; preds = %617, %546
  %.pn421.pn.pn.pn = phi { ptr, i32 } [ %.pn421.pn.pn, %617 ], [ %547, %546 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #9
  br label %619

619:                                              ; preds = %533, %618, %487, %473
  %.pn431.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn, %473 ], [ %488, %487 ], [ %.pn421.pn.pn.pn, %618 ], [ %.pn426.pn.pn, %533 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %23) #9
  br label %621

620:                                              ; preds = %._crit_edge2712
  call void @_ZN12_GLOBAL__N_18FcnStateD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %74) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %74) #9
  call void @_ZN12_GLOBAL__N_111BorrowStateD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %16) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %16) #9
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %9) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %9) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #9
  ret void

621:                                              ; preds = %619, %150, %148
  %.pn431.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn, %619 ], [ %151, %150 ], [ %149, %148 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %23) #9
  br label %624

622:                                              ; preds = %._crit_edge2712
  %623 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %74) #9
  br label %624

624:                                              ; preds = %622, %621, %147
  %.pn431.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn, %621 ], [ %623, %622 ], [ %.pn418, %147 ]
  call void @_ZN12_GLOBAL__N_111BorrowStateD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %16) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %16) #9
  br label %625

625:                                              ; preds = %624, %113, %107
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn, %624 ], [ %.pn416, %113 ], [ %108, %107 ]
  call void @_ZN3MIR11TypeResolveD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %9) #9
  br label %626

626:                                              ; preds = %625, %106
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn, %625 ], [ %.pn, %106 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %9) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #9
  br label %627

627:                                              ; preds = %626, %100
  %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn, %626 ], [ %101, %100 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #9
  resume { ptr, i32 } %.pn431.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

628:                                              ; preds = %390
  unreachable
}

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nofree nounwind
declare void @__cxa_guard_release(ptr) 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) #4

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR11TypeResolveC2ERK4SpanRK18StaticTraitResolve9FmtLambdaRKN3HIR7TypeRefERKSt6vectorISt4pairINS8_7PatternES9_ESaISF_EERKNS_8FunctionE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK9FmtLambda(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 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 #1 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111BorrowStateC2ERKN3MIR11TypeResolveE(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #2 align 2

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

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

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_EN1VC2ERKNS6_11TypeResolveERN12_GLOBAL__N_111BorrowStateE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111BorrowState9do_assignERKN3MIR6LValueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #5

; 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(40) ptr @_ZN3MIR6RValue9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden i32 @_ZN12_GLOBAL__N_111BorrowState13borrow_lvalueEmN3HIR10BorrowTypeERKN3MIR6LValueE(ptr noundef nonnull align 8 dereferenceable(56), i64 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_111BorrowState12handle_paramERKN3HIR7TypeRefERKN3MIR5ParamEm(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) local_unnamed_addr #1 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK3$_7clEm"(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #7 align 2

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

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

declare noundef nonnull align 8 dereferenceable(200) ptr @_ZNK3HIR5Crate16get_enum_by_pathERK4SpanRKNS_10SimplePathEbb(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_17clESJ_"(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7 align 2

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

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

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

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

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

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

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

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

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(24) ptr @_ZN3MIR6RValue8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #2 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 #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS7_7PatternENS7_7TypeRefEESaISI_EERKSH_E4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #2 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN3MIR9Statement14as_SetDropFlagEv(ptr noundef nonnull align 8 dereferenceable(152)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, ptr noundef) local_unnamed_addr #5

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZ15MIR_BorrowCheckRK18StaticTraitResolveRKN3HIR8ItemPathERN3MIR8FunctionERKSt6vectorISt4pairINS2_7PatternENS2_7TypeRefEESaISD_EERKSC_ENK4$_18clESJ_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7 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 #2 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_5ParamE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #7

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

; 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 #1 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_18FcnStateC2Emm(ptr noundef nonnull align 8 dereferenceable(128), i64 noundef, i64 noundef) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_18FcnStateD2Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_111BorrowStateD2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 align 2

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

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

attributes #0 = { nofree nounwind }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nounwind }
attributes #10 = { noreturn nounwind }
attributes #11 = { 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 = !{!"branch_weights", i32 1, i32 1048575}
!6 = !{!7, !7, i64 0}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!13, !14, i64 0}
!13 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !14, i64 0, !15, i64 8}
!14 = !{!"_ZTSN3HIR10BorrowTypeE", !8, i64 0}
!15 = !{!"_ZTSN3MIR6LValueE", !16, i64 0, !18, i64 8}
!16 = !{!"_ZTSN3MIR6LValue7StorageE", !17, i64 0}
!17 = !{!"long", !8, i64 0}
!18 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!25, !7, i64 0}
!25 = !{!"_ZTS18TraitResolveCommon", !7, i64 0, !7, i64 8, !7, i64 16, !26, i64 24, !34, i64 72, !40, i64 104, !40, i64 112, !40, i64 120, !40, i64 128, !40, i64 136, !40, i64 144, !40, i64 152, !40, i64 160, !40, i64 168, !40, i64 176, !40, i64 184, !40, i64 192, !40, i64 200, !40, i64 208}
!26 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !27, i64 0}
!27 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !28, i64 0}
!28 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !29, i64 0, !31, i64 8}
!29 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !30, i64 0}
!30 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!31 = !{!"_ZTSSt15_Rb_tree_header", !32, i64 0, !17, i64 32}
!32 = !{!"_ZTSSt18_Rb_tree_node_base", !33, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!33 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!34 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !35, i64 0, !39, i64 24}
!35 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!39 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!40 = !{!"_ZTSN3HIR10SimplePathE", !41, i64 0}
!41 = !{!"_ZTS10ThinVectorI8RcStringE", !7, i64 0}
!42 = !{!43, !7, i64 8}
!43 = !{!"_ZTSN3MIR11TypeResolveE", !11, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !44, i64 32, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !11, i64 112, !11, i64 116}
!44 = !{!"_ZTS9FmtLambda", !45, i64 0}
!45 = !{!"_ZTSSt8functionIFvRSoEE", !46, i64 0, !7, i64 24}
!46 = !{!"_ZTSSt14_Function_base", !8, i64 0, !7, i64 16}
!47 = distinct !{!47, !23}
!48 = !{!49, !11, i64 32}
!49 = !{!"_ZTSN3MIR6RValue16Data_EnumVariantE", !50, i64 0, !11, i64 32, !55, i64 40}
!50 = !{!"_ZTSN3HIR11GenericPathE", !40, i64 0, !51, i64 8}
!51 = !{!"_ZTSN3HIR10PathParamsE", !52, i64 0, !53, i64 8, !54, i64 16}
!52 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !7, i64 0}
!53 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !7, i64 0}
!54 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !7, i64 0}
!55 = !{!"_ZTSSt6vectorIN3MIR5ParamESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN3MIR5ParamESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3MIR5ParamESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!59 = distinct !{!59, !23}
!60 = distinct !{!60, !23}
!61 = distinct !{!61, !23}
!62 = distinct !{!62, !23}
!63 = distinct !{!63, !23}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass