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

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

%"class.HIR::TypeRef" = type { ptr }
%struct.Span = type { ptr }
%"class.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.493 = type { i8 }
%class.anon.506 = type { ptr, ptr }
%class.anon.507 = type { ptr }
%class.anon.508 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.408" = type { ptr }
%class.anon.509 = type { ptr, ptr, ptr }
%class.anon.510 = type { ptr }
%class.anon.526 = type { ptr }
%class.anon.527 = type { ptr, ptr, ptr }
%class.anon.531 = type { ptr, ptr, ptr }
%class.anon.534 = type { ptr }
%class.anon.535 = type { ptr }
%class.anon.536 = type { ptr, ptr }
%class.anon.537 = type { ptr }
%class.anon.538 = type { ptr }
%class.anon.539 = type { ptr }
%class.anon.540 = type { ptr }
%class.anon.551 = type { i8 }
%class.anon.553 = type { i8 }
%class.anon.555 = type { i8 }
%class.anon.557 = type { ptr, ptr }
%class.anon.558 = type { i8 }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.MirBuilder = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i8, %"class.MIR::RValue", i8, [7 x i8], %class.VarState, %"class.std::vector.26", %"class.std::vector.26", i64, %"class.std::map", %"class.std::vector.42", %"class.std::vector.47", %class.ScopeHandle, %"class.std::vector.52", %"struct.MIR::LValue" }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%class.VarState = type { i32, [4 x i8], %"union.VarState::DataUnion" }
%"union.VarState::DataUnion" = type { i32, [28 x i8] }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<VarState, std::allocator<VarState>>::_Vector_impl" }
%"struct.std::_Vector_base<VarState, std::allocator<VarState>>::_Vector_impl" = type { %"struct.std::_Vector_base<VarState, std::allocator<VarState>>::_Vector_impl_data" }
%"struct.std::_Vector_base<VarState, std::allocator<VarState>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, unsigned int>, std::_Select1st<std::pair<const unsigned int, unsigned int>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, unsigned int>, std::_Select1st<std::pair<const unsigned int, unsigned int>>, std::less<unsigned int>>::_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.42" = type { %"struct.std::_Vector_base.43" }
%"struct.std::_Vector_base.43" = type { %"struct.std::_Vector_base<MirBuilder::ScopeDef, std::allocator<MirBuilder::ScopeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<MirBuilder::ScopeDef, std::allocator<MirBuilder::ScopeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<MirBuilder::ScopeDef, std::allocator<MirBuilder::ScopeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MirBuilder::ScopeDef, std::allocator<MirBuilder::ScopeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ScopeHandle = type <{ ptr, i32, [4 x i8] }>
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<std::pair<HIR::PatternBinding::Type, MIR::LValue>, std::allocator<std::pair<HIR::PatternBinding::Type, MIR::LValue>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::PatternBinding::Type, MIR::LValue>, std::allocator<std::pair<HIR::PatternBinding::Type, MIR::LValue>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::PatternBinding::Type, MIR::LValue>, std::allocator<std::pair<HIR::PatternBinding::Type, MIR::LValue>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::PatternBinding::Type, MIR::LValue>, std::allocator<std::pair<HIR::PatternBinding::Type, MIR::LValue>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.262", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.262" = type { %"struct.std::_Vector_base.263" }
%"struct.std::_Vector_base.263" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Pattern::Data" = type { i32, %"union.HIR::Pattern::Data::DataUnion" }
%"union.HIR::Pattern::Data::DataUnion" = type { %"struct.HIR::Pattern::Data::Data_PathValue", [64 x i8] }
%"struct.HIR::Pattern::Data::Data_PathValue" = type { %"class.HIR::Path", %"class.HIR::Pattern::PathBinding" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr.280" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.23, %class.ThinVector.24, %class.ThinVector.25 }
%class.ThinVector.23 = type { ptr }
%class.ThinVector.24 = type { ptr }
%class.ThinVector.25 = type { ptr }
%"class.std::unique_ptr.280" = type { %"struct.std::__uniq_ptr_data.281" }
%"struct.std::__uniq_ptr_data.281" = type { %"class.std::__uniq_ptr_impl.282" }
%"class.std::__uniq_ptr_impl.282" = type { %"class.std::tuple.283" }
%"class.std::tuple.283" = type { %"struct.std::_Tuple_impl.284" }
%"struct.std::_Tuple_impl.284" = type { %"struct.std::_Head_base.287" }
%"struct.std::_Head_base.287" = type { ptr }
%"class.HIR::Pattern::PathBinding" = type { i32, %"union.HIR::Pattern::PathBinding::DataUnion" }
%"union.HIR::Pattern::PathBinding::DataUnion" = type { %"struct.HIR::Pattern::PathBinding::Data_Enum" }
%"struct.HIR::Pattern::PathBinding::Data_Enum" = type { ptr, i32 }
%"class.MIR::Function" = type { %"class.std::vector.84", %"class.std::vector.89", %"class.std::vector.93", %"class.MIR::EnumCachePtr" }
%"class.std::vector.84" = type { %"struct.std::_Vector_base.85" }
%"struct.std::_Vector_base.85" = 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.89" = 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.93" = type { %"struct.std::_Vector_base.94" }
%"struct.std::_Vector_base.94" = 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.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.57", %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.57" = type { %"class.std::_Rb_tree.58" }
%"class.std::_Rb_tree.58" = 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.63", [8 x i8] }>
%"class.std::vector.63" = type { %"struct.std::_Vector_base.64" }
%"struct.std::_Vector_base.64" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Static" = type { %"class.HIR::GenericParams", %"struct.HIR::Linkage", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i8, i8, i8, %"class.std::map.500" }
%"class.HIR::GenericParams" = type { %"class.std::vector.326", %"class.std::vector.331", %"class.std::vector.336", %"class.std::vector.341" }
%"class.std::vector.326" = type { %"struct.std::_Vector_base.327" }
%"struct.std::_Vector_base.327" = 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.331" = type { %"struct.std::_Vector_base.332" }
%"struct.std::_Vector_base.332" = 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.336" = type { %"struct.std::_Vector_base.337" }
%"struct.std::_Vector_base.337" = 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.341" = type { %"struct.std::_Vector_base.342" }
%"struct.std::_Vector_base.342" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Linkage" = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.84", %"class.std::vector.84", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%struct.EncodedLiteral = type { %"class.std::vector.0", %"class.std::vector.495" }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.495" = type { %"struct.std::_Vector_base.496" }
%"struct.std::_Vector_base.496" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.500" = type { %"class.std::_Rb_tree.501" }
%"class.std::_Rb_tree.501" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.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.10", [8 x i8] }
%"class.std::unique_ptr.10" = type { %"struct.std::__uniq_ptr_data.11" }
%"struct.std::__uniq_ptr_data.11" = type { %"class.std::__uniq_ptr_impl.12" }
%"class.std::__uniq_ptr_impl.12" = type { %"class.std::tuple.13" }
%"class.std::tuple.13" = type { %"struct.std::_Tuple_impl.14" }
%"struct.std::_Tuple_impl.14" = type { %"struct.std::_Head_base.17" }
%"struct.std::_Head_base.17" = type { ptr }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.280" }
%"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.511" }
%"class.std::vector.511" = type { %"struct.std::_Vector_base.512" }
%"struct.std::_Vector_base.512" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TraitMarkings" = type { i8, i8, i8, %"class.std::map.521" }
%"class.std::map.521" = type { %"class.std::_Rb_tree.522" }
%"class.std::_Rb_tree.522" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%class.U128 = type { i64, i64 }
%"struct.HIR::VisEnt" = type { %"class.HIR::Publicity", %"class.HIR::TypeRef" }
%"class.HIR::Publicity" = type { %"class.std::shared_ptr.528" }
%"class.std::shared_ptr.528" = type { %"class.std::__shared_ptr.529" }
%"class.std::__shared_ptr.529" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.std::pair.532" = type { %class.RcString, %"struct.HIR::VisEnt" }
%"struct.HIR::TypeData::Data_Pointer" = type { i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"class.HIR::Enum" = type { %"class.HIR::GenericParams", i8, i32, %"class.HIR::Enum::Class", %"struct.HIR::TraitMarkings" }
%"class.HIR::Enum::Class" = type { i32, %"union.HIR::Enum::Class::DataUnion" }
%"union.HIR::Enum::Class::DataUnion" = type { %"class.std::vector.541", [8 x i8] }
%"class.std::vector.541" = type { %"struct.std::_Vector_base.542" }
%"struct.std::_Vector_base.542" = 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::Enum::DataVariant" = type { %class.RcString, i8, %"class.HIR::TypeRef" }
%"class.HIR::Union" = type { %"class.HIR::GenericParams", i32, %"class.std::vector.516", %"struct.HIR::TraitMarkings" }
%"class.std::vector.516" = type { %"struct.std::_Vector_base.517" }
%"struct.std::_Vector_base.517" = type { %"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.6 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.15 = external hidden unnamed_addr constant [24 x i8], align 1
@__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE = external hidden unnamed_addr constant [154 x i8], align 1
@__func__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE = external hidden unnamed_addr constant [14 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [5 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue7Wrapper8as_IndexEv(ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %3, ptr noundef %4) #3 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.HIR::TypeRef", align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i8, align 1
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca %struct.Span, align 8
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.493, align 1
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %struct.Span, align 8
  %27 = alloca %"class.std::function", align 8
  %28 = alloca %class.anon.506, align 8
  %29 = alloca ptr, align 8
  %30 = alloca %struct.Span, align 8
  %31 = alloca %"class.std::function", align 8
  %32 = alloca %class.anon.507, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %struct.Span, align 8
  %36 = alloca %"class.std::function", align 8
  %37 = alloca %class.anon.508, align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.408", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.408", align 8
  %41 = alloca i32, align 4
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca %class.anon.509, align 8
  %45 = alloca i8, align 1
  %46 = alloca ptr, align 8
  %47 = alloca i8, align 1
  %48 = alloca i32, align 4
  %49 = alloca i8, align 1
  %50 = alloca ptr, align 8
  %51 = alloca %struct.Span, align 8
  %52 = alloca %"class.std::function", align 8
  %53 = alloca %class.anon.510, align 8
  %54 = alloca i8, align 1
  %55 = alloca ptr, align 8
  %56 = alloca i8, align 1
  %57 = alloca ptr, align 8
  %58 = alloca i8, align 1
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca %struct.Span, align 8
  %64 = alloca %"class.std::function", align 8
  %65 = alloca %class.anon.526, align 8
  %66 = alloca ptr, align 8
  %67 = alloca %struct.Span, align 8
  %68 = alloca %"class.std::function", align 8
  %69 = alloca %class.anon.527, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca %struct.Span, align 8
  %73 = alloca %"class.std::function", align 8
  %74 = alloca %class.anon.531, align 8
  %75 = alloca ptr, align 8
  %76 = alloca %struct.Span, align 8
  %77 = alloca %"class.std::function", align 8
  %78 = alloca %class.anon.534, align 8
  %79 = alloca %struct.Span, align 8
  %80 = alloca %"class.std::function", align 8
  %81 = alloca %class.anon.535, align 8
  %82 = alloca i8, align 1
  %83 = alloca ptr, align 8
  %84 = alloca %struct.Span, align 8
  %85 = alloca %"class.std::function", align 8
  %86 = alloca %class.anon.536, align 8
  %87 = alloca i8, align 1
  %88 = alloca i8, align 1
  %89 = alloca i8, align 1
  %90 = alloca ptr, align 8
  %91 = alloca %struct.Span, align 8
  %92 = alloca %"class.std::function", align 8
  %93 = alloca %class.anon.537, align 8
  %94 = alloca i8, align 1
  %95 = alloca ptr, align 8
  %96 = alloca ptr, align 8
  %97 = alloca %struct.Span, align 8
  %98 = alloca %"class.std::function", align 8
  %99 = alloca %class.anon.538, align 8
  %100 = alloca i8, align 1
  %101 = alloca ptr, align 8
  %102 = alloca i8, align 1
  %103 = alloca ptr, align 8
  %104 = alloca i8, align 1
  %105 = alloca i32, align 4
  %106 = alloca ptr, align 8
  %107 = alloca ptr, align 8
  %108 = alloca %struct.Span, align 8
  %109 = alloca %"class.std::function", align 8
  %110 = alloca %class.anon.539, align 8
  %111 = alloca i8, align 1
  %112 = alloca i32, align 4
  %113 = alloca i8, align 1
  %114 = alloca ptr, align 8
  %115 = alloca %struct.Span, align 8
  %116 = alloca %"class.std::function", align 8
  %117 = alloca %class.anon.540, align 8
  %118 = alloca i8, align 1
  %119 = alloca ptr, align 8
  %120 = alloca ptr, align 8
  %121 = alloca ptr, align 8
  %122 = alloca %struct.Span, align 8
  %123 = alloca %"class.std::function", align 8
  %124 = alloca %class.anon.551, align 1
  %125 = alloca ptr, align 8
  %126 = alloca %struct.Span, align 8
  %127 = alloca %"class.std::function", align 8
  %128 = alloca %class.anon.553, align 1
  %129 = alloca ptr, align 8
  %130 = alloca ptr, align 8
  %131 = alloca ptr, align 8
  %132 = alloca %struct.Span, align 8
  %133 = alloca %"class.std::function", align 8
  %134 = alloca %class.anon.555, align 1
  %135 = alloca ptr, align 8
  %136 = alloca ptr, align 8
  %137 = alloca %struct.Span, align 8
  %138 = alloca %"class.std::function", align 8
  %139 = alloca %class.anon.557, align 8
  %140 = alloca %struct.Span, align 8
  %141 = alloca %"class.std::function", align 8
  %142 = alloca %class.anon.558, align 1
  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
  %143 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  call void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  store ptr null, ptr %12, align 8, !tbaa !5
  %144 = load ptr, ptr %8, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.MIR::LValue", ptr %144, i32 0, i32 0
  %146 = invoke noundef i32 @_ZNK3MIR6LValue7Storage3tagEv(ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %147 unwind label %148

147:                                              ; preds = %5
  switch i32 %146, label %382 [
    i32 4, label %152
    i32 3, label %153
    i32 0, label %164
    i32 1, label %180
    i32 2, label %196
  ]

148:                                              ; preds = %1493, %1477, %5
  %149 = landingpad { ptr, i32 }
          cleanup
  %150 = extractvalue { ptr, i32 } %149, 0
  store ptr %150, ptr %13, align 8
  %151 = extractvalue { ptr, i32 } %149, 1
  store i32 %151, ptr %14, align 4
  br label %1496

152:                                              ; preds = %147
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1707, ptr noundef @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

153:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #8
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.MIR::LValue", ptr %154, i32 0, i32 0
  %156 = invoke noundef signext i8 @_ZNK3MIR6LValue7Storage9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(8) %155)
          to label %157 unwind label %160

157:                                              ; preds = %153
  store i8 %156, ptr %15, align 1, !tbaa !9
  %158 = getelementptr inbounds %class.MirBuilder, ptr %143, i32 0, i32 2
  %159 = load ptr, ptr %158, align 8, !tbaa !10
  store ptr %159, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  br label %382

160:                                              ; preds = %153
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %13, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #8
  br label %1496

164:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %165 = load ptr, ptr %8, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.MIR::LValue", ptr %165, i32 0, i32 0
  %167 = invoke noundef i32 @_ZNK3MIR6LValue7Storage11as_ArgumentEv(ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %168 unwind label %176

168:                                              ; preds = %164
  store i32 %167, ptr %16, align 4, !tbaa !50
  %169 = getelementptr inbounds %class.MirBuilder, ptr %143, i32 0, i32 3
  %170 = load ptr, ptr %169, align 8, !tbaa !51
  %171 = load i32, ptr %16, align 4, !tbaa !50
  %172 = zext i32 %171 to i64
  %173 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %170, i64 noundef %172)
          to label %174 unwind label %176

174:                                              ; preds = %168
  %175 = getelementptr inbounds %"struct.std::pair", ptr %173, i32 0, i32 1
  store ptr %175, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %382

176:                                              ; preds = %168, %164
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %13, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %1496

180:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %181 = load ptr, ptr %8, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.MIR::LValue", ptr %181, i32 0, i32 0
  %183 = invoke noundef i32 @_ZNK3MIR6LValue7Storage8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(8) %182)
          to label %184 unwind label %192

184:                                              ; preds = %180
  store i32 %183, ptr %17, align 4, !tbaa !50
  %185 = getelementptr inbounds %class.MirBuilder, ptr %143, i32 0, i32 4
  %186 = load ptr, ptr %185, align 8, !tbaa !52
  %187 = getelementptr inbounds %"class.MIR::Function", ptr %186, i32 0, i32 0
  %188 = load i32, ptr %17, align 4, !tbaa !50
  %189 = zext i32 %188 to i64
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %187, i64 noundef %189)
          to label %191 unwind label %192

191:                                              ; preds = %184
  store ptr %190, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %382

192:                                              ; preds = %184, %180
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %13, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %1496

196:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %197 = load ptr, ptr %8, align 8, !tbaa !5
  %198 = getelementptr inbounds %"struct.MIR::LValue", ptr %197, i32 0, i32 0
  %199 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6LValue7Storage9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(8) %198)
          to label %200 unwind label %206

200:                                              ; preds = %196
  store ptr %199, ptr %18, align 8, !tbaa !5
  %201 = load ptr, ptr %18, align 8, !tbaa !5
  %202 = load ptr, ptr %18, align 8, !tbaa !5
  %203 = getelementptr inbounds %"class.HIR::Path", ptr %202, i32 0, i32 0
  %204 = invoke noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %203)
          to label %205 unwind label %206

205:                                              ; preds = %200
  switch i32 %204, label %380 [
    i32 0, label %210
    i32 1, label %211
    i32 3, label %266
    i32 4, label %306
    i32 2, label %340
  ]

206:                                              ; preds = %200, %196
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %13, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %14, align 4
  br label %381

210:                                              ; preds = %205
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1705, ptr noundef @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

211:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %212 = load ptr, ptr %18, align 8, !tbaa !5
  %213 = getelementptr inbounds %"class.HIR::Path", ptr %212, i32 0, i32 0
  %214 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %213)
          to label %215 unwind label %229

215:                                              ; preds = %211
  store ptr %214, ptr %19, align 8, !tbaa !5
  %216 = load ptr, ptr %19, align 8, !tbaa !5
  br label %217

217:                                              ; preds = %215
  %218 = load ptr, ptr %19, align 8, !tbaa !5
  %219 = getelementptr inbounds %"class.HIR::GenericPath", ptr %218, i32 0, i32 1
  %220 = getelementptr inbounds %"struct.HIR::PathParams", ptr %219, i32 0, i32 1
  %221 = invoke noundef zeroext i1 @_ZNK10ThinVectorIN3HIR7TypeRefEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(8) %220)
          to label %222 unwind label %229

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

223:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %224 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %224)
          to label %225 unwind label %233

225:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 1 dereferenceable(1) %22) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef %21)
          to label %226 unwind label %237

226:                                              ; preds = %225
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  %227 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %227, ptr noundef @.str.9)
          to label %228 unwind label %242

228:                                              ; preds = %226
  invoke void @__cxa_throw(ptr %227, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %229

229:                                              ; preds = %228, %217, %211
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %13, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %14, align 4
  br label %265

233:                                              ; preds = %223
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %13, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %14, align 4
  br label %241

237:                                              ; preds = %225
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %13, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br label %241

241:                                              ; preds = %237, %233
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %265

242:                                              ; preds = %226
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %13, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %14, align 4
  call void @__cxa_free_exception(ptr %227) #8
  br label %265

246:                                              ; preds = %222
  br label %247

247:                                              ; preds = %246
  br label %248

248:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %249 = getelementptr inbounds %class.MirBuilder, ptr %143, i32 0, i32 1
  %250 = load ptr, ptr %249, align 8, !tbaa !53
  %251 = getelementptr inbounds i8, ptr %250, i64 8
  %252 = getelementptr inbounds %struct.TraitResolveCommon, ptr %251, i32 0, i32 0
  %253 = load ptr, ptr %252, align 8, !tbaa !54
  %254 = load ptr, ptr %7, align 8, !tbaa !5
  %255 = load ptr, ptr %19, align 8, !tbaa !5
  %256 = getelementptr inbounds %"class.HIR::GenericPath", ptr %255, i32 0, i32 0
  %257 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR5Crate18get_static_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %253, ptr noundef nonnull align 8 dereferenceable(8) %254, ptr noundef nonnull align 8 dereferenceable(8) %256)
          to label %258 unwind label %261

258:                                              ; preds = %248
  store ptr %257, ptr %23, align 8, !tbaa !5
  %259 = load ptr, ptr %23, align 8, !tbaa !5
  %260 = getelementptr inbounds %"class.HIR::Static", ptr %259, i32 0, i32 3
  store ptr %260, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %380

261:                                              ; preds = %248
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %13, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %265

265:                                              ; preds = %261, %242, %241, %229
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %381

266:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %267 = load ptr, ptr %18, align 8, !tbaa !5
  %268 = getelementptr inbounds %"class.HIR::Path", ptr %267, i32 0, i32 0
  %269 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %268)
          to label %270 unwind label %281

270:                                              ; preds = %266
  store ptr %269, ptr %24, align 8, !tbaa !5
  %271 = load ptr, ptr %24, align 8, !tbaa !5
  br label %272

272:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  store ptr @__func__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %273 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %273)
          to label %274 unwind label %285

274:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #8
  %275 = getelementptr inbounds %class.anon.506, ptr %28, i32 0, i32 0
  store ptr %25, ptr %275, align 8, !tbaa !5
  %276 = getelementptr inbounds %class.anon.506, ptr %28, i32 0, i32 1
  %277 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %277, ptr %276, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(16) %28) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef %27)
          to label %278 unwind label %289

278:                                              ; preds = %274
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  %279 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %279, ptr noundef @.str.15)
          to label %280 unwind label %294

280:                                              ; preds = %278
  invoke void @__cxa_throw(ptr %279, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %298

281:                                              ; preds = %266
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %13, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %14, align 4
  br label %305

285:                                              ; preds = %272
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %13, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %14, align 4
  br label %293

289:                                              ; preds = %274
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %13, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br label %293

293:                                              ; preds = %289, %285
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %302

294:                                              ; preds = %278
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %13, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %14, align 4
  call void @__cxa_free_exception(ptr %279) #8
  br label %302

298:                                              ; preds = %280
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %13, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %14, align 4
  br label %302

302:                                              ; preds = %298, %294, %293
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  br label %305

303:                                              ; No predecessors!
  br label %304

304:                                              ; preds = %303
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %380

305:                                              ; preds = %302, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %381

306:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %307 = load ptr, ptr %18, align 8, !tbaa !5
  %308 = getelementptr inbounds %"class.HIR::Path", ptr %307, i32 0, i32 0
  %309 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %308)
          to label %310 unwind label %320

310:                                              ; preds = %306
  store ptr %309, ptr %29, align 8, !tbaa !5
  %311 = load ptr, ptr %29, align 8, !tbaa !5
  br label %312

312:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %313 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %313)
          to label %314 unwind label %324

314:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %315 = getelementptr inbounds %class.anon.507, ptr %32, i32 0, i32 0
  %316 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %316, ptr %315, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef %31)
          to label %317 unwind label %328

317:                                              ; preds = %314
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  %318 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %318, ptr noundef @.str.9)
          to label %319 unwind label %333

319:                                              ; preds = %317
  invoke void @__cxa_throw(ptr %318, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %320

320:                                              ; preds = %319, %306
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %13, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %14, align 4
  br label %339

324:                                              ; preds = %312
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %13, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %14, align 4
  br label %332

328:                                              ; preds = %314
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %13, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  br label %332

332:                                              ; preds = %328, %324
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %339

333:                                              ; preds = %317
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %13, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %14, align 4
  call void @__cxa_free_exception(ptr %318) #8
  br label %339

337:                                              ; No predecessors!
  br label %338

338:                                              ; preds = %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %380

339:                                              ; preds = %333, %332, %320
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %381

340:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %341 = load ptr, ptr %18, align 8, !tbaa !5
  %342 = getelementptr inbounds %"class.HIR::Path", ptr %341, i32 0, i32 0
  %343 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %342)
          to label %344 unwind label %355

344:                                              ; preds = %340
  store ptr %343, ptr %33, align 8, !tbaa !5
  %345 = load ptr, ptr %33, align 8, !tbaa !5
  br label %346

346:                                              ; preds = %344
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  store ptr @__func__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %347 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %347)
          to label %348 unwind label %359

348:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #8
  %349 = getelementptr inbounds %class.anon.508, ptr %37, i32 0, i32 0
  store ptr %34, ptr %349, align 8, !tbaa !5
  %350 = getelementptr inbounds %class.anon.508, ptr %37, i32 0, i32 1
  %351 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %351, ptr %350, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(16) %37) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef %36)
          to label %352 unwind label %363

352:                                              ; preds = %348
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  %353 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %353, ptr noundef @.str.15)
          to label %354 unwind label %368

354:                                              ; preds = %352
  invoke void @__cxa_throw(ptr %353, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %372

355:                                              ; preds = %340
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %13, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %14, align 4
  br label %379

359:                                              ; preds = %346
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %13, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %14, align 4
  br label %367

363:                                              ; preds = %348
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %13, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %367

367:                                              ; preds = %363, %359
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %376

368:                                              ; preds = %352
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %13, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %14, align 4
  call void @__cxa_free_exception(ptr %353) #8
  br label %376

372:                                              ; preds = %354
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %13, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %14, align 4
  br label %376

376:                                              ; preds = %372, %368, %367
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %379

377:                                              ; No predecessors!
  br label %378

378:                                              ; preds = %377
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %380

379:                                              ; preds = %376, %355
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %381

380:                                              ; preds = %378, %338, %304, %258, %205
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %382

381:                                              ; preds = %379, %339, %305, %265, %206
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %1496

382:                                              ; preds = %380, %191, %174, %157, %147
  %383 = load ptr, ptr %12, align 8, !tbaa !5
  %384 = icmp ne ptr %383, null
  br i1 %384, label %385, label %386

385:                                              ; preds = %382
  br label %388

386:                                              ; preds = %382
  call void @__assert_fail(ptr noundef @.str.75, ptr noundef @.str.7, i32 noundef 1708, ptr noundef @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

387:                                              ; No predecessors!
  br label %388

388:                                              ; preds = %387, %385
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %389 = load ptr, ptr %8, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.MIR::LValue", ptr %389, i32 0, i32 1
  store ptr %390, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %391 = load ptr, ptr %38, align 8, !tbaa !5
  %392 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %391) #8
  %393 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.408", ptr %39, i32 0, i32 0
  store ptr %392, ptr %393, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %394 = load ptr, ptr %38, align 8, !tbaa !5
  %395 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %394) #8
  %396 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.408", ptr %40, i32 0, i32 0
  store ptr %395, ptr %396, align 8
  br label %397

397:                                              ; preds = %1465, %388
  %398 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  br i1 %398, label %400, label %399

399:                                              ; preds = %397
  store i32 12, ptr %41, align 4
  br label %1467

400:                                              ; preds = %397
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %401 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  store ptr %401, ptr %42, align 8, !tbaa !5
  %402 = load ptr, ptr %42, align 8, !tbaa !5
  %403 = load ptr, ptr %10, align 8, !tbaa !5
  %404 = icmp eq ptr %402, %403
  br i1 %404, label %405, label %406

405:                                              ; preds = %400
  store ptr null, ptr %10, align 8, !tbaa !5
  store i32 12, ptr %41, align 4
  br label %1462

406:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %407 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %407, ptr %43, align 8, !tbaa !5
  store ptr null, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #8
  %408 = getelementptr inbounds %class.anon.509, ptr %44, i32 0, i32 0
  store ptr %11, ptr %408, align 8, !tbaa !5
  %409 = getelementptr inbounds %class.anon.509, ptr %44, i32 0, i32 1
  %410 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %410, ptr %409, align 8, !tbaa !5
  %411 = getelementptr inbounds %class.anon.509, ptr %44, i32 0, i32 2
  store ptr %143, ptr %411, align 8, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #8
  store i8 1, ptr %45, align 1, !tbaa !71
  br label %412

412:                                              ; preds = %1454, %406
  %413 = load i8, ptr %45, align 1, !tbaa !71, !range !72, !noundef !73
  %414 = trunc i8 %413 to i1
  br i1 %414, label %416, label %415

415:                                              ; preds = %412
  store i32 14, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #8
  br label %1455

416:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %417 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %417, ptr %46, align 8, !tbaa !5
  br label %418

418:                                              ; preds = %1451, %416
  %419 = load i8, ptr %45, align 1, !tbaa !71, !range !72, !noundef !73
  %420 = trunc i8 %419 to i1
  br i1 %420, label %422, label %421

421:                                              ; preds = %418
  store i32 17, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %1453

422:                                              ; preds = %418
  %423 = load ptr, ptr %46, align 8, !tbaa !5
  %424 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper3tagEv(ptr noundef nonnull align 4 dereferenceable(4) %423)
          to label %425 unwind label %426

425:                                              ; preds = %422
  switch i32 %424, label %1450 [
    i32 4, label %430
    i32 1, label %431
    i32 0, label %886
    i32 3, label %1071
    i32 2, label %1151
  ]

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

430:                                              ; preds = %425
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1729, ptr noundef @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

431:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #8
  store i8 1, ptr %47, align 1, !tbaa !71
  br label %432

432:                                              ; preds = %884, %431
  %433 = load i8, ptr %47, align 1, !tbaa !71, !range !72, !noundef !73
  %434 = trunc i8 %433 to i1
  br i1 %434, label %436, label %435

435:                                              ; preds = %432
  store i32 21, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  br label %885

436:                                              ; preds = %432
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #8
  %437 = load ptr, ptr %46, align 8, !tbaa !5
  %438 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper8as_FieldEv(ptr noundef nonnull align 4 dereferenceable(4) %437)
          to label %439 unwind label %444

439:                                              ; preds = %436
  store i32 %438, ptr %48, align 4, !tbaa !50
  br label %440

440:                                              ; preds = %881, %439
  %441 = load i8, ptr %47, align 1, !tbaa !71, !range !72, !noundef !73
  %442 = trunc i8 %441 to i1
  br i1 %442, label %448, label %443

443:                                              ; preds = %440
  store i32 24, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  br label %883

444:                                              ; preds = %436
  %445 = landingpad { ptr, i32 }
          cleanup
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %13, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %14, align 4
  br label %882

448:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #8
  store i8 1, ptr %49, align 1, !tbaa !71
  br label %449

449:                                              ; preds = %879, %448
  %450 = load i8, ptr %49, align 1, !tbaa !71, !range !72, !noundef !73
  %451 = trunc i8 %450 to i1
  br i1 %451, label %453, label %452

452:                                              ; preds = %449
  store i32 27, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  br label %880

453:                                              ; preds = %449
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %454 = load ptr, ptr %43, align 8, !tbaa !5
  %455 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %454)
          to label %456 unwind label %461

456:                                              ; preds = %453
  store ptr %455, ptr %50, align 8, !tbaa !5
  br label %457

457:                                              ; preds = %876, %456
  %458 = load i8, ptr %49, align 1, !tbaa !71, !range !72, !noundef !73
  %459 = trunc i8 %458 to i1
  br i1 %459, label %465, label %460

460:                                              ; preds = %457
  store i32 30, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %878

461:                                              ; preds = %478, %465, %453
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %13, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %14, align 4
  br label %877

465:                                              ; preds = %457
  %466 = load ptr, ptr %50, align 8, !tbaa !5
  %467 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %466)
          to label %468 unwind label %461

468:                                              ; preds = %465
  switch i32 %467, label %470 [
    i32 0, label %469
    i32 8, label %494
    i32 9, label %519
    i32 4, label %544
    i32 10, label %816
  ]

469:                                              ; preds = %468
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1731, ptr noundef @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

470:                                              ; preds = %468
  br label %471

471:                                              ; preds = %470
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %472 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %472)
          to label %473 unwind label %479

473:                                              ; preds = %471
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %474 = getelementptr inbounds %class.anon.510, ptr %53, i32 0, i32 0
  %475 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %475, ptr %474, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef %52)
          to label %476 unwind label %483

476:                                              ; preds = %473
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  %477 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %477, ptr noundef @.str.9)
          to label %478 unwind label %488

478:                                              ; preds = %476
  invoke void @__cxa_throw(ptr %477, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %461

479:                                              ; preds = %471
  %480 = landingpad { ptr, i32 }
          cleanup
  %481 = extractvalue { ptr, i32 } %480, 0
  store ptr %481, ptr %13, align 8
  %482 = extractvalue { ptr, i32 } %480, 1
  store i32 %482, ptr %14, align 4
  br label %487

483:                                              ; preds = %473
  %484 = landingpad { ptr, i32 }
          cleanup
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %13, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  br label %487

487:                                              ; preds = %483, %479
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %877

488:                                              ; preds = %476
  %489 = landingpad { ptr, i32 }
          cleanup
  %490 = extractvalue { ptr, i32 } %489, 0
  store ptr %490, ptr %13, align 8
  %491 = extractvalue { ptr, i32 } %489, 1
  store i32 %491, ptr %14, align 4
  call void @__cxa_free_exception(ptr %477) #8
  br label %877

492:                                              ; No predecessors!
  br label %493

493:                                              ; preds = %492
  br label %875

494:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #8
  store i8 1, ptr %54, align 1, !tbaa !71
  br label %495

495:                                              ; preds = %517, %494
  %496 = load i8, ptr %54, align 1, !tbaa !71, !range !72, !noundef !73
  %497 = trunc i8 %496 to i1
  br i1 %497, label %499, label %498

498:                                              ; preds = %495
  store i32 36, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  br label %518

499:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %500 = load ptr, ptr %50, align 8, !tbaa !5
  %501 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %500)
          to label %502 unwind label %508

502:                                              ; preds = %499
  store ptr %501, ptr %55, align 8, !tbaa !5
  br label %503

503:                                              ; preds = %515, %502
  %504 = load ptr, ptr %55, align 8, !tbaa !5
  %505 = load i8, ptr %54, align 1, !tbaa !71, !range !72, !noundef !73
  %506 = trunc i8 %505 to i1
  br i1 %506, label %512, label %507

507:                                              ; preds = %503
  store i32 39, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %516

508:                                              ; preds = %499
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %13, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  br label %877

512:                                              ; preds = %503
  %513 = load ptr, ptr %55, align 8, !tbaa !5
  %514 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %513, i32 0, i32 0
  store ptr %514, ptr %12, align 8, !tbaa !5
  br label %515

515:                                              ; preds = %512
  store i8 0, ptr %54, align 1, !tbaa !71
  br label %503, !llvm.loop !74

516:                                              ; preds = %507
  br label %517

517:                                              ; preds = %516
  store i8 0, ptr %54, align 1, !tbaa !71
  br label %495, !llvm.loop !76

518:                                              ; preds = %498
  br label %875

519:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #8
  store i8 1, ptr %56, align 1, !tbaa !71
  br label %520

520:                                              ; preds = %542, %519
  %521 = load i8, ptr %56, align 1, !tbaa !71, !range !72, !noundef !73
  %522 = trunc i8 %521 to i1
  br i1 %522, label %524, label %523

523:                                              ; preds = %520
  store i32 42, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #8
  br label %543

524:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %525 = load ptr, ptr %50, align 8, !tbaa !5
  %526 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %525)
          to label %527 unwind label %533

527:                                              ; preds = %524
  store ptr %526, ptr %57, align 8, !tbaa !5
  br label %528

528:                                              ; preds = %540, %527
  %529 = load ptr, ptr %57, align 8, !tbaa !5
  %530 = load i8, ptr %56, align 1, !tbaa !71, !range !72, !noundef !73
  %531 = trunc i8 %530 to i1
  br i1 %531, label %537, label %532

532:                                              ; preds = %528
  store i32 45, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  br label %541

533:                                              ; preds = %524
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %13, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #8
  br label %877

537:                                              ; preds = %528
  %538 = load ptr, ptr %57, align 8, !tbaa !5
  %539 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %538, i32 0, i32 0
  store ptr %539, ptr %12, align 8, !tbaa !5
  br label %540

540:                                              ; preds = %537
  store i8 0, ptr %56, align 1, !tbaa !71
  br label %528, !llvm.loop !77

541:                                              ; preds = %532
  br label %542

542:                                              ; preds = %541
  store i8 0, ptr %56, align 1, !tbaa !71
  br label %520, !llvm.loop !78

543:                                              ; preds = %523
  br label %875

544:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #8
  store i8 1, ptr %58, align 1, !tbaa !71
  br label %545

545:                                              ; preds = %814, %544
  %546 = load i8, ptr %58, align 1, !tbaa !71, !range !72, !noundef !73
  %547 = trunc i8 %546 to i1
  br i1 %547, label %549, label %548

548:                                              ; preds = %545
  store i32 48, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  br label %815

549:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %550 = load ptr, ptr %50, align 8, !tbaa !5
  %551 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %550)
          to label %552 unwind label %558

552:                                              ; preds = %549
  store ptr %551, ptr %59, align 8, !tbaa !5
  br label %553

553:                                              ; preds = %810, %552
  %554 = load ptr, ptr %59, align 8, !tbaa !5
  %555 = load i8, ptr %58, align 1, !tbaa !71, !range !72, !noundef !73
  %556 = trunc i8 %555 to i1
  br i1 %556, label %562, label %557

557:                                              ; preds = %553
  store i32 51, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %813

558:                                              ; preds = %549
  %559 = landingpad { ptr, i32 }
          cleanup
  %560 = extractvalue { ptr, i32 } %559, 0
  store ptr %560, ptr %13, align 8
  %561 = extractvalue { ptr, i32 } %559, 1
  store i32 %561, ptr %14, align 4
  br label %812

562:                                              ; preds = %553
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %563 = load ptr, ptr %59, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %563, i32 0, i32 1
  %565 = invoke noundef ptr @_ZNK3HIR15TypePathBinding10opt_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %564)
          to label %566 unwind label %576

566:                                              ; preds = %562
  store ptr %565, ptr %60, align 8, !tbaa !5
  %567 = load ptr, ptr %60, align 8, !tbaa !5
  %568 = icmp ne ptr %567, null
  br i1 %568, label %569, label %754

569:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  %570 = load ptr, ptr %60, align 8, !tbaa !5
  %571 = load ptr, ptr %570, align 8, !tbaa !5
  store ptr %571, ptr %61, align 8, !tbaa !5
  %572 = load ptr, ptr %61, align 8, !tbaa !5
  %573 = getelementptr inbounds %"class.HIR::Struct", ptr %572, i32 0, i32 3
  %574 = invoke noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %573)
          to label %575 unwind label %580

575:                                              ; preds = %569
  switch i32 %574, label %752 [
    i32 0, label %584
    i32 1, label %585
    i32 2, label %619
    i32 3, label %685
  ]

576:                                              ; preds = %792, %768, %754, %562
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %13, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %14, align 4
  br label %811

580:                                              ; preds = %569
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %13, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %14, align 4
  br label %753

584:                                              ; preds = %575
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1760, ptr noundef @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

585:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %586 = load ptr, ptr %61, align 8, !tbaa !5
  %587 = getelementptr inbounds %"class.HIR::Struct", ptr %586, i32 0, i32 3
  %588 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %587)
          to label %589 unwind label %599

589:                                              ; preds = %585
  store ptr %588, ptr %62, align 8, !tbaa !5
  %590 = load ptr, ptr %62, align 8, !tbaa !5
  br label %591

591:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %592 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %592)
          to label %593 unwind label %603

593:                                              ; preds = %591
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %594 = getelementptr inbounds %class.anon.526, ptr %65, i32 0, i32 0
  %595 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %595, ptr %594, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef %64)
          to label %596 unwind label %607

596:                                              ; preds = %593
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  %597 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %597, ptr noundef @.str.9)
          to label %598 unwind label %612

598:                                              ; preds = %596
  invoke void @__cxa_throw(ptr %597, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %599

599:                                              ; preds = %598, %585
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %13, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %14, align 4
  br label %618

603:                                              ; preds = %591
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %13, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %14, align 4
  br label %611

607:                                              ; preds = %593
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %13, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br label %611

611:                                              ; preds = %607, %603
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  br label %618

612:                                              ; preds = %596
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %13, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %14, align 4
  call void @__cxa_free_exception(ptr %597) #8
  br label %618

616:                                              ; No predecessors!
  br label %617

617:                                              ; preds = %616
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  br label %752

618:                                              ; preds = %612, %611, %599
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  br label %753

619:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  %620 = load ptr, ptr %61, align 8, !tbaa !5
  %621 = getelementptr inbounds %"class.HIR::Struct", ptr %620, i32 0, i32 3
  %622 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %621)
          to label %623 unwind label %643

623:                                              ; preds = %619
  store ptr %622, ptr %66, align 8, !tbaa !5
  %624 = load ptr, ptr %66, align 8, !tbaa !5
  br label %625

625:                                              ; preds = %623
  %626 = load i32, ptr %48, align 4, !tbaa !50
  %627 = zext i32 %626 to i64
  %628 = load ptr, ptr %66, align 8, !tbaa !5
  %629 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %628) #8
  %630 = icmp ult i64 %627, %629
  br i1 %630, label %665, label %631

631:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  %632 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %632)
          to label %633 unwind label %647

633:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 24, ptr %69) #8
  %634 = getelementptr inbounds %class.anon.527, ptr %69, i32 0, i32 0
  %635 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %635, ptr %634, align 8, !tbaa !5
  %636 = getelementptr inbounds %class.anon.527, ptr %69, i32 0, i32 1
  store ptr %48, ptr %636, align 8, !tbaa !5
  %637 = getelementptr inbounds %class.anon.527, ptr %69, i32 0, i32 2
  %638 = load ptr, ptr %66, align 8, !tbaa !5
  store ptr %638, ptr %637, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(24) %69)
          to label %639 unwind label %651

639:                                              ; preds = %633
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef %68)
          to label %640 unwind label %655

640:                                              ; preds = %639
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  %641 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %641, ptr noundef @.str.9)
          to label %642 unwind label %661

642:                                              ; preds = %640
  invoke void @__cxa_throw(ptr %641, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %643

643:                                              ; preds = %642, %619
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %13, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %14, align 4
  br label %684

647:                                              ; preds = %631
  %648 = landingpad { ptr, i32 }
          cleanup
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %13, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %14, align 4
  br label %660

651:                                              ; preds = %633
  %652 = landingpad { ptr, i32 }
          cleanup
  %653 = extractvalue { ptr, i32 } %652, 0
  store ptr %653, ptr %13, align 8
  %654 = extractvalue { ptr, i32 } %652, 1
  store i32 %654, ptr %14, align 4
  br label %659

655:                                              ; preds = %639
  %656 = landingpad { ptr, i32 }
          cleanup
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %13, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  br label %659

659:                                              ; preds = %655, %651
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  br label %660

660:                                              ; preds = %659, %647
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %684

661:                                              ; preds = %640
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %13, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %14, align 4
  call void @__cxa_free_exception(ptr %641) #8
  br label %684

665:                                              ; preds = %625
  br label %666

666:                                              ; preds = %665
  br label %667

667:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %668 = load ptr, ptr %66, align 8, !tbaa !5
  %669 = load i32, ptr %48, align 4, !tbaa !50
  %670 = zext i32 %669 to i64
  %671 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %668, i64 noundef %670) #8
  store ptr %671, ptr %70, align 8, !tbaa !5
  %672 = load ptr, ptr %61, align 8, !tbaa !5
  %673 = getelementptr inbounds %"class.HIR::Struct", ptr %672, i32 0, i32 0
  %674 = load ptr, ptr %59, align 8, !tbaa !5
  %675 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %674, i32 0, i32 0
  %676 = load ptr, ptr %70, align 8, !tbaa !5
  %677 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %676, i32 0, i32 1
  %678 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEENK4$_20clERKNS8_13GenericParamsERKNS8_4PathESB_"(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(96) %673, ptr noundef nonnull align 8 dereferenceable(88) %675, ptr noundef nonnull align 8 dereferenceable(8) %677)
          to label %679 unwind label %680

679:                                              ; preds = %667
  store ptr %678, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  br label %752

680:                                              ; preds = %667
  %681 = landingpad { ptr, i32 }
          cleanup
  %682 = extractvalue { ptr, i32 } %681, 0
  store ptr %682, ptr %13, align 8
  %683 = extractvalue { ptr, i32 } %681, 1
  store i32 %683, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %684

684:                                              ; preds = %680, %661, %660, %643
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  br label %753

685:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %686 = load ptr, ptr %61, align 8, !tbaa !5
  %687 = getelementptr inbounds %"class.HIR::Struct", ptr %686, i32 0, i32 3
  %688 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %687)
          to label %689 unwind label %709

689:                                              ; preds = %685
  store ptr %688, ptr %71, align 8, !tbaa !5
  %690 = load ptr, ptr %71, align 8, !tbaa !5
  br label %691

691:                                              ; preds = %689
  %692 = load i32, ptr %48, align 4, !tbaa !50
  %693 = zext i32 %692 to i64
  %694 = load ptr, ptr %71, align 8, !tbaa !5
  %695 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %694) #8
  %696 = icmp ult i64 %693, %695
  br i1 %696, label %731, label %697

697:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  %698 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %698)
          to label %699 unwind label %713

699:                                              ; preds = %697
  call void @llvm.lifetime.start.p0(i64 24, ptr %74) #8
  %700 = getelementptr inbounds %class.anon.531, ptr %74, i32 0, i32 0
  %701 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %701, ptr %700, align 8, !tbaa !5
  %702 = getelementptr inbounds %class.anon.531, ptr %74, i32 0, i32 1
  store ptr %48, ptr %702, align 8, !tbaa !5
  %703 = getelementptr inbounds %class.anon.531, ptr %74, i32 0, i32 2
  %704 = load ptr, ptr %71, align 8, !tbaa !5
  store ptr %704, ptr %703, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull align 8 dereferenceable(24) %74)
          to label %705 unwind label %717

705:                                              ; preds = %699
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef %73)
          to label %706 unwind label %721

706:                                              ; preds = %705
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %74) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  %707 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %707, ptr noundef @.str.9)
          to label %708 unwind label %727

708:                                              ; preds = %706
  invoke void @__cxa_throw(ptr %707, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %709

709:                                              ; preds = %708, %685
  %710 = landingpad { ptr, i32 }
          cleanup
  %711 = extractvalue { ptr, i32 } %710, 0
  store ptr %711, ptr %13, align 8
  %712 = extractvalue { ptr, i32 } %710, 1
  store i32 %712, ptr %14, align 4
  br label %751

713:                                              ; preds = %697
  %714 = landingpad { ptr, i32 }
          cleanup
  %715 = extractvalue { ptr, i32 } %714, 0
  store ptr %715, ptr %13, align 8
  %716 = extractvalue { ptr, i32 } %714, 1
  store i32 %716, ptr %14, align 4
  br label %726

717:                                              ; preds = %699
  %718 = landingpad { ptr, i32 }
          cleanup
  %719 = extractvalue { ptr, i32 } %718, 0
  store ptr %719, ptr %13, align 8
  %720 = extractvalue { ptr, i32 } %718, 1
  store i32 %720, ptr %14, align 4
  br label %725

721:                                              ; preds = %705
  %722 = landingpad { ptr, i32 }
          cleanup
  %723 = extractvalue { ptr, i32 } %722, 0
  store ptr %723, ptr %13, align 8
  %724 = extractvalue { ptr, i32 } %722, 1
  store i32 %724, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #8
  br label %725

725:                                              ; preds = %721, %717
  call void @llvm.lifetime.end.p0(i64 24, ptr %74) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  br label %726

726:                                              ; preds = %725, %713
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  br label %751

727:                                              ; preds = %706
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %13, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %14, align 4
  call void @__cxa_free_exception(ptr %707) #8
  br label %751

731:                                              ; preds = %691
  br label %732

732:                                              ; preds = %731
  br label %733

733:                                              ; preds = %732
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #8
  %734 = load ptr, ptr %71, align 8, !tbaa !5
  %735 = load i32, ptr %48, align 4, !tbaa !50
  %736 = zext i32 %735 to i64
  %737 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %734, i64 noundef %736) #8
  %738 = getelementptr inbounds %"struct.std::pair.532", ptr %737, i32 0, i32 1
  store ptr %738, ptr %75, align 8, !tbaa !5
  %739 = load ptr, ptr %61, align 8, !tbaa !5
  %740 = getelementptr inbounds %"class.HIR::Struct", ptr %739, i32 0, i32 0
  %741 = load ptr, ptr %59, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %741, i32 0, i32 0
  %743 = load ptr, ptr %75, align 8, !tbaa !5
  %744 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %743, i32 0, i32 1
  %745 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEENK4$_20clERKNS8_13GenericParamsERKNS8_4PathESB_"(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(96) %740, ptr noundef nonnull align 8 dereferenceable(88) %742, ptr noundef nonnull align 8 dereferenceable(8) %744)
          to label %746 unwind label %747

746:                                              ; preds = %733
  store ptr %745, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  br label %752

747:                                              ; preds = %733
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %13, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #8
  br label %751

751:                                              ; preds = %747, %727, %726, %709
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  br label %753

752:                                              ; preds = %746, %679, %617, %575
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %809

753:                                              ; preds = %751, %684, %618, %580
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %811

754:                                              ; preds = %566
  %755 = load ptr, ptr %59, align 8, !tbaa !5
  %756 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %755, i32 0, i32 1
  %757 = invoke noundef ptr @_ZNK3HIR15TypePathBinding9opt_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %756)
          to label %758 unwind label %576

758:                                              ; preds = %754
  %759 = icmp ne ptr %757, null
  br i1 %759, label %760, label %784

760:                                              ; preds = %758
  br label %761

761:                                              ; preds = %760
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %762 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %762)
          to label %763 unwind label %769

763:                                              ; preds = %761
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %764 = getelementptr inbounds %class.anon.534, ptr %78, i32 0, i32 0
  %765 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %765, ptr %764, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 8 dereferenceable(8) %78) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef %77)
          to label %766 unwind label %773

766:                                              ; preds = %763
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  %767 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %767, ptr noundef @.str.9)
          to label %768 unwind label %778

768:                                              ; preds = %766
  invoke void @__cxa_throw(ptr %767, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %576

769:                                              ; preds = %761
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %13, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %14, align 4
  br label %777

773:                                              ; preds = %763
  %774 = landingpad { ptr, i32 }
          cleanup
  %775 = extractvalue { ptr, i32 } %774, 0
  store ptr %775, ptr %13, align 8
  %776 = extractvalue { ptr, i32 } %774, 1
  store i32 %776, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  br label %777

777:                                              ; preds = %773, %769
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %811

778:                                              ; preds = %766
  %779 = landingpad { ptr, i32 }
          cleanup
  %780 = extractvalue { ptr, i32 } %779, 0
  store ptr %780, ptr %13, align 8
  %781 = extractvalue { ptr, i32 } %779, 1
  store i32 %781, ptr %14, align 4
  call void @__cxa_free_exception(ptr %767) #8
  br label %811

782:                                              ; No predecessors!
  br label %783

783:                                              ; preds = %782
  br label %808

784:                                              ; preds = %758
  br label %785

785:                                              ; preds = %784
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %786 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %786)
          to label %787 unwind label %793

787:                                              ; preds = %785
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  %788 = getelementptr inbounds %class.anon.535, ptr %81, i32 0, i32 0
  %789 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %789, ptr %788, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(8) %81) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef %80)
          to label %790 unwind label %797

790:                                              ; preds = %787
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  %791 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %791, ptr noundef @.str.9)
          to label %792 unwind label %802

792:                                              ; preds = %790
  invoke void @__cxa_throw(ptr %791, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %576

793:                                              ; preds = %785
  %794 = landingpad { ptr, i32 }
          cleanup
  %795 = extractvalue { ptr, i32 } %794, 0
  store ptr %795, ptr %13, align 8
  %796 = extractvalue { ptr, i32 } %794, 1
  store i32 %796, ptr %14, align 4
  br label %801

797:                                              ; preds = %787
  %798 = landingpad { ptr, i32 }
          cleanup
  %799 = extractvalue { ptr, i32 } %798, 0
  store ptr %799, ptr %13, align 8
  %800 = extractvalue { ptr, i32 } %798, 1
  store i32 %800, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  br label %801

801:                                              ; preds = %797, %793
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %811

802:                                              ; preds = %790
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %13, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %14, align 4
  call void @__cxa_free_exception(ptr %791) #8
  br label %811

806:                                              ; No predecessors!
  br label %807

807:                                              ; preds = %806
  br label %808

808:                                              ; preds = %807, %783
  br label %809

809:                                              ; preds = %808, %752
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %810

810:                                              ; preds = %809
  store i8 0, ptr %58, align 1, !tbaa !71
  br label %553, !llvm.loop !79

811:                                              ; preds = %802, %801, %778, %777, %753, %576
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %812

812:                                              ; preds = %811, %558
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  br label %877

813:                                              ; preds = %557
  br label %814

814:                                              ; preds = %813
  store i8 0, ptr %58, align 1, !tbaa !71
  br label %545, !llvm.loop !80

815:                                              ; preds = %548
  br label %875

816:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #8
  store i8 1, ptr %82, align 1, !tbaa !71
  br label %817

817:                                              ; preds = %873, %816
  %818 = load i8, ptr %82, align 1, !tbaa !71, !range !72, !noundef !73
  %819 = trunc i8 %818 to i1
  br i1 %819, label %821, label %820

820:                                              ; preds = %817
  store i32 65, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #8
  br label %874

821:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %822 = load ptr, ptr %50, align 8, !tbaa !5
  %823 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %822)
          to label %824 unwind label %830

824:                                              ; preds = %821
  store ptr %823, ptr %83, align 8, !tbaa !5
  br label %825

825:                                              ; preds = %870, %824
  %826 = load ptr, ptr %83, align 8, !tbaa !5
  %827 = load i8, ptr %82, align 1, !tbaa !71, !range !72, !noundef !73
  %828 = trunc i8 %827 to i1
  br i1 %828, label %834, label %829

829:                                              ; preds = %825
  store i32 68, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  br label %872

830:                                              ; preds = %849, %821
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %13, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %14, align 4
  br label %871

834:                                              ; preds = %825
  br label %835

835:                                              ; preds = %834
  %836 = load i32, ptr %48, align 4, !tbaa !50
  %837 = zext i32 %836 to i64
  %838 = load ptr, ptr %83, align 8, !tbaa !5
  %839 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %838) #8
  %840 = icmp ult i64 %837, %839
  br i1 %840, label %863, label %841

841:                                              ; preds = %835
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  %842 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %842)
          to label %843 unwind label %850

843:                                              ; preds = %841
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #8
  %844 = getelementptr inbounds %class.anon.536, ptr %86, i32 0, i32 0
  store ptr %48, ptr %844, align 8, !tbaa !5
  %845 = getelementptr inbounds %class.anon.536, ptr %86, i32 0, i32 1
  %846 = load ptr, ptr %83, align 8, !tbaa !5
  store ptr %846, ptr %845, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(16) %86) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef %85)
          to label %847 unwind label %854

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

849:                                              ; preds = %847
  invoke void @__cxa_throw(ptr %848, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %830

850:                                              ; preds = %841
  %851 = landingpad { ptr, i32 }
          cleanup
  %852 = extractvalue { ptr, i32 } %851, 0
  store ptr %852, ptr %13, align 8
  %853 = extractvalue { ptr, i32 } %851, 1
  store i32 %853, ptr %14, align 4
  br label %858

854:                                              ; preds = %843
  %855 = landingpad { ptr, i32 }
          cleanup
  %856 = extractvalue { ptr, i32 } %855, 0
  store ptr %856, ptr %13, align 8
  %857 = extractvalue { ptr, i32 } %855, 1
  store i32 %857, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  br label %858

858:                                              ; preds = %854, %850
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %871

859:                                              ; preds = %847
  %860 = landingpad { ptr, i32 }
          cleanup
  %861 = extractvalue { ptr, i32 } %860, 0
  store ptr %861, ptr %13, align 8
  %862 = extractvalue { ptr, i32 } %860, 1
  store i32 %862, ptr %14, align 4
  call void @__cxa_free_exception(ptr %848) #8
  br label %871

863:                                              ; preds = %835
  br label %864

864:                                              ; preds = %863
  br label %865

865:                                              ; preds = %864
  %866 = load ptr, ptr %83, align 8, !tbaa !5
  %867 = load i32, ptr %48, align 4, !tbaa !50
  %868 = zext i32 %867 to i64
  %869 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %866, i64 noundef %868) #8
  store ptr %869, ptr %12, align 8, !tbaa !5
  br label %870

870:                                              ; preds = %865
  store i8 0, ptr %82, align 1, !tbaa !71
  br label %825, !llvm.loop !81

871:                                              ; preds = %859, %858, %830
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #8
  br label %877

872:                                              ; preds = %829
  br label %873

873:                                              ; preds = %872
  store i8 0, ptr %82, align 1, !tbaa !71
  br label %817, !llvm.loop !82

874:                                              ; preds = %820
  br label %875

875:                                              ; preds = %874, %815, %543, %518, %493
  br label %876

876:                                              ; preds = %875
  store i8 0, ptr %49, align 1, !tbaa !71
  br label %457, !llvm.loop !83

877:                                              ; preds = %871, %812, %533, %508, %488, %487, %461
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #8
  br label %882

878:                                              ; preds = %460
  br label %879

879:                                              ; preds = %878
  store i8 0, ptr %49, align 1, !tbaa !71
  br label %449, !llvm.loop !84

880:                                              ; preds = %452
  br label %881

881:                                              ; preds = %880
  store i8 0, ptr %47, align 1, !tbaa !71
  br label %440, !llvm.loop !85

882:                                              ; preds = %877, %444
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #8
  br label %1452

883:                                              ; preds = %443
  br label %884

884:                                              ; preds = %883
  store i8 0, ptr %47, align 1, !tbaa !71
  br label %432, !llvm.loop !86

885:                                              ; preds = %435
  br label %1450

886:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #8
  store i8 1, ptr %87, align 1, !tbaa !71
  br label %887

887:                                              ; preds = %1069, %886
  %888 = load i8, ptr %87, align 1, !tbaa !71, !range !72, !noundef !73
  %889 = trunc i8 %888 to i1
  br i1 %889, label %891, label %890

890:                                              ; preds = %887
  store i32 73, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #8
  br label %1070

891:                                              ; preds = %887
  call void @llvm.lifetime.start.p0(i64 1, ptr %88) #8
  %892 = load ptr, ptr %46, align 8, !tbaa !5
  %893 = invoke noundef signext i8 @_ZNK3MIR6LValue7Wrapper8as_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %892)
          to label %894 unwind label %899

894:                                              ; preds = %891
  store i8 %893, ptr %88, align 1, !tbaa !9
  br label %895

895:                                              ; preds = %1066, %894
  %896 = load i8, ptr %87, align 1, !tbaa !71, !range !72, !noundef !73
  %897 = trunc i8 %896 to i1
  br i1 %897, label %903, label %898

898:                                              ; preds = %895
  store i32 76, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #8
  br label %1068

899:                                              ; preds = %891
  %900 = landingpad { ptr, i32 }
          cleanup
  %901 = extractvalue { ptr, i32 } %900, 0
  store ptr %901, ptr %13, align 8
  %902 = extractvalue { ptr, i32 } %900, 1
  store i32 %902, ptr %14, align 4
  br label %1067

903:                                              ; preds = %895
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #8
  store i8 1, ptr %89, align 1, !tbaa !71
  br label %904

904:                                              ; preds = %1064, %903
  %905 = load i8, ptr %89, align 1, !tbaa !71, !range !72, !noundef !73
  %906 = trunc i8 %905 to i1
  br i1 %906, label %908, label %907

907:                                              ; preds = %904
  store i32 79, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  br label %1065

908:                                              ; preds = %904
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  %909 = load ptr, ptr %43, align 8, !tbaa !5
  %910 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %909)
          to label %911 unwind label %916

911:                                              ; preds = %908
  store ptr %910, ptr %90, align 8, !tbaa !5
  br label %912

912:                                              ; preds = %1061, %911
  %913 = load i8, ptr %89, align 1, !tbaa !71, !range !72, !noundef !73
  %914 = trunc i8 %913 to i1
  br i1 %914, label %920, label %915

915:                                              ; preds = %912
  store i32 82, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  br label %1063

916:                                              ; preds = %933, %920, %908
  %917 = landingpad { ptr, i32 }
          cleanup
  %918 = extractvalue { ptr, i32 } %917, 0
  store ptr %918, ptr %13, align 8
  %919 = extractvalue { ptr, i32 } %917, 1
  store i32 %919, ptr %14, align 4
  br label %1062

920:                                              ; preds = %912
  %921 = load ptr, ptr %90, align 8, !tbaa !5
  %922 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %921)
          to label %923 unwind label %916

923:                                              ; preds = %920
  switch i32 %922, label %925 [
    i32 0, label %924
    i32 4, label %949
    i32 12, label %1010
    i32 11, label %1035
  ]

924:                                              ; preds = %923
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1778, ptr noundef @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

925:                                              ; preds = %923
  br label %926

926:                                              ; preds = %925
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  %927 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %927)
          to label %928 unwind label %934

928:                                              ; preds = %926
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  %929 = getelementptr inbounds %class.anon.537, ptr %93, i32 0, i32 0
  %930 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %930, ptr %929, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef %92)
          to label %931 unwind label %938

931:                                              ; preds = %928
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  %932 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %932, ptr noundef @.str.9)
          to label %933 unwind label %943

933:                                              ; preds = %931
  invoke void @__cxa_throw(ptr %932, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %916

934:                                              ; preds = %926
  %935 = landingpad { ptr, i32 }
          cleanup
  %936 = extractvalue { ptr, i32 } %935, 0
  store ptr %936, ptr %13, align 8
  %937 = extractvalue { ptr, i32 } %935, 1
  store i32 %937, ptr %14, align 4
  br label %942

938:                                              ; preds = %928
  %939 = landingpad { ptr, i32 }
          cleanup
  %940 = extractvalue { ptr, i32 } %939, 0
  store ptr %940, ptr %13, align 8
  %941 = extractvalue { ptr, i32 } %939, 1
  store i32 %941, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  br label %942

942:                                              ; preds = %938, %934
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %1062

943:                                              ; preds = %931
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %13, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %14, align 4
  call void @__cxa_free_exception(ptr %932) #8
  br label %1062

947:                                              ; No predecessors!
  br label %948

948:                                              ; preds = %947
  br label %1060

949:                                              ; preds = %923
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #8
  store i8 1, ptr %94, align 1, !tbaa !71
  br label %950

950:                                              ; preds = %1008, %949
  %951 = load i8, ptr %94, align 1, !tbaa !71, !range !72, !noundef !73
  %952 = trunc i8 %951 to i1
  br i1 %952, label %954, label %953

953:                                              ; preds = %950
  store i32 88, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #8
  br label %1009

954:                                              ; preds = %950
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %955 = load ptr, ptr %90, align 8, !tbaa !5
  %956 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %955)
          to label %957 unwind label %963

957:                                              ; preds = %954
  store ptr %956, ptr %95, align 8, !tbaa !5
  br label %958

958:                                              ; preds = %1004, %957
  %959 = load ptr, ptr %95, align 8, !tbaa !5
  %960 = load i8, ptr %94, align 1, !tbaa !71, !range !72, !noundef !73
  %961 = trunc i8 %960 to i1
  br i1 %961, label %967, label %962

962:                                              ; preds = %958
  store i32 91, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %1007

963:                                              ; preds = %954
  %964 = landingpad { ptr, i32 }
          cleanup
  %965 = extractvalue { ptr, i32 } %964, 0
  store ptr %965, ptr %13, align 8
  %966 = extractvalue { ptr, i32 } %964, 1
  store i32 %966, ptr %14, align 4
  br label %1006

967:                                              ; preds = %958
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %968 = load ptr, ptr %43, align 8, !tbaa !5
  %969 = invoke noundef ptr @_ZNK10MirBuilder17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(440) %143, ptr noundef nonnull align 8 dereferenceable(8) %968)
          to label %970 unwind label %975

970:                                              ; preds = %967
  store ptr %969, ptr %96, align 8, !tbaa !5
  %971 = load ptr, ptr %96, align 8, !tbaa !5
  %972 = icmp ne ptr %971, null
  br i1 %972, label %973, label %979

973:                                              ; preds = %970
  %974 = load ptr, ptr %96, align 8, !tbaa !5
  store ptr %974, ptr %12, align 8, !tbaa !5
  br label %1003

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

979:                                              ; preds = %970
  br label %980

980:                                              ; preds = %979
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %981 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %981)
          to label %982 unwind label %988

982:                                              ; preds = %980
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %983 = getelementptr inbounds %class.anon.538, ptr %99, i32 0, i32 0
  %984 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %984, ptr %983, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef %98)
          to label %985 unwind label %992

985:                                              ; preds = %982
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  %986 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %986, ptr noundef @.str.9)
          to label %987 unwind label %997

987:                                              ; preds = %985
  invoke void @__cxa_throw(ptr %986, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %975

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

992:                                              ; preds = %982
  %993 = landingpad { ptr, i32 }
          cleanup
  %994 = extractvalue { ptr, i32 } %993, 0
  store ptr %994, ptr %13, align 8
  %995 = extractvalue { ptr, i32 } %993, 1
  store i32 %995, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  br label %996

996:                                              ; preds = %992, %988
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  br label %1005

997:                                              ; preds = %985
  %998 = landingpad { ptr, i32 }
          cleanup
  %999 = extractvalue { ptr, i32 } %998, 0
  store ptr %999, ptr %13, align 8
  %1000 = extractvalue { ptr, i32 } %998, 1
  store i32 %1000, ptr %14, align 4
  call void @__cxa_free_exception(ptr %986) #8
  br label %1005

1001:                                             ; No predecessors!
  br label %1002

1002:                                             ; preds = %1001
  br label %1003

1003:                                             ; preds = %1002, %973
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %1004

1004:                                             ; preds = %1003
  store i8 0, ptr %94, align 1, !tbaa !71
  br label %958, !llvm.loop !87

1005:                                             ; preds = %997, %996, %975
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %1006

1006:                                             ; preds = %1005, %963
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #8
  br label %1062

1007:                                             ; preds = %962
  br label %1008

1008:                                             ; preds = %1007
  store i8 0, ptr %94, align 1, !tbaa !71
  br label %950, !llvm.loop !88

1009:                                             ; preds = %953
  br label %1060

1010:                                             ; preds = %923
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #8
  store i8 1, ptr %100, align 1, !tbaa !71
  br label %1011

1011:                                             ; preds = %1033, %1010
  %1012 = load i8, ptr %100, align 1, !tbaa !71, !range !72, !noundef !73
  %1013 = trunc i8 %1012 to i1
  br i1 %1013, label %1015, label %1014

1014:                                             ; preds = %1011
  store i32 96, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #8
  br label %1034

1015:                                             ; preds = %1011
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  %1016 = load ptr, ptr %90, align 8, !tbaa !5
  %1017 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1016)
          to label %1018 unwind label %1024

1018:                                             ; preds = %1015
  store ptr %1017, ptr %101, align 8, !tbaa !5
  br label %1019

1019:                                             ; preds = %1031, %1018
  %1020 = load ptr, ptr %101, align 8, !tbaa !5
  %1021 = load i8, ptr %100, align 1, !tbaa !71, !range !72, !noundef !73
  %1022 = trunc i8 %1021 to i1
  br i1 %1022, label %1028, label %1023

1023:                                             ; preds = %1019
  store i32 99, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  br label %1032

1024:                                             ; preds = %1015
  %1025 = landingpad { ptr, i32 }
          cleanup
  %1026 = extractvalue { ptr, i32 } %1025, 0
  store ptr %1026, ptr %13, align 8
  %1027 = extractvalue { ptr, i32 } %1025, 1
  store i32 %1027, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #8
  br label %1062

1028:                                             ; preds = %1019
  %1029 = load ptr, ptr %101, align 8, !tbaa !5
  %1030 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %1029, i32 0, i32 1
  store ptr %1030, ptr %12, align 8, !tbaa !5
  br label %1031

1031:                                             ; preds = %1028
  store i8 0, ptr %100, align 1, !tbaa !71
  br label %1019, !llvm.loop !89

1032:                                             ; preds = %1023
  br label %1033

1033:                                             ; preds = %1032
  store i8 0, ptr %100, align 1, !tbaa !71
  br label %1011, !llvm.loop !90

1034:                                             ; preds = %1014
  br label %1060

1035:                                             ; preds = %923
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #8
  store i8 1, ptr %102, align 1, !tbaa !71
  br label %1036

1036:                                             ; preds = %1058, %1035
  %1037 = load i8, ptr %102, align 1, !tbaa !71, !range !72, !noundef !73
  %1038 = trunc i8 %1037 to i1
  br i1 %1038, label %1040, label %1039

1039:                                             ; preds = %1036
  store i32 102, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #8
  br label %1059

1040:                                             ; preds = %1036
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  %1041 = load ptr, ptr %90, align 8, !tbaa !5
  %1042 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1041)
          to label %1043 unwind label %1049

1043:                                             ; preds = %1040
  store ptr %1042, ptr %103, align 8, !tbaa !5
  br label %1044

1044:                                             ; preds = %1056, %1043
  %1045 = load ptr, ptr %103, align 8, !tbaa !5
  %1046 = load i8, ptr %102, align 1, !tbaa !71, !range !72, !noundef !73
  %1047 = trunc i8 %1046 to i1
  br i1 %1047, label %1053, label %1048

1048:                                             ; preds = %1044
  store i32 105, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %1057

1049:                                             ; preds = %1040
  %1050 = landingpad { ptr, i32 }
          cleanup
  %1051 = extractvalue { ptr, i32 } %1050, 0
  store ptr %1051, ptr %13, align 8
  %1052 = extractvalue { ptr, i32 } %1050, 1
  store i32 %1052, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #8
  br label %1062

1053:                                             ; preds = %1044
  %1054 = load ptr, ptr %103, align 8, !tbaa !5
  %1055 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1054, i32 0, i32 2
  store ptr %1055, ptr %12, align 8, !tbaa !5
  br label %1056

1056:                                             ; preds = %1053
  store i8 0, ptr %102, align 1, !tbaa !71
  br label %1044, !llvm.loop !91

1057:                                             ; preds = %1048
  br label %1058

1058:                                             ; preds = %1057
  store i8 0, ptr %102, align 1, !tbaa !71
  br label %1036, !llvm.loop !92

1059:                                             ; preds = %1039
  br label %1060

1060:                                             ; preds = %1059, %1034, %1009, %948
  br label %1061

1061:                                             ; preds = %1060
  store i8 0, ptr %89, align 1, !tbaa !71
  br label %912, !llvm.loop !93

1062:                                             ; preds = %1049, %1024, %1006, %943, %942, %916
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  br label %1067

1063:                                             ; preds = %915
  br label %1064

1064:                                             ; preds = %1063
  store i8 0, ptr %89, align 1, !tbaa !71
  br label %904, !llvm.loop !94

1065:                                             ; preds = %907
  br label %1066

1066:                                             ; preds = %1065
  store i8 0, ptr %87, align 1, !tbaa !71
  br label %895, !llvm.loop !95

1067:                                             ; preds = %1062, %899
  call void @llvm.lifetime.end.p0(i64 1, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #8
  br label %1452

1068:                                             ; preds = %898
  br label %1069

1069:                                             ; preds = %1068
  store i8 0, ptr %87, align 1, !tbaa !71
  br label %887, !llvm.loop !96

1070:                                             ; preds = %890
  br label %1450

1071:                                             ; preds = %425
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #8
  store i8 1, ptr %104, align 1, !tbaa !71
  br label %1072

1072:                                             ; preds = %1149, %1071
  %1073 = load i8, ptr %104, align 1, !tbaa !71, !range !72, !noundef !73
  %1074 = trunc i8 %1073 to i1
  br i1 %1074, label %1076, label %1075

1075:                                             ; preds = %1072
  store i32 108, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #8
  br label %1150

1076:                                             ; preds = %1072
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #8
  %1077 = load ptr, ptr %46, align 8, !tbaa !5
  %1078 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper8as_IndexEv(ptr noundef nonnull align 4 dereferenceable(4) %1077)
          to label %1079 unwind label %1084

1079:                                             ; preds = %1076
  store i32 %1078, ptr %105, align 4, !tbaa !50
  br label %1080

1080:                                             ; preds = %1146, %1079
  %1081 = load i8, ptr %104, align 1, !tbaa !71, !range !72, !noundef !73
  %1082 = trunc i8 %1081 to i1
  br i1 %1082, label %1088, label %1083

1083:                                             ; preds = %1080
  store i32 111, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #8
  br label %1148

1084:                                             ; preds = %1129, %1091, %1088, %1076
  %1085 = landingpad { ptr, i32 }
          cleanup
  %1086 = extractvalue { ptr, i32 } %1085, 0
  store ptr %1086, ptr %13, align 8
  %1087 = extractvalue { ptr, i32 } %1085, 1
  store i32 %1087, ptr %14, align 4
  br label %1147

1088:                                             ; preds = %1080
  %1089 = load ptr, ptr %43, align 8, !tbaa !5
  %1090 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1089)
          to label %1091 unwind label %1084

1091:                                             ; preds = %1088
  %1092 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1090)
          to label %1093 unwind label %1084

1093:                                             ; preds = %1091
  switch i32 %1092, label %1121 [
    i32 0, label %1094
    i32 9, label %1095
    i32 8, label %1108
  ]

1094:                                             ; preds = %1093
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1809, ptr noundef @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

1095:                                             ; preds = %1093
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #8
  %1096 = load ptr, ptr %43, align 8, !tbaa !5
  %1097 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1096)
          to label %1098 unwind label %1104

1098:                                             ; preds = %1095
  %1099 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1097)
          to label %1100 unwind label %1104

1100:                                             ; preds = %1098
  store ptr %1099, ptr %106, align 8, !tbaa !5
  %1101 = load ptr, ptr %106, align 8, !tbaa !5
  %1102 = load ptr, ptr %106, align 8, !tbaa !5
  %1103 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %1102, i32 0, i32 0
  store ptr %1103, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  br label %1145

1104:                                             ; preds = %1098, %1095
  %1105 = landingpad { ptr, i32 }
          cleanup
  %1106 = extractvalue { ptr, i32 } %1105, 0
  store ptr %1106, ptr %13, align 8
  %1107 = extractvalue { ptr, i32 } %1105, 1
  store i32 %1107, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #8
  br label %1147

1108:                                             ; preds = %1093
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #8
  %1109 = load ptr, ptr %43, align 8, !tbaa !5
  %1110 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1109)
          to label %1111 unwind label %1117

1111:                                             ; preds = %1108
  %1112 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1110)
          to label %1113 unwind label %1117

1113:                                             ; preds = %1111
  store ptr %1112, ptr %107, align 8, !tbaa !5
  %1114 = load ptr, ptr %107, align 8, !tbaa !5
  %1115 = load ptr, ptr %107, align 8, !tbaa !5
  %1116 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1115, i32 0, i32 0
  store ptr %1116, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #8
  br label %1145

1117:                                             ; preds = %1111, %1108
  %1118 = landingpad { ptr, i32 }
          cleanup
  %1119 = extractvalue { ptr, i32 } %1118, 0
  store ptr %1119, ptr %13, align 8
  %1120 = extractvalue { ptr, i32 } %1118, 1
  store i32 %1120, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #8
  br label %1147

1121:                                             ; preds = %1093
  br label %1122

1122:                                             ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #8
  %1123 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %1123)
          to label %1124 unwind label %1130

1124:                                             ; preds = %1122
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #8
  %1125 = getelementptr inbounds %class.anon.539, ptr %110, i32 0, i32 0
  %1126 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %1126, ptr %1125, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(8) %110) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef %109)
          to label %1127 unwind label %1134

1127:                                             ; preds = %1124
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  %1128 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1128, ptr noundef @.str.9)
          to label %1129 unwind label %1139

1129:                                             ; preds = %1127
  invoke void @__cxa_throw(ptr %1128, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %1084

1130:                                             ; preds = %1122
  %1131 = landingpad { ptr, i32 }
          cleanup
  %1132 = extractvalue { ptr, i32 } %1131, 0
  store ptr %1132, ptr %13, align 8
  %1133 = extractvalue { ptr, i32 } %1131, 1
  store i32 %1133, ptr %14, align 4
  br label %1138

1134:                                             ; preds = %1124
  %1135 = landingpad { ptr, i32 }
          cleanup
  %1136 = extractvalue { ptr, i32 } %1135, 0
  store ptr %1136, ptr %13, align 8
  %1137 = extractvalue { ptr, i32 } %1135, 1
  store i32 %1137, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #8
  br label %1138

1138:                                             ; preds = %1134, %1130
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  br label %1147

1139:                                             ; preds = %1127
  %1140 = landingpad { ptr, i32 }
          cleanup
  %1141 = extractvalue { ptr, i32 } %1140, 0
  store ptr %1141, ptr %13, align 8
  %1142 = extractvalue { ptr, i32 } %1140, 1
  store i32 %1142, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1128) #8
  br label %1147

1143:                                             ; No predecessors!
  br label %1144

1144:                                             ; preds = %1143
  br label %1145

1145:                                             ; preds = %1144, %1113, %1100
  br label %1146

1146:                                             ; preds = %1145
  store i8 0, ptr %104, align 1, !tbaa !71
  br label %1080, !llvm.loop !97

1147:                                             ; preds = %1139, %1138, %1117, %1104, %1084
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #8
  br label %1452

1148:                                             ; preds = %1083
  br label %1149

1149:                                             ; preds = %1148
  store i8 0, ptr %104, align 1, !tbaa !71
  br label %1072, !llvm.loop !98

1150:                                             ; preds = %1075
  br label %1450

1151:                                             ; preds = %425
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #8
  store i8 1, ptr %111, align 1, !tbaa !71
  br label %1152

1152:                                             ; preds = %1448, %1151
  %1153 = load i8, ptr %111, align 1, !tbaa !71, !range !72, !noundef !73
  %1154 = trunc i8 %1153 to i1
  br i1 %1154, label %1156, label %1155

1155:                                             ; preds = %1152
  store i32 117, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #8
  br label %1449

1156:                                             ; preds = %1152
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #8
  %1157 = load ptr, ptr %46, align 8, !tbaa !5
  %1158 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper11as_DowncastEv(ptr noundef nonnull align 4 dereferenceable(4) %1157)
          to label %1159 unwind label %1164

1159:                                             ; preds = %1156
  store i32 %1158, ptr %112, align 4, !tbaa !50
  br label %1160

1160:                                             ; preds = %1445, %1159
  %1161 = load i8, ptr %111, align 1, !tbaa !71, !range !72, !noundef !73
  %1162 = trunc i8 %1161 to i1
  br i1 %1162, label %1168, label %1163

1163:                                             ; preds = %1160
  store i32 120, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #8
  br label %1447

1164:                                             ; preds = %1156
  %1165 = landingpad { ptr, i32 }
          cleanup
  %1166 = extractvalue { ptr, i32 } %1165, 0
  store ptr %1166, ptr %13, align 8
  %1167 = extractvalue { ptr, i32 } %1165, 1
  store i32 %1167, ptr %14, align 4
  br label %1446

1168:                                             ; preds = %1160
  call void @llvm.lifetime.start.p0(i64 1, ptr %113) #8
  store i8 1, ptr %113, align 1, !tbaa !71
  br label %1169

1169:                                             ; preds = %1443, %1168
  %1170 = load i8, ptr %113, align 1, !tbaa !71, !range !72, !noundef !73
  %1171 = trunc i8 %1170 to i1
  br i1 %1171, label %1173, label %1172

1172:                                             ; preds = %1169
  store i32 123, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #8
  br label %1444

1173:                                             ; preds = %1169
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #8
  %1174 = load ptr, ptr %43, align 8, !tbaa !5
  %1175 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1174)
          to label %1176 unwind label %1181

1176:                                             ; preds = %1173
  store ptr %1175, ptr %114, align 8, !tbaa !5
  br label %1177

1177:                                             ; preds = %1440, %1176
  %1178 = load i8, ptr %113, align 1, !tbaa !71, !range !72, !noundef !73
  %1179 = trunc i8 %1178 to i1
  br i1 %1179, label %1185, label %1180

1180:                                             ; preds = %1177
  store i32 126, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  br label %1442

1181:                                             ; preds = %1198, %1185, %1173
  %1182 = landingpad { ptr, i32 }
          cleanup
  %1183 = extractvalue { ptr, i32 } %1182, 0
  store ptr %1183, ptr %13, align 8
  %1184 = extractvalue { ptr, i32 } %1182, 1
  store i32 %1184, ptr %14, align 4
  br label %1441

1185:                                             ; preds = %1177
  %1186 = load ptr, ptr %114, align 8, !tbaa !5
  %1187 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1186)
          to label %1188 unwind label %1181

1188:                                             ; preds = %1185
  switch i32 %1187, label %1190 [
    i32 0, label %1189
    i32 4, label %1214
  ]

1189:                                             ; preds = %1188
  call void @__assert_fail(ptr noundef @.str.6, ptr noundef @.str.7, i32 noundef 1812, ptr noundef @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

1190:                                             ; preds = %1188
  br label %1191

1191:                                             ; preds = %1190
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #8
  %1192 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) %1192)
          to label %1193 unwind label %1199

1193:                                             ; preds = %1191
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #8
  %1194 = getelementptr inbounds %class.anon.540, ptr %117, i32 0, i32 0
  %1195 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %1195, ptr %1194, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %116, ptr noundef nonnull align 8 dereferenceable(8) %117) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef %116)
          to label %1196 unwind label %1203

1196:                                             ; preds = %1193
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  %1197 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1197, ptr noundef @.str.9)
          to label %1198 unwind label %1208

1198:                                             ; preds = %1196
  invoke void @__cxa_throw(ptr %1197, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %1181

1199:                                             ; preds = %1191
  %1200 = landingpad { ptr, i32 }
          cleanup
  %1201 = extractvalue { ptr, i32 } %1200, 0
  store ptr %1201, ptr %13, align 8
  %1202 = extractvalue { ptr, i32 } %1200, 1
  store i32 %1202, ptr %14, align 4
  br label %1207

1203:                                             ; preds = %1193
  %1204 = landingpad { ptr, i32 }
          cleanup
  %1205 = extractvalue { ptr, i32 } %1204, 0
  store ptr %1205, ptr %13, align 8
  %1206 = extractvalue { ptr, i32 } %1204, 1
  store i32 %1206, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %116) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %115) #8
  br label %1207

1207:                                             ; preds = %1203, %1199
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  br label %1441

1208:                                             ; preds = %1196
  %1209 = landingpad { ptr, i32 }
          cleanup
  %1210 = extractvalue { ptr, i32 } %1209, 0
  store ptr %1210, ptr %13, align 8
  %1211 = extractvalue { ptr, i32 } %1209, 1
  store i32 %1211, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1197) #8
  br label %1441

1212:                                             ; No predecessors!
  br label %1213

1213:                                             ; preds = %1212
  br label %1439

1214:                                             ; preds = %1188
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #8
  store i8 1, ptr %118, align 1, !tbaa !71
  br label %1215

1215:                                             ; preds = %1437, %1214
  %1216 = load i8, ptr %118, align 1, !tbaa !71, !range !72, !noundef !73
  %1217 = trunc i8 %1216 to i1
  br i1 %1217, label %1219, label %1218

1218:                                             ; preds = %1215
  store i32 132, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #8
  br label %1438

1219:                                             ; preds = %1215
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  %1220 = load ptr, ptr %114, align 8, !tbaa !5
  %1221 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1220)
          to label %1222 unwind label %1228

1222:                                             ; preds = %1219
  store ptr %1221, ptr %119, align 8, !tbaa !5
  br label %1223

1223:                                             ; preds = %1433, %1222
  %1224 = load ptr, ptr %119, align 8, !tbaa !5
  %1225 = load i8, ptr %118, align 1, !tbaa !71, !range !72, !noundef !73
  %1226 = trunc i8 %1225 to i1
  br i1 %1226, label %1232, label %1227

1227:                                             ; preds = %1223
  store i32 135, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  br label %1436

1228:                                             ; preds = %1219
  %1229 = landingpad { ptr, i32 }
          cleanup
  %1230 = extractvalue { ptr, i32 } %1229, 0
  store ptr %1230, ptr %13, align 8
  %1231 = extractvalue { ptr, i32 } %1229, 1
  store i32 %1231, ptr %14, align 4
  br label %1435

1232:                                             ; preds = %1223
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #8
  %1233 = load ptr, ptr %119, align 8, !tbaa !5
  %1234 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1233, i32 0, i32 1
  %1235 = invoke noundef ptr @_ZNK3HIR15TypePathBinding8opt_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %1234)
          to label %1236 unwind label %1253

1236:                                             ; preds = %1232
  store ptr %1235, ptr %120, align 8, !tbaa !5
  %1237 = load ptr, ptr %120, align 8, !tbaa !5
  %1238 = icmp ne ptr %1237, null
  br i1 %1238, label %1239, label %1331

1239:                                             ; preds = %1236
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #8
  %1240 = load ptr, ptr %120, align 8, !tbaa !5
  %1241 = load ptr, ptr %1240, align 8, !tbaa !5
  store ptr %1241, ptr %121, align 8, !tbaa !5
  br label %1242

1242:                                             ; preds = %1239
  %1243 = load ptr, ptr %121, align 8, !tbaa !5
  %1244 = getelementptr inbounds %"class.HIR::Enum", ptr %1243, i32 0, i32 3
  %1245 = invoke noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %1244)
          to label %1246 unwind label %1257

1246:                                             ; preds = %1242
  br i1 %1245, label %1274, label %1247

1247:                                             ; preds = %1246
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #8
  %1248 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull align 8 dereferenceable(8) %1248)
          to label %1249 unwind label %1261

1249:                                             ; preds = %1247
  call void @llvm.lifetime.start.p0(i64 1, ptr %124) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef nonnull align 1 dereferenceable(1) %124) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef %123)
          to label %1250 unwind label %1265

1250:                                             ; preds = %1249
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #8
  %1251 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1251, ptr noundef @.str.9)
          to label %1252 unwind label %1270

1252:                                             ; preds = %1250
  invoke void @__cxa_throw(ptr %1251, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %1257

1253:                                             ; preds = %1232
  %1254 = landingpad { ptr, i32 }
          cleanup
  %1255 = extractvalue { ptr, i32 } %1254, 0
  store ptr %1255, ptr %13, align 8
  %1256 = extractvalue { ptr, i32 } %1254, 1
  store i32 %1256, ptr %14, align 4
  br label %1434

1257:                                             ; preds = %1252, %1242
  %1258 = landingpad { ptr, i32 }
          cleanup
  %1259 = extractvalue { ptr, i32 } %1258, 0
  store ptr %1259, ptr %13, align 8
  %1260 = extractvalue { ptr, i32 } %1258, 1
  store i32 %1260, ptr %14, align 4
  br label %1330

1261:                                             ; preds = %1247
  %1262 = landingpad { ptr, i32 }
          cleanup
  %1263 = extractvalue { ptr, i32 } %1262, 0
  store ptr %1263, ptr %13, align 8
  %1264 = extractvalue { ptr, i32 } %1262, 1
  store i32 %1264, ptr %14, align 4
  br label %1269

1265:                                             ; preds = %1249
  %1266 = landingpad { ptr, i32 }
          cleanup
  %1267 = extractvalue { ptr, i32 } %1266, 0
  store ptr %1267, ptr %13, align 8
  %1268 = extractvalue { ptr, i32 } %1266, 1
  store i32 %1268, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %124) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #8
  br label %1269

1269:                                             ; preds = %1265, %1261
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #8
  br label %1330

1270:                                             ; preds = %1250
  %1271 = landingpad { ptr, i32 }
          cleanup
  %1272 = extractvalue { ptr, i32 } %1271, 0
  store ptr %1272, ptr %13, align 8
  %1273 = extractvalue { ptr, i32 } %1271, 1
  store i32 %1273, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1251) #8
  br label %1330

1274:                                             ; preds = %1246
  br label %1275

1275:                                             ; preds = %1274
  br label %1276

1276:                                             ; preds = %1275
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #8
  %1277 = load ptr, ptr %121, align 8, !tbaa !5
  %1278 = getelementptr inbounds %"class.HIR::Enum", ptr %1277, i32 0, i32 3
  %1279 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %1278)
          to label %1280 unwind label %1293

1280:                                             ; preds = %1276
  store ptr %1279, ptr %125, align 8, !tbaa !5
  br label %1281

1281:                                             ; preds = %1280
  %1282 = load i32, ptr %112, align 4, !tbaa !50
  %1283 = zext i32 %1282 to i64
  %1284 = load ptr, ptr %125, align 8, !tbaa !5
  %1285 = call noundef i64 @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1284) #8
  %1286 = icmp ult i64 %1283, %1285
  br i1 %1286, label %1310, label %1287

1287:                                             ; preds = %1281
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #8
  %1288 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull align 8 dereferenceable(8) %1288)
          to label %1289 unwind label %1297

1289:                                             ; preds = %1287
  call void @llvm.lifetime.start.p0(i64 1, ptr %128) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull align 1 dereferenceable(1) %128) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef %127)
          to label %1290 unwind label %1301

1290:                                             ; preds = %1289
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %128) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #8
  %1291 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1291, ptr noundef @.str.9)
          to label %1292 unwind label %1306

1292:                                             ; preds = %1290
  invoke void @__cxa_throw(ptr %1291, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %1293

1293:                                             ; preds = %1292, %1276
  %1294 = landingpad { ptr, i32 }
          cleanup
  %1295 = extractvalue { ptr, i32 } %1294, 0
  store ptr %1295, ptr %13, align 8
  %1296 = extractvalue { ptr, i32 } %1294, 1
  store i32 %1296, ptr %14, align 4
  br label %1329

1297:                                             ; preds = %1287
  %1298 = landingpad { ptr, i32 }
          cleanup
  %1299 = extractvalue { ptr, i32 } %1298, 0
  store ptr %1299, ptr %13, align 8
  %1300 = extractvalue { ptr, i32 } %1298, 1
  store i32 %1300, ptr %14, align 4
  br label %1305

1301:                                             ; preds = %1289
  %1302 = landingpad { ptr, i32 }
          cleanup
  %1303 = extractvalue { ptr, i32 } %1302, 0
  store ptr %1303, ptr %13, align 8
  %1304 = extractvalue { ptr, i32 } %1302, 1
  store i32 %1304, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %128) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #8
  br label %1305

1305:                                             ; preds = %1301, %1297
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #8
  br label %1329

1306:                                             ; preds = %1290
  %1307 = landingpad { ptr, i32 }
          cleanup
  %1308 = extractvalue { ptr, i32 } %1307, 0
  store ptr %1308, ptr %13, align 8
  %1309 = extractvalue { ptr, i32 } %1307, 1
  store i32 %1309, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1291) #8
  br label %1329

1310:                                             ; preds = %1281
  br label %1311

1311:                                             ; preds = %1310
  br label %1312

1312:                                             ; preds = %1311
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #8
  %1313 = load ptr, ptr %125, align 8, !tbaa !5
  %1314 = load i32, ptr %112, align 4, !tbaa !50
  %1315 = zext i32 %1314 to i64
  %1316 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1313, i64 noundef %1315) #8
  store ptr %1316, ptr %129, align 8, !tbaa !5
  %1317 = load ptr, ptr %121, align 8, !tbaa !5
  %1318 = getelementptr inbounds %"class.HIR::Enum", ptr %1317, i32 0, i32 0
  %1319 = load ptr, ptr %119, align 8, !tbaa !5
  %1320 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1319, i32 0, i32 0
  %1321 = load ptr, ptr %129, align 8, !tbaa !5
  %1322 = getelementptr inbounds %"struct.HIR::Enum::DataVariant", ptr %1321, i32 0, i32 2
  %1323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEENK4$_20clERKNS8_13GenericParamsERKNS8_4PathESB_"(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(96) %1318, ptr noundef nonnull align 8 dereferenceable(88) %1320, ptr noundef nonnull align 8 dereferenceable(8) %1322)
          to label %1324 unwind label %1325

1324:                                             ; preds = %1312
  store ptr %1323, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  br label %1432

1325:                                             ; preds = %1312
  %1326 = landingpad { ptr, i32 }
          cleanup
  %1327 = extractvalue { ptr, i32 } %1326, 0
  store ptr %1327, ptr %13, align 8
  %1328 = extractvalue { ptr, i32 } %1326, 1
  store i32 %1328, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #8
  br label %1329

1329:                                             ; preds = %1325, %1306, %1305, %1293
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #8
  br label %1330

1330:                                             ; preds = %1329, %1270, %1269, %1257
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #8
  br label %1434

1331:                                             ; preds = %1236
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #8
  %1332 = load ptr, ptr %119, align 8, !tbaa !5
  %1333 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1332, i32 0, i32 1
  %1334 = invoke noundef ptr @_ZNK3HIR15TypePathBinding9opt_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %1333)
          to label %1335 unwind label %1354

1335:                                             ; preds = %1331
  store ptr %1334, ptr %130, align 8, !tbaa !5
  %1336 = load ptr, ptr %130, align 8, !tbaa !5
  %1337 = icmp ne ptr %1336, null
  br i1 %1337, label %1338, label %1404

1338:                                             ; preds = %1335
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #8
  %1339 = load ptr, ptr %130, align 8, !tbaa !5
  %1340 = load ptr, ptr %1339, align 8, !tbaa !5
  store ptr %1340, ptr %131, align 8, !tbaa !5
  br label %1341

1341:                                             ; preds = %1338
  %1342 = load i32, ptr %112, align 4, !tbaa !50
  %1343 = zext i32 %1342 to i64
  %1344 = load ptr, ptr %131, align 8, !tbaa !5
  %1345 = getelementptr inbounds %"class.HIR::Union", ptr %1344, i32 0, i32 2
  %1346 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1345) #8
  %1347 = icmp ult i64 %1343, %1346
  br i1 %1347, label %1375, label %1348

1348:                                             ; preds = %1341
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #8
  %1349 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %1349)
          to label %1350 unwind label %1358

1350:                                             ; preds = %1348
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull align 1 dereferenceable(1) %134) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef %133)
          to label %1351 unwind label %1362

1351:                                             ; preds = %1350
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #8
  %1352 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1352, ptr noundef @.str.9)
          to label %1353 unwind label %1367

1353:                                             ; preds = %1351
  invoke void @__cxa_throw(ptr %1352, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %1371

1354:                                             ; preds = %1414, %1331
  %1355 = landingpad { ptr, i32 }
          cleanup
  %1356 = extractvalue { ptr, i32 } %1355, 0
  store ptr %1356, ptr %13, align 8
  %1357 = extractvalue { ptr, i32 } %1355, 1
  store i32 %1357, ptr %14, align 4
  br label %1431

1358:                                             ; preds = %1348
  %1359 = landingpad { ptr, i32 }
          cleanup
  %1360 = extractvalue { ptr, i32 } %1359, 0
  store ptr %1360, ptr %13, align 8
  %1361 = extractvalue { ptr, i32 } %1359, 1
  store i32 %1361, ptr %14, align 4
  br label %1366

1362:                                             ; preds = %1350
  %1363 = landingpad { ptr, i32 }
          cleanup
  %1364 = extractvalue { ptr, i32 } %1363, 0
  store ptr %1364, ptr %13, align 8
  %1365 = extractvalue { ptr, i32 } %1363, 1
  store i32 %1365, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #8
  br label %1366

1366:                                             ; preds = %1362, %1358
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #8
  br label %1403

1367:                                             ; preds = %1351
  %1368 = landingpad { ptr, i32 }
          cleanup
  %1369 = extractvalue { ptr, i32 } %1368, 0
  store ptr %1369, ptr %13, align 8
  %1370 = extractvalue { ptr, i32 } %1368, 1
  store i32 %1370, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1352) #8
  br label %1403

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

1375:                                             ; preds = %1341
  br label %1376

1376:                                             ; preds = %1375
  br label %1377

1377:                                             ; preds = %1376
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #8
  %1378 = load ptr, ptr %131, align 8, !tbaa !5
  %1379 = getelementptr inbounds %"class.HIR::Union", ptr %1378, i32 0, i32 2
  %1380 = load i32, ptr %112, align 4, !tbaa !50
  %1381 = zext i32 %1380 to i64
  %1382 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1379, i64 noundef %1381)
          to label %1383 unwind label %1394

1383:                                             ; preds = %1377
  store ptr %1382, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #8
  %1384 = load ptr, ptr %135, align 8, !tbaa !5
  %1385 = getelementptr inbounds %"struct.std::pair.532", ptr %1384, i32 0, i32 1
  store ptr %1385, ptr %136, align 8, !tbaa !5
  %1386 = load ptr, ptr %131, align 8, !tbaa !5
  %1387 = getelementptr inbounds %"class.HIR::Union", ptr %1386, i32 0, i32 0
  %1388 = load ptr, ptr %119, align 8, !tbaa !5
  %1389 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1388, i32 0, i32 0
  %1390 = load ptr, ptr %136, align 8, !tbaa !5
  %1391 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %1390, i32 0, i32 1
  %1392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEENK4$_20clERKNS8_13GenericParamsERKNS8_4PathESB_"(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(96) %1387, ptr noundef nonnull align 8 dereferenceable(88) %1389, ptr noundef nonnull align 8 dereferenceable(8) %1391)
          to label %1393 unwind label %1398

1393:                                             ; preds = %1383
  store ptr %1392, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #8
  br label %1430

1394:                                             ; preds = %1377
  %1395 = landingpad { ptr, i32 }
          cleanup
  %1396 = extractvalue { ptr, i32 } %1395, 0
  store ptr %1396, ptr %13, align 8
  %1397 = extractvalue { ptr, i32 } %1395, 1
  store i32 %1397, ptr %14, align 4
  br label %1402

1398:                                             ; preds = %1383
  %1399 = landingpad { ptr, i32 }
          cleanup
  %1400 = extractvalue { ptr, i32 } %1399, 0
  store ptr %1400, ptr %13, align 8
  %1401 = extractvalue { ptr, i32 } %1399, 1
  store i32 %1401, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #8
  br label %1402

1402:                                             ; preds = %1398, %1394
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #8
  br label %1403

1403:                                             ; preds = %1402, %1371, %1367, %1366
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #8
  br label %1431

1404:                                             ; preds = %1335
  br label %1405

1405:                                             ; preds = %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #8
  %1406 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %1406)
          to label %1407 unwind label %1415

1407:                                             ; preds = %1405
  call void @llvm.lifetime.start.p0(i64 16, ptr %139) #8
  %1408 = getelementptr inbounds %class.anon.557, ptr %139, i32 0, i32 0
  %1409 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %1409, ptr %1408, align 8, !tbaa !5
  %1410 = getelementptr inbounds %class.anon.557, ptr %139, i32 0, i32 1
  %1411 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1411, ptr %1410, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 8 dereferenceable(16) %139) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef %138)
          to label %1412 unwind label %1419

1412:                                             ; preds = %1407
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %139) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #8
  %1413 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1413, ptr noundef @.str.9)
          to label %1414 unwind label %1424

1414:                                             ; preds = %1412
  invoke void @__cxa_throw(ptr %1413, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %1354

1415:                                             ; preds = %1405
  %1416 = landingpad { ptr, i32 }
          cleanup
  %1417 = extractvalue { ptr, i32 } %1416, 0
  store ptr %1417, ptr %13, align 8
  %1418 = extractvalue { ptr, i32 } %1416, 1
  store i32 %1418, ptr %14, align 4
  br label %1423

1419:                                             ; preds = %1407
  %1420 = landingpad { ptr, i32 }
          cleanup
  %1421 = extractvalue { ptr, i32 } %1420, 0
  store ptr %1421, ptr %13, align 8
  %1422 = extractvalue { ptr, i32 } %1420, 1
  store i32 %1422, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %139) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #8
  br label %1423

1423:                                             ; preds = %1419, %1415
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #8
  br label %1431

1424:                                             ; preds = %1412
  %1425 = landingpad { ptr, i32 }
          cleanup
  %1426 = extractvalue { ptr, i32 } %1425, 0
  store ptr %1426, ptr %13, align 8
  %1427 = extractvalue { ptr, i32 } %1425, 1
  store i32 %1427, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1413) #8
  br label %1431

1428:                                             ; No predecessors!
  br label %1429

1429:                                             ; preds = %1428
  br label %1430

1430:                                             ; preds = %1429, %1393
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #8
  br label %1432

1431:                                             ; preds = %1424, %1423, %1403, %1354
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #8
  br label %1434

1432:                                             ; preds = %1430, %1324
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  br label %1433

1433:                                             ; preds = %1432
  store i8 0, ptr %118, align 1, !tbaa !71
  br label %1223, !llvm.loop !99

1434:                                             ; preds = %1431, %1330, %1253
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  br label %1435

1435:                                             ; preds = %1434, %1228
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #8
  br label %1441

1436:                                             ; preds = %1227
  br label %1437

1437:                                             ; preds = %1436
  store i8 0, ptr %118, align 1, !tbaa !71
  br label %1215, !llvm.loop !100

1438:                                             ; preds = %1218
  br label %1439

1439:                                             ; preds = %1438, %1213
  br label %1440

1440:                                             ; preds = %1439
  store i8 0, ptr %113, align 1, !tbaa !71
  br label %1177, !llvm.loop !101

1441:                                             ; preds = %1435, %1208, %1207, %1181
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #8
  br label %1446

1442:                                             ; preds = %1180
  br label %1443

1443:                                             ; preds = %1442
  store i8 0, ptr %113, align 1, !tbaa !71
  br label %1169, !llvm.loop !102

1444:                                             ; preds = %1172
  br label %1445

1445:                                             ; preds = %1444
  store i8 0, ptr %111, align 1, !tbaa !71
  br label %1160, !llvm.loop !103

1446:                                             ; preds = %1441, %1164
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #8
  br label %1452

1447:                                             ; preds = %1163
  br label %1448

1448:                                             ; preds = %1447
  store i8 0, ptr %111, align 1, !tbaa !71
  br label %1152, !llvm.loop !104

1449:                                             ; preds = %1155
  br label %1450

1450:                                             ; preds = %1449, %1150, %1070, %885, %425
  br label %1451

1451:                                             ; preds = %1450
  store i8 0, ptr %45, align 1, !tbaa !71
  br label %418, !llvm.loop !105

1452:                                             ; preds = %1446, %1147, %1067, %882, %426
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %1496

1453:                                             ; preds = %421
  br label %1454

1454:                                             ; preds = %1453
  store i8 0, ptr %45, align 1, !tbaa !71
  br label %412, !llvm.loop !106

1455:                                             ; preds = %415
  %1456 = load ptr, ptr %12, align 8, !tbaa !5
  %1457 = icmp ne ptr %1456, null
  br i1 %1457, label %1458, label %1459

1458:                                             ; preds = %1455
  br label %1461

1459:                                             ; preds = %1455
  call void @__assert_fail(ptr noundef @.str.75, ptr noundef @.str.7, i32 noundef 1843, ptr noundef @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

1460:                                             ; No predecessors!
  br label %1461

1461:                                             ; preds = %1460, %1458
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  store i32 0, ptr %41, align 4
  br label %1462

1462:                                             ; preds = %1461, %405
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  %1463 = load i32, ptr %41, align 4
  switch i32 %1463, label %1467 [
    i32 0, label %1464
  ]

1464:                                             ; preds = %1462
  br label %1465

1465:                                             ; preds = %1464
  %1466 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %397

1467:                                             ; preds = %1462, %399
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %1468

1468:                                             ; preds = %1467
  br label %1469

1469:                                             ; preds = %1468
  %1470 = load ptr, ptr %10, align 8, !tbaa !5
  %1471 = icmp ne ptr %1470, null
  br i1 %1471, label %1472, label %1491

1472:                                             ; preds = %1469
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #8
  %1473 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef nonnull align 8 dereferenceable(8) %1473)
          to label %1474 unwind label %1478

1474:                                             ; preds = %1472
  call void @llvm.lifetime.start.p0(i64 1, ptr %142) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %141, ptr noundef nonnull align 1 dereferenceable(1) %142) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef %141)
          to label %1475 unwind label %1482

1475:                                             ; preds = %1474
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #8
  %1476 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1476, ptr noundef @.str.9)
          to label %1477 unwind label %1487

1477:                                             ; preds = %1475
  invoke void @__cxa_throw(ptr %1476, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1502 unwind label %148

1478:                                             ; preds = %1472
  %1479 = landingpad { ptr, i32 }
          cleanup
  %1480 = extractvalue { ptr, i32 } %1479, 0
  store ptr %1480, ptr %13, align 8
  %1481 = extractvalue { ptr, i32 } %1479, 1
  store i32 %1481, ptr %14, align 4
  br label %1486

1482:                                             ; preds = %1474
  %1483 = landingpad { ptr, i32 }
          cleanup
  %1484 = extractvalue { ptr, i32 } %1483, 0
  store ptr %1484, ptr %13, align 8
  %1485 = extractvalue { ptr, i32 } %1483, 1
  store i32 %1485, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #8
  br label %1486

1486:                                             ; preds = %1482, %1478
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #8
  br label %1496

1487:                                             ; preds = %1475
  %1488 = landingpad { ptr, i32 }
          cleanup
  %1489 = extractvalue { ptr, i32 } %1488, 0
  store ptr %1489, ptr %13, align 8
  %1490 = extractvalue { ptr, i32 } %1488, 1
  store i32 %1490, ptr %14, align 4
  call void @__cxa_free_exception(ptr %1476) #8
  br label %1496

1491:                                             ; preds = %1469
  br label %1492

1492:                                             ; preds = %1491
  br label %1493

1493:                                             ; preds = %1492
  %1494 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZNKSt8functionIFvRKN3HIR7TypeRefEEEclES3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(8) %1494)
          to label %1495 unwind label %148

1495:                                             ; preds = %1493
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  ret void

1496:                                             ; preds = %1487, %1486, %1452, %381, %192, %176, %160, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %1497

1497:                                             ; preds = %1496
  %1498 = load ptr, ptr %13, align 8
  %1499 = load i32, ptr %14, align 4
  %1500 = insertvalue { ptr, i32 } poison, ptr %1498, 0
  %1501 = insertvalue { ptr, i32 } %1500, i32 %1499, 1
  resume { ptr, i32 } %1501

1502:                                             ; preds = %1477, %1414, %1353, %1292, %1252, %1198, %1129, %987, %933, %849, %792, %768, %708, %642, %598, %478, %354, %319, %280, %228
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i8 @_ZNK3MIR6LValue7Storage9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR5Crate18get_static_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 nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) #1 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue7Wrapper3tagEv(ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue7Wrapper8as_FieldEv(ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEENK4$_20clERKNS8_13GenericParamsERKNS8_4PathESB_"(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(88), 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 @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef signext i8 @_ZNK3MIR6LValue7Wrapper8as_DerefEv(ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue7Wrapper11as_DowncastEv(ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #4 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "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 = { 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 #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !6, i64 16}
!11 = !{!"_ZTS10MirBuilder", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !12, i64 48, !13, i64 52, !14, i64 56, !13, i64 168, !16, i64 176, !18, i64 216, !18, i64 240, !22, i64 264, !23, i64 272, !31, i64 320, !35, i64 344, !39, i64 368, !40, i64 384, !44, i64 408}
!12 = !{!"int", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN3MIR6RValueE", !15, i64 0, !7, i64 8}
!15 = !{!"_ZTSN3MIR6RValue3TagE", !7, i64 0}
!16 = !{!"_ZTS8VarState", !17, i64 0, !7, i64 8}
!17 = !{!"_ZTSN8VarState3TagE", !7, i64 0}
!18 = !{!"_ZTSSt6vectorI8VarStateSaIS0_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseI8VarStateSaIS0_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"long", !7, i64 0}
!23 = !{!"_ZTSSt3mapIjjSt4lessIjESaISt4pairIKjjEEE", !24, i64 0}
!24 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE", !25, i64 0}
!25 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !26, i64 0, !28, i64 8}
!26 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !27, i64 0}
!27 = !{!"_ZTSSt4lessIjE"}
!28 = !{!"_ZTSSt15_Rb_tree_header", !29, i64 0, !22, i64 32}
!29 = !{!"_ZTSSt18_Rb_tree_node_base", !30, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!30 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!31 = !{!"_ZTSSt6vectorIN10MirBuilder8ScopeDefESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt6vectorIjSaIjEE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!"_ZTS11ScopeHandle", !6, i64 0, !12, i64 8}
!40 = !{!"_ZTSSt6vectorISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!44 = !{!"_ZTSN3MIR6LValueE", !45, i64 0, !46, i64 8}
!45 = !{!"_ZTSN3MIR6LValue7StorageE", !22, i64 0}
!46 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!12, !12, i64 0}
!51 = !{!11, !6, i64 24}
!52 = !{!11, !6, i64 32}
!53 = !{!11, !6, i64 8}
!54 = !{!55, !6, i64 0}
!55 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !56, i64 24, !61, i64 72, !67, i64 104, !67, i64 112, !67, i64 120, !67, i64 128, !67, i64 136, !67, i64 144, !67, i64 152, !67, i64 160, !67, i64 168, !67, i64 176, !67, i64 184, !67, i64 192, !67, i64 200, !67, i64 208}
!56 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !57, i64 0}
!57 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !58, i64 0}
!58 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !59, i64 0, !28, i64 8}
!59 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !60, i64 0}
!60 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!61 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !62, i64 0, !66, i64 24}
!62 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !63, i64 0}
!63 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!66 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!67 = !{!"_ZTSN3HIR10SimplePathE", !68, i64 0}
!68 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!69 = !{!70, !6, i64 16}
!70 = !{!"_ZTSZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEE4$_20", !6, i64 0, !6, i64 8, !6, i64 16}
!71 = !{!13, !13, i64 0}
!72 = !{i8 0, i8 2}
!73 = !{}
!74 = distinct !{!74, !75}
!75 = !{!"llvm.loop.mustprogress"}
!76 = distinct !{!76, !75}
!77 = distinct !{!77, !75}
!78 = distinct !{!78, !75}
!79 = distinct !{!79, !75}
!80 = distinct !{!80, !75}
!81 = distinct !{!81, !75}
!82 = distinct !{!82, !75}
!83 = distinct !{!83, !75}
!84 = distinct !{!84, !75}
!85 = distinct !{!85, !75}
!86 = distinct !{!86, !75}
!87 = distinct !{!87, !75}
!88 = distinct !{!88, !75}
!89 = distinct !{!89, !75}
!90 = distinct !{!90, !75}
!91 = distinct !{!91, !75}
!92 = distinct !{!92, !75}
!93 = distinct !{!93, !75}
!94 = distinct !{!94, !75}
!95 = distinct !{!95, !75}
!96 = distinct !{!96, !75}
!97 = distinct !{!97, !75}
!98 = distinct !{!98, !75}
!99 = distinct !{!99, !75}
!100 = distinct !{!100, !75}
!101 = distinct !{!101, !75}
!102 = distinct !{!102, !75}
!103 = distinct !{!103, !75}
!104 = distinct !{!104, !75}
!105 = distinct !{!105, !75}
!106 = distinct !{!106, !75}


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

%"class.HIR::TypeRef" = type { ptr }
%struct.Span = type { ptr }
%"class.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.493 = type { i8 }
%class.anon.506 = type { ptr, ptr }
%class.anon.507 = type { ptr }
%class.anon.508 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.408" = type { ptr }
%class.anon.509 = type { ptr, ptr, ptr }
%class.anon.510 = type { ptr }
%class.anon.526 = type { ptr }
%class.anon.527 = type { ptr, ptr, ptr }
%class.anon.531 = type { ptr, ptr, ptr }
%class.anon.534 = type { ptr }
%class.anon.535 = type { ptr }
%class.anon.536 = type { ptr, ptr }
%class.anon.537 = type { ptr }
%class.anon.538 = type { ptr }
%class.anon.539 = type { ptr }
%class.anon.540 = type { ptr }
%class.anon.551 = type { i8 }
%class.anon.553 = type { i8 }
%class.anon.555 = type { i8 }
%class.anon.557 = type { ptr, ptr }
%class.anon.558 = type { i8 }

@.str.6 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [78 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.15 = external hidden unnamed_addr constant [24 x i8], align 1
@__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE = external hidden unnamed_addr constant [154 x i8], align 1
@__func__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE = external hidden unnamed_addr constant [14 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [5 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK10MirBuilder17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %3, ptr noundef readnone %4) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.HIR::TypeRef", align 8
  %7 = alloca %struct.Span, align 8
  %8 = alloca %"class.std::function", align 8
  %9 = alloca %class.anon.493, align 1
  %10 = alloca ptr, align 8
  %11 = alloca %struct.Span, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.506, align 8
  %14 = alloca %struct.Span, align 8
  %15 = alloca %"class.std::function", align 8
  %16 = alloca %class.anon.507, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %struct.Span, align 8
  %19 = alloca %"class.std::function", align 8
  %20 = alloca %class.anon.508, align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.408", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.408", align 8
  %23 = alloca %class.anon.509, align 8
  %24 = alloca i32, align 4
  %25 = alloca %struct.Span, align 8
  %26 = alloca %"class.std::function", align 8
  %27 = alloca %class.anon.510, align 8
  %28 = alloca %struct.Span, align 8
  %29 = alloca %"class.std::function", align 8
  %30 = alloca %class.anon.526, align 8
  %31 = alloca %struct.Span, align 8
  %32 = alloca %"class.std::function", align 8
  %33 = alloca %class.anon.527, align 8
  %34 = alloca %struct.Span, align 8
  %35 = alloca %"class.std::function", align 8
  %36 = alloca %class.anon.531, align 8
  %37 = alloca %struct.Span, align 8
  %38 = alloca %"class.std::function", align 8
  %39 = alloca %class.anon.534, align 8
  %40 = alloca %struct.Span, align 8
  %41 = alloca %"class.std::function", align 8
  %42 = alloca %class.anon.535, align 8
  %43 = alloca %struct.Span, align 8
  %44 = alloca %"class.std::function", align 8
  %45 = alloca %class.anon.536, align 8
  %46 = alloca %struct.Span, align 8
  %47 = alloca %"class.std::function", align 8
  %48 = alloca %class.anon.537, align 8
  %49 = alloca %struct.Span, align 8
  %50 = alloca %"class.std::function", align 8
  %51 = alloca %class.anon.538, align 8
  %52 = alloca %struct.Span, align 8
  %53 = alloca %"class.std::function", align 8
  %54 = alloca %class.anon.539, align 8
  %55 = alloca %struct.Span, align 8
  %56 = alloca %"class.std::function", align 8
  %57 = alloca %class.anon.540, align 8
  %58 = alloca %struct.Span, align 8
  %59 = alloca %"class.std::function", align 8
  %60 = alloca %class.anon.551, align 1
  %61 = alloca %struct.Span, align 8
  %62 = alloca %"class.std::function", align 8
  %63 = alloca %class.anon.553, align 1
  %64 = alloca %struct.Span, align 8
  %65 = alloca %"class.std::function", align 8
  %66 = alloca %class.anon.555, align 1
  %67 = alloca %struct.Span, align 8
  %68 = alloca %"class.std::function", align 8
  %69 = alloca %class.anon.557, align 8
  %70 = alloca %struct.Span, align 8
  %71 = alloca %"class.std::function", align 8
  %72 = alloca %class.anon.558, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  call void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6)
  %73 = call noundef i32 @_ZNK3MIR6LValue7Storage3tagEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  switch i32 %73, label %.thread422 [
    i32 4, label %76
    i32 3, label %177
    i32 0, label %77
    i32 1, label %88
    i32 2, label %96
  ]

74:                                               ; preds = %519, %511
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %521

76:                                               ; preds = %5
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1707, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

77:                                               ; preds = %5
  %78 = invoke noundef i32 @_ZNK3MIR6LValue7Storage11as_ArgumentEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %79 unwind label %86

79:                                               ; preds = %77
  %80 = getelementptr inbounds i8, ptr %0, i64 24
  %81 = load ptr, ptr %80, align 8, !tbaa !5
  %82 = zext i32 %78 to i64
  %83 = invoke noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %81, i64 noundef %82)
          to label %84 unwind label %86

84:                                               ; preds = %79
  %85 = getelementptr inbounds i8, ptr %83, i64 216
  br label %.thread

86:                                               ; preds = %79, %77
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %521

88:                                               ; preds = %5
  %89 = call noundef i32 @_ZNK3MIR6LValue7Storage8as_LocalEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %90 = getelementptr inbounds i8, ptr %0, i64 32
  %91 = load ptr, ptr %90, align 8, !tbaa !48
  %92 = zext i32 %89 to i64
  %93 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %91, i64 noundef %92)
          to label %.thread unwind label %94

94:                                               ; preds = %88
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %521

96:                                               ; preds = %5
  %97 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNK3MIR6LValue7Storage9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %98 = call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %97)
  switch i32 %98, label %.thread422 [
    i32 0, label %99
    i32 1, label %100
    i32 3, label %128
    i32 4, label %145
    i32 2, label %160
  ]

99:                                               ; preds = %96
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1705, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

100:                                              ; preds = %96
  %101 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %97)
  %102 = getelementptr inbounds i8, ptr %101, i64 16
  %103 = call noundef zeroext i1 @_ZNK10ThinVectorIN3HIR7TypeRefEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(8) %102)
  br i1 %103, label %118, label %104

104:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %105 unwind label %111

105:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 1 dereferenceable(1) %9) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull %8)
          to label %106 unwind label %113

106:                                              ; preds = %105
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  %107 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %107, ptr noundef nonnull @.str.9)
          to label %108 unwind label %116

108:                                              ; preds = %106
  invoke void @__cxa_throw(ptr nonnull %107, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %109

109:                                              ; preds = %108
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %521

111:                                              ; preds = %104
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %115

113:                                              ; preds = %105
  %114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br label %115

115:                                              ; preds = %113, %111
  %.pn338 = phi { ptr, i32 } [ %114, %113 ], [ %112, %111 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br label %521

116:                                              ; preds = %106
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %107) #8
  br label %521

118:                                              ; preds = %100
  %119 = getelementptr inbounds i8, ptr %0, i64 8
  %120 = load ptr, ptr %119, align 8, !tbaa !49
  %121 = getelementptr inbounds i8, ptr %120, i64 8
  %122 = load ptr, ptr %121, align 8, !tbaa !50
  %123 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR5Crate18get_static_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %122, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %124 unwind label %126

124:                                              ; preds = %118
  %125 = getelementptr inbounds i8, ptr %123, i64 176
  br label %.thread

126:                                              ; preds = %118
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %521

128:                                              ; preds = %96
  %129 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %97)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  store ptr @__func__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE, ptr %10, align 8, !tbaa !65
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %130 unwind label %135

130:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #8
  store ptr %10, ptr %13, align 8, !tbaa !65
  %131 = getelementptr inbounds i8, ptr %13, i64 8
  store ptr %97, ptr %131, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(16) %13) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %12)
          to label %132 unwind label %137

132:                                              ; preds = %130
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  %133 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %133, ptr noundef nonnull @.str.15)
          to label %134 unwind label %140

134:                                              ; preds = %132
  invoke void @__cxa_throw(ptr nonnull %133, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %142

135:                                              ; preds = %128
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %139

137:                                              ; preds = %130
  %138 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br label %139

139:                                              ; preds = %137, %135
  %.pn334 = phi { ptr, i32 } [ %138, %137 ], [ %136, %135 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %144

140:                                              ; preds = %132
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %133) #8
  br label %144

142:                                              ; preds = %134
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %144

144:                                              ; preds = %142, %140, %139
  %.pn336 = phi { ptr, i32 } [ %143, %142 ], [ %141, %140 ], [ %.pn334, %139 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %521

145:                                              ; preds = %96
  %146 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %97)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %147 unwind label %153

147:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  store ptr %97, ptr %16, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull %15)
          to label %148 unwind label %155

148:                                              ; preds = %147
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  %149 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %149, ptr noundef nonnull @.str.9)
          to label %150 unwind label %158

150:                                              ; preds = %148
  invoke void @__cxa_throw(ptr nonnull %149, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %151

151:                                              ; preds = %150
  %152 = landingpad { ptr, i32 }
          cleanup
  br label %521

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

155:                                              ; preds = %147
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  br label %157

157:                                              ; preds = %155, %153
  %.pn330 = phi { ptr, i32 } [ %156, %155 ], [ %154, %153 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %521

158:                                              ; preds = %148
  %159 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %149) #8
  br label %521

160:                                              ; preds = %96
  %161 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %97)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  store ptr @__func__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE, ptr %17, align 8, !tbaa !65
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %162 unwind label %167

162:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #8
  store ptr %17, ptr %20, align 8, !tbaa !65
  %163 = getelementptr inbounds i8, ptr %20, i64 8
  store ptr %97, ptr %163, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(16) %20) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull %19)
          to label %164 unwind label %169

164:                                              ; preds = %162
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  %165 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %165, ptr noundef nonnull @.str.15)
          to label %166 unwind label %172

166:                                              ; preds = %164
  invoke void @__cxa_throw(ptr nonnull %165, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %174

167:                                              ; preds = %160
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %171

169:                                              ; preds = %162
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br label %171

171:                                              ; preds = %169, %167
  %.pn = phi { ptr, i32 } [ %170, %169 ], [ %168, %167 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %176

172:                                              ; preds = %164
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %165) #8
  br label %176

174:                                              ; preds = %166
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %176

176:                                              ; preds = %174, %172, %171
  %.pn328 = phi { ptr, i32 } [ %175, %174 ], [ %173, %172 ], [ %.pn, %171 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %521

177:                                              ; preds = %5
  %178 = call noundef signext i8 @_ZNK3MIR6LValue7Storage9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %179 = getelementptr inbounds i8, ptr %0, i64 16
  %180 = load ptr, ptr %179, align 8, !tbaa !66
  %.not = icmp eq ptr %180, null
  br i1 %.not, label %.thread422, label %.thread

.thread422:                                       ; preds = %96, %5, %177
  call void @__assert_fail(ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.7, i32 noundef 1708, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

.thread:                                          ; preds = %124, %88, %84, %177
  %.1194420 = phi ptr [ %180, %177 ], [ %125, %124 ], [ %93, %88 ], [ %85, %84 ]
  %181 = getelementptr inbounds i8, ptr %2, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  %182 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %181) #8
  store ptr %182, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %183 = call ptr @_ZNKSt6vectorIN3MIR6LValue7WrapperESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %181) #8
  store ptr %183, ptr %22, align 8
  %184 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br i1 %184, label %.lr.ph2081, label %._crit_edge2082

.lr.ph2081:                                       ; preds = %.thread
  %185 = getelementptr inbounds i8, ptr %23, i64 8
  %186 = getelementptr inbounds i8, ptr %23, i64 16
  br label %187

187:                                              ; preds = %.lr.ph2081, %.loopexit478.thread
  %.21952080 = phi ptr [ %.1194420, %.lr.ph2081 ], [ %.3.lcssa2138, %.loopexit478.thread ]
  %188 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  %.not412 = icmp eq ptr %188, %4
  br i1 %.not412, label %.thread428, label %.lr.ph

.thread428:                                       ; preds = %187
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %519

.loopexit478.thread2143:                          ; preds = %..loopexit435_crit_edge, %270, %302, %.preheader, %.preheader442
  %.6.lcssa.ph = phi ptr [ %210, %.preheader442 ], [ %211, %.preheader ], [ %307, %302 ], [ %275, %270 ], [ %349, %..loopexit435_crit_edge ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  br label %.loopexit478.thread

.loopexit478:                                     ; preds = %225
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  br label %.loopexit478.thread2139

.lr.ph:                                           ; preds = %187
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #8
  store ptr %6, ptr %23, align 8, !tbaa !65
  store ptr %1, ptr %185, align 8, !tbaa !65
  store ptr %0, ptr %186, align 8, !tbaa !67
  %189 = call noundef i32 @_ZNK3MIR6LValue7Wrapper3tagEv(ptr noundef nonnull align 4 dereferenceable(4) %188)
  switch i32 %189, label %.loopexit478.thread2139 [
    i32 4, label %194
    i32 1, label %.preheader469
    i32 0, label %.preheader471
    i32 3, label %.preheader473
    i32 2, label %.preheader463.lr.ph
  ]

.preheader473:                                    ; preds = %.lr.ph
  %190 = call noundef i32 @_ZNK3MIR6LValue7Wrapper8as_IndexEv(ptr noundef nonnull align 4 dereferenceable(4) %188)
  %191 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.21952080)
  %192 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %191)
  switch i32 %192, label %.split1109 [
    i32 0, label %.split1112
    i32 9, label %387
    i32 8, label %390
  ]

.preheader471:                                    ; preds = %.lr.ph
  %193 = invoke noundef signext i8 @_ZNK3MIR6LValue7Wrapper8as_DerefEv(ptr noundef nonnull align 4 dereferenceable(4) %188)
          to label %.preheader465 unwind label %.split1616

194:                                              ; preds = %.lr.ph
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1729, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

.preheader469:                                    ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #8
  %195 = invoke noundef i32 @_ZNK3MIR6LValue7Wrapper8as_FieldEv(ptr noundef nonnull align 4 dereferenceable(4) %188)
          to label %.lr.ph2066 unwind label %196

196:                                              ; preds = %.preheader469
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %350

198:                                              ; preds = %217
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %350

.lr.ph2066:                                       ; preds = %.preheader469
  store i32 %195, ptr %24, align 4, !tbaa !69
  %200 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.21952080)
  %201 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %200)
  switch i32 %201, label %213 [
    i32 0, label %212
    i32 8, label %.preheader
    i32 9, label %.preheader442
    i32 4, label %.preheader444
    i32 10, label %.preheader446
  ]

.preheader446:                                    ; preds = %.lr.ph2066
  %202 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %200)
  %203 = load i32, ptr %24, align 4, !tbaa !69
  %204 = zext i32 %203 to i64
  %205 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %202) #8
  %206 = icmp ugt i64 %205, %204
  br i1 %206, label %..loopexit435_crit_edge, label %.split1759

.preheader444:                                    ; preds = %.lr.ph2066
  %207 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %200)
  %208 = getelementptr inbounds i8, ptr %207, i64 88
  %209 = call noundef ptr @_ZNK3HIR15TypePathBinding10opt_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %208)
  %.not384 = icmp eq ptr %209, null
  br i1 %.not384, label %.split1798, label %225

.preheader442:                                    ; preds = %.lr.ph2066
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %200)
  br label %.loopexit478.thread2143

.preheader:                                       ; preds = %.lr.ph2066
  %211 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %200)
  br label %.loopexit478.thread2143

212:                                              ; preds = %.lr.ph2066
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1731, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

213:                                              ; preds = %.lr.ph2066
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %214 unwind label %218

214:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  store ptr %.21952080, ptr %27, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull %26)
          to label %215 unwind label %220

215:                                              ; preds = %214
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  %216 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %216, ptr noundef nonnull @.str.9)
          to label %217 unwind label %223

217:                                              ; preds = %215
  invoke void @__cxa_throw(ptr nonnull %216, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %198

218:                                              ; preds = %213
  %219 = landingpad { ptr, i32 }
          cleanup
  br label %222

220:                                              ; preds = %214
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br label %222

222:                                              ; preds = %220, %218
  %.pn406 = phi { ptr, i32 } [ %221, %220 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  br label %350

223:                                              ; preds = %215
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %216) #8
  br label %350

225:                                              ; preds = %.preheader444
  %226 = load ptr, ptr %209, align 8, !tbaa !65
  %227 = getelementptr inbounds i8, ptr %226, i64 104
  %228 = call noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %227)
  switch i32 %228, label %.loopexit478 [
    i32 0, label %.split1802
    i32 1, label %.split1804
    i32 2, label %245
    i32 3, label %277
  ]

229:                                              ; preds = %.invoke
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %350

.split1802:                                       ; preds = %225
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1760, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

.split1804:                                       ; preds = %225
  %231 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %227)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %232 unwind label %238

232:                                              ; preds = %.split1804
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #8
  store ptr %.21952080, ptr %30, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull %29)
          to label %233 unwind label %240

233:                                              ; preds = %232
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  %234 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %234, ptr noundef nonnull @.str.9)
          to label %235 unwind label %243

235:                                              ; preds = %233
  invoke void @__cxa_throw(ptr nonnull %234, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %236

236:                                              ; preds = %235
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %350

238:                                              ; preds = %.split1804
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %242

240:                                              ; preds = %232
  %241 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %242

242:                                              ; preds = %240, %238
  %.pn400 = phi { ptr, i32 } [ %241, %240 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %350

243:                                              ; preds = %233
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %234) #8
  br label %350

245:                                              ; preds = %225
  %246 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %227)
  %247 = load i32, ptr %24, align 4, !tbaa !69
  %248 = zext i32 %247 to i64
  %249 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %246) #8
  %250 = icmp ugt i64 %249, %248
  br i1 %250, label %270, label %.split1815

.split1815:                                       ; preds = %245
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %251 unwind label %260

251:                                              ; preds = %.split1815
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #8
  store ptr %.21952080, ptr %33, align 8, !tbaa !65
  %252 = getelementptr inbounds i8, ptr %33, i64 8
  store ptr %24, ptr %252, align 8, !tbaa !65
  %253 = getelementptr inbounds i8, ptr %33, i64 16
  store ptr %246, ptr %253, align 8, !tbaa !65
  invoke void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %254 unwind label %262

254:                                              ; preds = %251
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull %32)
          to label %255 unwind label %264

255:                                              ; preds = %254
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  %256 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %256, ptr noundef nonnull @.str.9)
          to label %257 unwind label %268

257:                                              ; preds = %255
  invoke void @__cxa_throw(ptr nonnull %256, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %258

258:                                              ; preds = %257
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %350

260:                                              ; preds = %.split1815
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %267

262:                                              ; preds = %251
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %266

264:                                              ; preds = %254
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %266

266:                                              ; preds = %264, %262
  %.pn395 = phi { ptr, i32 } [ %265, %264 ], [ %263, %262 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  br label %267

267:                                              ; preds = %266, %260
  %.pn395.pn = phi { ptr, i32 } [ %.pn395, %266 ], [ %261, %260 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  br label %350

268:                                              ; preds = %255
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %256) #8
  br label %350

270:                                              ; preds = %245
  %271 = load i32, ptr %24, align 4, !tbaa !69
  %272 = zext i32 %271 to i64
  %273 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %246, i64 noundef %272) #8
  %274 = getelementptr inbounds i8, ptr %273, i64 16
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEENK4$_20clERKNS8_13GenericParamsERKNS8_4PathESB_"(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(96) %226, ptr noundef nonnull align 8 dereferenceable(88) %207, ptr noundef nonnull align 8 dereferenceable(8) %274)
          to label %.loopexit478.thread2143 unwind label %.split1819.split

.split1819.split:                                 ; preds = %270
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %350

277:                                              ; preds = %225
  %278 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %227)
  %279 = load i32, ptr %24, align 4, !tbaa !69
  %280 = zext i32 %279 to i64
  %281 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %278) #8
  %282 = icmp ugt i64 %281, %280
  br i1 %282, label %302, label %.split1808

.split1808:                                       ; preds = %277
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %283 unwind label %292

283:                                              ; preds = %.split1808
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %36) #8
  store ptr %.21952080, ptr %36, align 8, !tbaa !65
  %284 = getelementptr inbounds i8, ptr %36, i64 8
  store ptr %24, ptr %284, align 8, !tbaa !65
  %285 = getelementptr inbounds i8, ptr %36, i64 16
  store ptr %278, ptr %285, align 8, !tbaa !65
  invoke void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %286 unwind label %294

286:                                              ; preds = %283
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull %35)
          to label %287 unwind label %296

287:                                              ; preds = %286
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  %288 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %288, ptr noundef nonnull @.str.9)
          to label %289 unwind label %300

289:                                              ; preds = %287
  invoke void @__cxa_throw(ptr nonnull %288, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %290

290:                                              ; preds = %289
  %291 = landingpad { ptr, i32 }
          cleanup
  br label %350

292:                                              ; preds = %.split1808
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %299

294:                                              ; preds = %283
  %295 = landingpad { ptr, i32 }
          cleanup
  br label %298

296:                                              ; preds = %286
  %297 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %298

298:                                              ; preds = %296, %294
  %.pn390 = phi { ptr, i32 } [ %297, %296 ], [ %295, %294 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  br label %299

299:                                              ; preds = %298, %292
  %.pn390.pn = phi { ptr, i32 } [ %.pn390, %298 ], [ %293, %292 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  br label %350

300:                                              ; preds = %287
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %288) #8
  br label %350

302:                                              ; preds = %277
  %303 = load i32, ptr %24, align 4, !tbaa !69
  %304 = zext i32 %303 to i64
  %305 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %278, i64 noundef %304) #8
  %306 = getelementptr inbounds i8, ptr %305, i64 24
  %307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEENK4$_20clERKNS8_13GenericParamsERKNS8_4PathESB_"(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(96) %226, ptr noundef nonnull align 8 dereferenceable(88) %207, ptr noundef nonnull align 8 dereferenceable(8) %306)
          to label %.loopexit478.thread2143 unwind label %.split1812.split

.split1812.split:                                 ; preds = %302
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %350

.split1798:                                       ; preds = %.preheader444
  %309 = call noundef ptr @_ZNK3HIR15TypePathBinding9opt_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %208)
  %.not385 = icmp eq ptr %309, null
  br i1 %.not385, label %321, label %310

310:                                              ; preds = %.split1798
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %311 unwind label %314

311:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  store ptr %.21952080, ptr %39, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull %38)
          to label %312 unwind label %316

312:                                              ; preds = %311
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  %313 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %313, ptr noundef nonnull @.str.9)
          to label %.invoke unwind label %319

314:                                              ; preds = %310
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %318

316:                                              ; preds = %311
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  br label %318

318:                                              ; preds = %316, %314
  %.pn388 = phi { ptr, i32 } [ %317, %316 ], [ %315, %314 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  br label %350

319:                                              ; preds = %312
  %320 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %313) #8
  br label %350

321:                                              ; preds = %.split1798
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %322 unwind label %326

322:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  store ptr %.21952080, ptr %42, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull %41)
          to label %323 unwind label %328

323:                                              ; preds = %322
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  %324 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %324, ptr noundef nonnull @.str.9)
          to label %.invoke unwind label %331

.invoke:                                          ; preds = %323, %312
  %325 = phi ptr [ %313, %312 ], [ %324, %323 ]
  invoke void @__cxa_throw(ptr nonnull %325, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %.cont unwind label %229

.cont:                                            ; preds = %.invoke
  unreachable

326:                                              ; preds = %321
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %330

328:                                              ; preds = %322
  %329 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  br label %330

330:                                              ; preds = %328, %326
  %.pn386 = phi { ptr, i32 } [ %329, %328 ], [ %327, %326 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  br label %350

331:                                              ; preds = %323
  %332 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %324) #8
  br label %350

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

.split1759:                                       ; preds = %.preheader446
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %335 unwind label %340

335:                                              ; preds = %.split1759
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #8
  store ptr %24, ptr %45, align 8, !tbaa !65
  %336 = getelementptr inbounds i8, ptr %45, i64 8
  store ptr %202, ptr %336, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(16) %45) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull %44)
          to label %337 unwind label %342

337:                                              ; preds = %335
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  %338 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %338, ptr noundef nonnull @.str.9)
          to label %339 unwind label %345

339:                                              ; preds = %337
  invoke void @__cxa_throw(ptr nonnull %338, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %333

340:                                              ; preds = %.split1759
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %344

342:                                              ; preds = %335
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  br label %344

344:                                              ; preds = %342, %340
  %.pn380 = phi { ptr, i32 } [ %343, %342 ], [ %341, %340 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %350

345:                                              ; preds = %337
  %346 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %338) #8
  br label %350

..loopexit435_crit_edge:                          ; preds = %.preheader446
  %347 = load i32, ptr %24, align 4, !tbaa !69
  %348 = zext i32 %347 to i64
  %349 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %202, i64 noundef %348) #8
  br label %.loopexit478.thread2143

350:                                              ; preds = %198, %222, %223, %243, %242, %236, %.split1819.split, %268, %267, %258, %.split1812.split, %300, %299, %290, %331, %330, %319, %318, %229, %345, %344, %333, %196
  %.pn408.pn = phi { ptr, i32 } [ %197, %196 ], [ %199, %198 ], [ %224, %223 ], [ %.pn406, %222 ], [ %230, %229 ], [ %320, %319 ], [ %.pn388, %318 ], [ %332, %331 ], [ %.pn386, %330 ], [ %237, %236 ], [ %244, %243 ], [ %.pn400, %242 ], [ %276, %.split1819.split ], [ %259, %258 ], [ %269, %268 ], [ %.pn395.pn, %267 ], [ %308, %.split1812.split ], [ %291, %290 ], [ %301, %300 ], [ %.pn390.pn, %299 ], [ %334, %333 ], [ %346, %345 ], [ %.pn380, %344 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  br label %504

.preheader465:                                    ; preds = %.preheader471
  %351 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.21952080)
  %352 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %351)
  switch i32 %352, label %.split1374 [
    i32 0, label %.split1377
    i32 4, label %.preheader448
    i32 12, label %.preheader450
    i32 11, label %.preheader452
  ]

.split1616:                                       ; preds = %.preheader471
  %353 = landingpad { ptr, i32 }
          cleanup
  br label %504

354:                                              ; preds = %365
  %355 = landingpad { ptr, i32 }
          cleanup
  br label %504

.preheader452:                                    ; preds = %.preheader465
  %356 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %351)
  %357 = getelementptr inbounds i8, ptr %356, i64 8
  br label %.loopexit478.thread

.preheader450:                                    ; preds = %.preheader465
  %358 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %351)
  %359 = getelementptr inbounds i8, ptr %358, i64 8
  br label %.loopexit478.thread

.preheader448:                                    ; preds = %.preheader465
  %360 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %351)
  %361 = invoke noundef ptr @_ZNK10MirBuilder17is_type_owned_boxERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %.21952080)
          to label %373 unwind label %.loopexit437.split.split.split.split.split

.split1377:                                       ; preds = %.preheader465
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1778, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

.split1374:                                       ; preds = %.preheader465
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %362 unwind label %366

362:                                              ; preds = %.split1374
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #8
  store ptr %.21952080, ptr %48, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull %47)
          to label %363 unwind label %368

363:                                              ; preds = %362
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #8
  %364 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %364, ptr noundef nonnull @.str.9)
          to label %365 unwind label %371

365:                                              ; preds = %363
  invoke void @__cxa_throw(ptr nonnull %364, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %354

366:                                              ; preds = %.split1374
  %367 = landingpad { ptr, i32 }
          cleanup
  br label %370

368:                                              ; preds = %362
  %369 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  br label %370

370:                                              ; preds = %368, %366
  %.pn375 = phi { ptr, i32 } [ %369, %368 ], [ %367, %366 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #8
  br label %504

371:                                              ; preds = %363
  %372 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %364) #8
  br label %504

373:                                              ; preds = %.preheader448
  %.not370 = icmp eq ptr %361, null
  br i1 %.not370, label %.split1300, label %.loopexit478.thread, !llvm.loop !70

.loopexit437.split.split.split.split.split:       ; preds = %.preheader448
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %504

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

.split1300:                                       ; preds = %373
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %374 unwind label %378

374:                                              ; preds = %.split1300
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #8
  store ptr %.21952080, ptr %51, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull %50)
          to label %375 unwind label %380

375:                                              ; preds = %374
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #8
  %376 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %376, ptr noundef nonnull @.str.9)
          to label %377 unwind label %383

377:                                              ; preds = %375
  invoke void @__cxa_throw(ptr nonnull %376, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %.loopexit.split-lp

378:                                              ; preds = %.split1300
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %382

380:                                              ; preds = %374
  %381 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  br label %382

382:                                              ; preds = %380, %378
  %.pn371 = phi { ptr, i32 } [ %381, %380 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #8
  br label %504

383:                                              ; preds = %375
  %384 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %376) #8
  br label %504

385:                                              ; preds = %396
  %386 = landingpad { ptr, i32 }
          cleanup
  br label %504

.split1112:                                       ; preds = %.preheader473
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1809, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

387:                                              ; preds = %.preheader473
  %388 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.21952080)
  %389 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %388)
  br label %.loopexit478.thread

390:                                              ; preds = %.preheader473
  %391 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.21952080)
  %392 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %391)
  br label %.loopexit478.thread

.split1109:                                       ; preds = %.preheader473
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %393 unwind label %397

393:                                              ; preds = %.split1109
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #8
  store ptr %.21952080, ptr %54, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull %53)
          to label %394 unwind label %399

394:                                              ; preds = %393
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  %395 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %395, ptr noundef nonnull @.str.9)
          to label %396 unwind label %402

396:                                              ; preds = %394
  invoke void @__cxa_throw(ptr nonnull %395, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %385

397:                                              ; preds = %.split1109
  %398 = landingpad { ptr, i32 }
          cleanup
  br label %401

399:                                              ; preds = %393
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br label %401

401:                                              ; preds = %399, %397
  %.pn366 = phi { ptr, i32 } [ %400, %399 ], [ %398, %397 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  br label %504

402:                                              ; preds = %394
  %403 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %395) #8
  br label %504

.preheader463.lr.ph:                              ; preds = %.lr.ph
  %404 = call noundef i32 @_ZNK3MIR6LValue7Wrapper11as_DowncastEv(ptr noundef nonnull align 4 dereferenceable(4) %188)
  %405 = zext i32 %404 to i64
  %406 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.21952080)
  %407 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %406)
  switch i32 %407, label %.split880 [
    i32 0, label %.split883
    i32 4, label %.preheader454
  ]

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

.preheader454:                                    ; preds = %.preheader463.lr.ph
  %410 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %406)
  %411 = getelementptr inbounds i8, ptr %410, i64 88
  %412 = call noundef ptr @_ZNK3HIR15TypePathBinding8opt_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %411)
  %.not344 = icmp eq ptr %412, null
  br i1 %.not344, label %463, label %424

.split883:                                        ; preds = %.preheader463.lr.ph
  call void @__assert_fail(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, i32 noundef 1812, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

.split880:                                        ; preds = %.preheader463.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %413 unwind label %417

413:                                              ; preds = %.split880
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #8
  store ptr %.21952080, ptr %57, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull %56)
          to label %414 unwind label %419

414:                                              ; preds = %413
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  %415 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %415, ptr noundef nonnull @.str.9)
          to label %416 unwind label %422

416:                                              ; preds = %414
  invoke void @__cxa_throw(ptr nonnull %415, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %408

417:                                              ; preds = %.split880
  %418 = landingpad { ptr, i32 }
          cleanup
  br label %421

419:                                              ; preds = %413
  %420 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br label %421

421:                                              ; preds = %419, %417
  %.pn362 = phi { ptr, i32 } [ %420, %419 ], [ %418, %417 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  br label %504

422:                                              ; preds = %414
  %423 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %415) #8
  br label %504

424:                                              ; preds = %.preheader454
  %425 = load ptr, ptr %412, align 8, !tbaa !65
  %426 = getelementptr inbounds i8, ptr %425, i64 104
  %427 = call noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %426)
  br i1 %427, label %441, label %.split

.split:                                           ; preds = %424
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %428 unwind label %434

428:                                              ; preds = %.split
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 1 dereferenceable(1) %60) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull %59)
          to label %429 unwind label %436

429:                                              ; preds = %428
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #8
  %430 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %430, ptr noundef nonnull @.str.9)
          to label %431 unwind label %439

431:                                              ; preds = %429
  invoke void @__cxa_throw(ptr nonnull %430, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %432

432:                                              ; preds = %431
  %433 = landingpad { ptr, i32 }
          cleanup
  br label %504

434:                                              ; preds = %.split
  %435 = landingpad { ptr, i32 }
          cleanup
  br label %438

436:                                              ; preds = %428
  %437 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  br label %438

438:                                              ; preds = %436, %434
  %.pn354 = phi { ptr, i32 } [ %437, %436 ], [ %435, %434 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #8
  br label %504

439:                                              ; preds = %429
  %440 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %430) #8
  br label %504

441:                                              ; preds = %424
  %442 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %426)
  %443 = call noundef i64 @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %442) #8
  %444 = icmp ugt i64 %443, %405
  br i1 %444, label %458, label %.split715

.split715:                                        ; preds = %441
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %445 unwind label %451

445:                                              ; preds = %.split715
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 1 dereferenceable(1) %63) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull %62)
          to label %446 unwind label %453

446:                                              ; preds = %445
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  %447 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %447, ptr noundef nonnull @.str.9)
          to label %448 unwind label %456

448:                                              ; preds = %446
  invoke void @__cxa_throw(ptr nonnull %447, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %449

449:                                              ; preds = %448
  %450 = landingpad { ptr, i32 }
          cleanup
  br label %504

451:                                              ; preds = %.split715
  %452 = landingpad { ptr, i32 }
          cleanup
  br label %455

453:                                              ; preds = %445
  %454 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  br label %455

455:                                              ; preds = %453, %451
  %.pn356 = phi { ptr, i32 } [ %454, %453 ], [ %452, %451 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  br label %504

456:                                              ; preds = %446
  %457 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %447) #8
  br label %504

458:                                              ; preds = %441
  %459 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %442, i64 noundef %405) #8
  %460 = getelementptr inbounds i8, ptr %459, i64 16
  %461 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEENK4$_20clERKNS8_13GenericParamsERKNS8_4PathESB_"(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(96) %425, ptr noundef nonnull align 8 dereferenceable(88) %410, ptr noundef nonnull align 8 dereferenceable(8) %460)
          to label %.loopexit478.thread unwind label %.split717.split.split.split.split

.split717.split.split.split.split:                ; preds = %458
  %462 = landingpad { ptr, i32 }
          cleanup
  br label %504

463:                                              ; preds = %.preheader454
  %464 = call noundef ptr @_ZNK3HIR15TypePathBinding9opt_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %411)
  %.not345 = icmp eq ptr %464, null
  br i1 %.not345, label %.split719, label %465

465:                                              ; preds = %463
  %466 = load ptr, ptr %464, align 8, !tbaa !65
  %467 = getelementptr inbounds i8, ptr %466, i64 104
  %468 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %467) #8
  %469 = icmp ugt i64 %468, %405
  br i1 %469, label %485, label %.split722

.split722:                                        ; preds = %465
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %470 unwind label %476

470:                                              ; preds = %.split722
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 1 dereferenceable(1) %66) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull %65)
          to label %471 unwind label %478

471:                                              ; preds = %470
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  %472 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %472, ptr noundef nonnull @.str.9)
          to label %473 unwind label %481

473:                                              ; preds = %471
  invoke void @__cxa_throw(ptr nonnull %472, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %483

474:                                              ; preds = %496
  %475 = landingpad { ptr, i32 }
          cleanup
  br label %504

476:                                              ; preds = %.split722
  %477 = landingpad { ptr, i32 }
          cleanup
  br label %480

478:                                              ; preds = %470
  %479 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br label %480

480:                                              ; preds = %478, %476
  %.pn348 = phi { ptr, i32 } [ %479, %478 ], [ %477, %476 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  br label %504

481:                                              ; preds = %471
  %482 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %472) #8
  br label %504

483:                                              ; preds = %473
  %484 = landingpad { ptr, i32 }
          cleanup
  br label %504

485:                                              ; preds = %465
  %486 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %467, i64 noundef %405)
          to label %487 unwind label %.split724.split.split.split.split

487:                                              ; preds = %485
  %488 = getelementptr inbounds i8, ptr %486, i64 24
  %489 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEENK4$_20clERKNS8_13GenericParamsERKNS8_4PathESB_"(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(96) %466, ptr noundef nonnull align 8 dereferenceable(88) %410, ptr noundef nonnull align 8 dereferenceable(8) %488)
          to label %.loopexit478.thread unwind label %.split727.split.split.split.split

.split724.split.split.split.split:                ; preds = %485
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %504

.split727.split.split.split.split:                ; preds = %487
  %491 = landingpad { ptr, i32 }
          cleanup
  br label %504

.split719:                                        ; preds = %463
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %492 unwind label %497

492:                                              ; preds = %.split719
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #8
  store ptr %.21952080, ptr %69, align 8, !tbaa !65
  %493 = getelementptr inbounds i8, ptr %69, i64 8
  store ptr %2, ptr %493, align 8, !tbaa !65
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(16) %69) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull %68)
          to label %494 unwind label %499

494:                                              ; preds = %492
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #8
  %495 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %495, ptr noundef nonnull @.str.9)
          to label %496 unwind label %502

496:                                              ; preds = %494
  invoke void @__cxa_throw(ptr nonnull %495, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %474

497:                                              ; preds = %.split719
  %498 = landingpad { ptr, i32 }
          cleanup
  br label %501

499:                                              ; preds = %492
  %500 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #8
  br label %501

501:                                              ; preds = %499, %497
  %.pn346 = phi { ptr, i32 } [ %500, %499 ], [ %498, %497 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #8
  br label %504

502:                                              ; preds = %494
  %503 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %495) #8
  br label %504

504:                                              ; preds = %.loopexit437.split.split.split.split.split, %.loopexit.split-lp, %408, %421, %422, %474, %501, %502, %.split724.split.split.split.split, %.split727.split.split.split.split, %483, %481, %480, %432, %438, %439, %.split717.split.split.split.split, %456, %455, %449, %385, %401, %402, %.split1616, %382, %383, %371, %370, %354, %350
  %.pn364.pn = phi { ptr, i32 } [ %.pn408.pn, %350 ], [ %353, %.split1616 ], [ %355, %354 ], [ %372, %371 ], [ %.pn375, %370 ], [ %384, %383 ], [ %.pn371, %382 ], [ %386, %385 ], [ %403, %402 ], [ %.pn366, %401 ], [ %409, %408 ], [ %423, %422 ], [ %.pn362, %421 ], [ %433, %432 ], [ %440, %439 ], [ %.pn354, %438 ], [ %462, %.split717.split.split.split.split ], [ %450, %449 ], [ %457, %456 ], [ %.pn356, %455 ], [ %475, %474 ], [ %503, %502 ], [ %.pn346, %501 ], [ %484, %483 ], [ %482, %481 ], [ %.pn348, %480 ], [ %491, %.split727.split.split.split.split ], [ %490, %.split724.split.split.split.split ], [ %lpad.loopexit, %.loopexit437.split.split.split.split.split ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %521

.loopexit478.thread2139:                          ; preds = %.lr.ph, %.loopexit478
  call void @__assert_fail(ptr noundef nonnull @.str.75, ptr noundef nonnull @.str.7, i32 noundef 1843, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperE) #9
  unreachable

.loopexit478.thread:                              ; preds = %.preheader452, %.preheader450, %487, %458, %387, %390, %373, %.loopexit478.thread2143
  %.3.lcssa2138 = phi ptr [ %.6.lcssa.ph, %.loopexit478.thread2143 ], [ %357, %.preheader452 ], [ %359, %.preheader450 ], [ %489, %487 ], [ %461, %458 ], [ %389, %387 ], [ %392, %390 ], [ %361, %373 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #8
  %505 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  %506 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3MIR6LValue7WrapperESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br i1 %506, label %187, label %._crit_edge2082

._crit_edge2082:                                  ; preds = %.loopexit478.thread, %.thread
  %.42 = phi ptr [ %.1194420, %.thread ], [ %.3.lcssa2138, %.loopexit478.thread ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  %.not413 = icmp eq ptr %4, null
  br i1 %.not413, label %519, label %507

507:                                              ; preds = %._crit_edge2082
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %508 unwind label %512

508:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %72) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueES_IFvRKN3HIR7TypeRefEEEPKNS9_7WrapperEE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 1 dereferenceable(1) %72) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull %71)
          to label %509 unwind label %514

509:                                              ; preds = %508
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #8
  %510 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %510, ptr noundef nonnull @.str.9)
          to label %511 unwind label %517

511:                                              ; preds = %509
  invoke void @__cxa_throw(ptr nonnull %510, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %522 unwind label %74

512:                                              ; preds = %507
  %513 = landingpad { ptr, i32 }
          cleanup
  br label %516

514:                                              ; preds = %508
  %515 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  br label %516

516:                                              ; preds = %514, %512
  %.pn414 = phi { ptr, i32 } [ %515, %514 ], [ %513, %512 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #8
  br label %521

517:                                              ; preds = %509
  %518 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %510) #8
  br label %521

519:                                              ; preds = %.thread428, %._crit_edge2082
  %.42432 = phi ptr [ %.21952080, %.thread428 ], [ %.42, %._crit_edge2082 ]
  invoke void @_ZNKSt8functionIFvRKN3HIR7TypeRefEEEclES3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(8) %.42432)
          to label %520 unwind label %74

520:                                              ; preds = %519
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  ret void

521:                                              ; preds = %144, %176, %126, %116, %115, %109, %158, %157, %151, %517, %516, %504, %94, %86, %74
  %.pn416 = phi { ptr, i32 } [ %75, %74 ], [ %518, %517 ], [ %.pn414, %516 ], [ %.pn364.pn, %504 ], [ %95, %94 ], [ %87, %86 ], [ %.pn328, %176 ], [ %.pn336, %144 ], [ %127, %126 ], [ %110, %109 ], [ %117, %116 ], [ %.pn338, %115 ], [ %152, %151 ], [ %159, %158 ], [ %.pn330, %157 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  resume { ptr, i32 } %.pn416

522:                                              ; preds = %511, %496, %473, %448, %431, %416, %396, %377, %365, %339, %289, %257, %235, %217, %166, %150, %134, %108
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef signext i8 @_ZNK3MIR6LValue7Storage9as_ReturnEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR5Crate18get_static_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 nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #1 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue7Wrapper3tagEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue7Wrapper8as_FieldEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEENK4$_20clERKNS8_13GenericParamsERKNS8_4PathESB_"(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(88), 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 @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 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 #1 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef signext i8 @_ZNK3MIR6LValue7Wrapper8as_DerefEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3MIR6LValue7Wrapper11as_DowncastEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNKSt8functionIFvRKN3HIR7TypeRefEEEclES3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #4 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "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 = { 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 #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 24}
!6 = !{!"_ZTS10MirBuilder", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !11, i64 52, !12, i64 56, !11, i64 168, !14, i64 176, !16, i64 216, !16, i64 240, !20, i64 264, !21, i64 272, !29, i64 320, !33, i64 344, !37, i64 368, !38, i64 384, !42, i64 408}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN3MIR6RValueE", !13, i64 0, !8, i64 8}
!13 = !{!"_ZTSN3MIR6RValue3TagE", !8, i64 0}
!14 = !{!"_ZTS8VarState", !15, i64 0, !8, i64 8}
!15 = !{!"_ZTSN8VarState3TagE", !8, i64 0}
!16 = !{!"_ZTSSt6vectorI8VarStateSaIS0_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseI8VarStateSaIS0_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseI8VarStateSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!20 = !{!"long", !8, i64 0}
!21 = !{!"_ZTSSt3mapIjjSt4lessIjESaISt4pairIKjjEEE", !22, i64 0}
!22 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE", !23, i64 0}
!23 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjjESt10_Select1stIS2_ESt4lessIjESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !24, i64 0, !26, i64 8}
!24 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !25, i64 0}
!25 = !{!"_ZTSSt4lessIjE"}
!26 = !{!"_ZTSSt15_Rb_tree_header", !27, i64 0, !20, i64 32}
!27 = !{!"_ZTSSt18_Rb_tree_node_base", !28, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!28 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!29 = !{!"_ZTSSt6vectorIN10MirBuilder8ScopeDefESaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN10MirBuilder8ScopeDefESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!33 = !{!"_ZTSSt6vectorIjSaIjEE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!37 = !{!"_ZTS11ScopeHandle", !7, i64 0, !10, i64 8}
!38 = !{!"_ZTSSt6vectorISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR14PatternBinding4TypeEN3MIR6LValueEESaIS6_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!42 = !{!"_ZTSN3MIR6LValueE", !43, i64 0, !44, i64 8}
!43 = !{!"_ZTSN3MIR6LValue7StorageE", !20, i64 0}
!44 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!48 = !{!6, !7, i64 32}
!49 = !{!6, !7, i64 8}
!50 = !{!51, !7, i64 0}
!51 = !{!"_ZTS18TraitResolveCommon", !7, i64 0, !7, i64 8, !7, i64 16, !52, i64 24, !57, i64 72, !63, i64 104, !63, i64 112, !63, i64 120, !63, i64 128, !63, i64 136, !63, i64 144, !63, i64 152, !63, i64 160, !63, i64 168, !63, i64 176, !63, i64 184, !63, i64 192, !63, i64 200, !63, i64 208}
!52 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !53, i64 0}
!53 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !54, i64 0}
!54 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !55, i64 0, !26, i64 8}
!55 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !56, i64 0}
!56 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!57 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !58, i64 0, !62, i64 24}
!58 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!62 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!63 = !{!"_ZTSN3HIR10SimplePathE", !64, i64 0}
!64 = !{!"_ZTS10ThinVectorI8RcStringE", !7, i64 0}
!65 = !{!7, !7, i64 0}
!66 = !{!6, !7, i64 16}
!67 = !{!68, !7, i64 16}
!68 = !{!"_ZTSZNK10MirBuilder13with_val_typeERK4SpanRKN3MIR6LValueESt8functionIFvRKN3HIR7TypeRefEEEPKNS4_7WrapperEE4$_20", !7, i64 0, !7, i64 8, !7, i64 16}
!69 = !{!10, !10, i64 0}
!70 = distinct !{!70, !71}
!71 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SCCPPass,SROAPass,SimplifyCFGPass