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

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

%"struct.HIR::Pattern" = type <{ %"class.std::vector.97", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.97" = type { %"struct.std::_Vector_base.98" }
%"struct.std::_Vector_base.98" = 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.115" }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"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.115" = type { %"struct.std::__uniq_ptr_data.116" }
%"struct.std::__uniq_ptr_data.116" = type { %"class.std::__uniq_ptr_impl.117" }
%"class.std::__uniq_ptr_impl.117" = type { %"class.std::tuple.118" }
%"class.std::tuple.118" = type { %"struct.std::_Tuple_impl.119" }
%"struct.std::_Tuple_impl.119" = type { %"struct.std::_Head_base.122" }
%"struct.std::_Head_base.122" = 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.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.358 = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.359" = type { ptr }
%struct.field_path_t = type { %"class.std::vector.0" }
%"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 }
%struct.PatternBinding = type { %struct.field_path_t, ptr, %"struct.std::pair" }
%"struct.std::pair" = type { i64, i64 }
%struct.Span = type { ptr }
%class.anon.360 = type { ptr, ptr, ptr, ptr }
%struct.EncodedLiteralSlice = type { ptr, i64, i64 }
%class.anon.361 = type { ptr, ptr }
%"class.std::function.216" = type { %"class.std::_Function_base", ptr }
%class.anon.362 = type { ptr, ptr, ptr, ptr }
%class.anon.363 = type { i8 }
%class.anon.365 = type { ptr }
%class.PatternRule = type { i32, %"union.PatternRule::DataUnion", %struct.field_path_t }
%"union.PatternRule::DataUnion" = type { %"struct.PatternRule::Data_SplitSlice", [32 x i8] }
%"struct.PatternRule::Data_SplitSlice" = type { i32, i32, %"class.std::vector.136", %"class.std::vector.136" }
%"class.std::vector.136" = type { %"struct.std::_Vector_base.137" }
%"struct.std::_Vector_base.137" = type { %"struct.std::_Vector_base<PatternRule, std::allocator<PatternRule>>::_Vector_impl" }
%"struct.std::_Vector_base<PatternRule, std::allocator<PatternRule>>::_Vector_impl" = type { %"struct.std::_Vector_base<PatternRule, std::allocator<PatternRule>>::_Vector_impl_data" }
%"struct.std::_Vector_base<PatternRule, std::allocator<PatternRule>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.PatternRule::Data_Any" = type { i8 }
%"struct.PatternRule::Data_ValueRange" = type <{ %"class.MIR::Constant", %"class.MIR::Constant", i8, [7 x i8] }>
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = type { %"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.__gnu_cxx::__normal_iterator.366" = type { ptr }
%class.anon.367 = type { ptr }
%class.anon.368 = type { ptr, ptr, ptr, ptr }
%class.anon.369 = type { ptr }
%class.anon.370 = type { ptr }
%class.anon.387 = type { ptr, ptr }
%class.anon.388 = type { ptr, ptr }
%class.anon.389 = type { ptr }
%class.anon.390 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.391" = type { ptr }
%class.anon.395 = type { ptr, ptr }
%"class.std::function.396" = type { %"class.std::_Function_base", ptr }
%class.anon.399 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.400" = type { ptr }
%class.anon.403 = type { ptr, ptr, ptr }
%class.anon.404 = type { ptr, ptr }
%class.anon.405 = type { ptr, ptr }
%class.anon.406 = type { ptr, ptr }
%class.anon.407 = type { ptr, ptr }
%"struct.PatternRule::Data_Variant" = type { i32, %"class.std::vector.136" }
%struct.PatternRulesetBuilder = type { ptr, ptr, %"class.std::vector.70", i64, i64, %struct.field_path_t }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<PatternRulesetBuilder::Ruleset, std::allocator<PatternRulesetBuilder::Ruleset>>::_Vector_impl" }
%"struct.std::_Vector_base<PatternRulesetBuilder::Ruleset, std::allocator<PatternRulesetBuilder::Ruleset>>::_Vector_impl" = type { %"struct.std::_Vector_base<PatternRulesetBuilder::Ruleset, std::allocator<PatternRulesetBuilder::Ruleset>>::_Vector_impl_data" }
%"struct.std::_Vector_base<PatternRulesetBuilder::Ruleset, std::allocator<PatternRulesetBuilder::Ruleset>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.408 = type { ptr, ptr, ptr }
%class.anon.419 = type { ptr, ptr, ptr }
%class.anon.420 = type { ptr, ptr }
%class.anon.421 = type { i8 }
%class.anon.423 = type { i8 }
%class.anon.425 = type { ptr }
%class.anon.426 = type { ptr }
%class.anon.427 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.429" = type { ptr }
%class.anon.430 = type { i8 }
%class.anon.432 = type { i8 }
%class.anon.434 = type { i8 }
%class.anon.436 = type { i8 }
%class.anon.438 = type { ptr }
%class.anon.439 = type { i8 }
%class.anon.441 = type { ptr, ptr, ptr }
%class.anon.442 = type { i8 }
%class.anon.444 = type { i8 }
%class.anon.446 = type { i8 }
%class.anon.448 = type { ptr, ptr, ptr, ptr }
%class.anon.449 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.450" = type { ptr }
%class.anon.451 = type { ptr }
%class.anon.452 = type { i8 }
%class.anon.454 = type { i8 }
%class.anon.456 = type { i8 }
%class.anon.458 = type { i8 }
%class.anon.460 = type { i8 }
%"struct.HIR::PatternBinding" = type { i8, i32, %class.RcString, i32, i32 }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"struct.HIR::Pattern::Data::Data_Value" = type { %"class.HIR::Pattern::Value" }
%"class.HIR::Pattern::Value" = type { i32, %"union.HIR::Pattern::Value::DataUnion" }
%"union.HIR::Pattern::Value::DataUnion" = type { %"struct.HIR::Pattern::Value::Data_Named" }
%"struct.HIR::Pattern::Value::Data_Named" = type { %"class.HIR::Path", ptr }
%"class.HIR::Constant" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i32, %"class.std::map.330" }
%"class.HIR::GenericParams" = type { %"class.std::vector.254", %"class.std::vector.259", %"class.std::vector.264", %"class.std::vector.269" }
%"class.std::vector.254" = type { %"struct.std::_Vector_base.255" }
%"struct.std::_Vector_base.255" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.259" = type { %"struct.std::_Vector_base.260" }
%"struct.std::_Vector_base.260" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.264" = type { %"struct.std::_Vector_base.265" }
%"struct.std::_Vector_base.265" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.269" = type { %"struct.std::_Vector_base.270" }
%"struct.std::_Vector_base.270" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.249", %"class.std::vector.249", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.std::vector.249" = type { %"struct.std::_Vector_base.250" }
%"struct.std::_Vector_base.250" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%struct.EncodedLiteral = type { %"class.std::vector.0", %"class.std::vector.325" }
%"class.std::vector.325" = type { %"struct.std::_Vector_base.326" }
%"struct.std::_Vector_base.326" = 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.330" = type { %"class.std::_Rb_tree.331" }
%"class.std::_Rb_tree.331" = 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.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.HIR::Pattern::Data::Data_Range" = type <{ %"class.std::unique_ptr.128", %"class.std::unique_ptr.128", i8, [7 x i8] }>
%"class.std::unique_ptr.128" = type { %"struct.std::__uniq_ptr_data.129" }
%"struct.std::__uniq_ptr_data.129" = type { %"class.std::__uniq_ptr_impl.130" }
%"class.std::__uniq_ptr_impl.130" = type { %"class.std::tuple.131" }
%"class.std::tuple.131" = type { %"struct.std::_Tuple_impl.132" }
%"struct.std::_Tuple_impl.132" = type { %"struct.std::_Head_base.135" }
%"struct.std::_Head_base.135" = type { ptr }
%"struct.HIR::Pattern::Value::Data_Integer" = type { i32, %class.U128 }
%class.U128 = type { i64, i64 }
%"struct.HIR::Pattern::Data::Data_Tuple" = type { %"class.std::vector.110" }
%"class.std::vector.110" = type { %"struct.std::_Vector_base.111" }
%"struct.std::_Vector_base.111" = type { %"struct.std::_Vector_base<HIR::Pattern, std::allocator<HIR::Pattern>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::Pattern, std::allocator<HIR::Pattern>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::Pattern, std::allocator<HIR::Pattern>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::Pattern, std::allocator<HIR::Pattern>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Pattern::Data::Data_SplitTuple" = type <{ %"class.std::vector.110", %"class.std::vector.110", i32, [4 x i8] }>
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.115" }
%"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.371" }
%"class.std::vector.371" = type { %"struct.std::_Vector_base.372" }
%"struct.std::_Vector_base.372" = 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.381" }
%"class.std::map.381" = type { %"class.std::_Rb_tree.382" }
%"class.std::_Rb_tree.382" = 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 }
%"struct.HIR::Pattern::Data::Data_Box" = type { %"class.std::unique_ptr.102" }
%"class.std::unique_ptr.102" = type { %"struct.std::__uniq_ptr_data.103" }
%"struct.std::__uniq_ptr_data.103" = type { %"class.std::__uniq_ptr_impl.104" }
%"class.std::__uniq_ptr_impl.104" = type { %"class.std::tuple.105" }
%"class.std::tuple.105" = type { %"struct.std::_Tuple_impl.106" }
%"struct.std::_Tuple_impl.106" = type { %"struct.std::_Head_base.109" }
%"struct.std::_Head_base.109" = type { ptr }
%"struct.HIR::Pattern::Data::Data_PathNamed" = type <{ %"class.HIR::Path", %"class.HIR::Pattern::PathBinding", %"class.std::vector.123", i8, [7 x i8] }>
%"class.std::vector.123" = type { %"struct.std::_Vector_base.124" }
%"struct.std::_Vector_base.124" = type { %"struct.std::_Vector_base<std::pair<RcString, HIR::Pattern>, std::allocator<std::pair<RcString, HIR::Pattern>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, HIR::Pattern>, std::allocator<std::pair<RcString, HIR::Pattern>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, HIR::Pattern>, std::allocator<std::pair<RcString, HIR::Pattern>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, HIR::Pattern>, std::allocator<std::pair<RcString, HIR::Pattern>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::VisEnt" = type { %"class.HIR::Publicity", %"class.HIR::TypeRef" }
%"class.HIR::Publicity" = type { %"class.std::shared_ptr.392" }
%"class.std::shared_ptr.392" = type { %"class.std::__shared_ptr.393" }
%"class.std::__shared_ptr.393" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.HIR::Pattern::Data::Data_PathTuple" = type <{ %"class.HIR::Path", %"class.HIR::Pattern::PathBinding", %"class.std::vector.110", i8, [7 x i8], %"class.std::vector.110", i32, [4 x i8] }>
%"struct.std::pair.401" = type { %class.RcString, %"struct.HIR::VisEnt" }
%"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.409", [8 x i8] }
%"class.std::vector.409" = type { %"struct.std::_Vector_base.410" }
%"struct.std::_Vector_base.410" = 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" }
%"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::Pattern::Data::Data_Slice" = type { %"class.std::vector.110" }
%"struct.HIR::Pattern::Data::Data_SplitSlice" = type { %"class.std::vector.110", %"struct.HIR::PatternBinding", %"class.std::vector.110" }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }
%"struct.HIR::Pattern::Data::Data_Ref" = type { i32, %"class.std::unique_ptr.102" }
%"struct.HIR::Pattern::Value::Data_ByteString" = type { %"class.std::__cxx11::basic_string" }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external global i32, align 4
@.str.5 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.10 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern = external hidden global %"struct.HIR::Pattern", align 8
@_ZGVZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern = external hidden global i64, align 8
@__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE = external hidden unnamed_addr constant [12 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [32 x i8], align 1
@__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE = external hidden unnamed_addr constant [102 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [37 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(424)) unnamed_addr #4 align 2

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

422:                                              ; preds = %4
  %423 = call i32 @__cxa_guard_acquire(ptr @_ZGVZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern) #0
  %424 = icmp ne i32 %423, 0
  br i1 %424, label %425, label %428

425:                                              ; preds = %422
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern)
          to label %426 unwind label %449

426:                                              ; preds = %425
  %427 = call i32 @__cxa_atexit(ptr @_ZN3HIR7PatternD2Ev, ptr @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern) #0
  br label %428

428:                                              ; preds = %426, %422, %4
  call void @llvm.lifetime.start.p0(i64 40, ptr %11) #0
  %429 = call noundef zeroext i1 @_Z13debug_enabledv()
  %430 = zext i1 %429 to i64
  %431 = select i1 %429, ptr @__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #0
  %432 = getelementptr inbounds %class.anon.358, ptr %13, i32 0, i32 0
  %433 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %433, ptr %432, align 8, !tbaa !5
  %434 = getelementptr inbounds %class.anon.358, ptr %13, i32 0, i32 1
  %435 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %435, ptr %434, align 8, !tbaa !5
  %436 = getelementptr inbounds %class.anon.358, ptr %13, i32 0, i32 2
  store ptr %419, ptr %436, align 8, !tbaa !10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(24) %13)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef %431, ptr noundef %12)
          to label %437 unwind label %453

437:                                              ; preds = %428
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #0
  %438 = load ptr, ptr %7, align 8, !tbaa !5
  %439 = getelementptr inbounds %"struct.HIR::Pattern", ptr %438, i32 0, i32 0
  store ptr %439, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #0
  %440 = load ptr, ptr %14, align 8, !tbaa !5
  %441 = call ptr @_ZNKSt6vectorIN3HIR14PatternBindingESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %440) #0
  %442 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.359", ptr %15, i32 0, i32 0
  store ptr %441, ptr %442, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #0
  %443 = load ptr, ptr %14, align 8, !tbaa !5
  %444 = call ptr @_ZNKSt6vectorIN3HIR14PatternBindingESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %443) #0
  %445 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.359", ptr %16, i32 0, i32 0
  store ptr %444, ptr %445, align 8
  br label %446

446:                                              ; preds = %487, %437
  %447 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR14PatternBindingESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #0
  br i1 %447, label %457, label %448

448:                                              ; preds = %446
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #0
  br label %504

449:                                              ; preds = %425
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %9, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %10, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern) #0
  br label %4907

453:                                              ; preds = %428
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %9, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #0
  br label %4906

457:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #0
  %458 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR14PatternBindingESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #0
  store ptr %458, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #0
  %459 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_tC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %459)
          to label %460 unwind label %469

460:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #0
  store i64 0, ptr %20, align 8, !tbaa !12
  br label %461

461:                                              ; preds = %475, %460
  %462 = load i64, ptr %20, align 8, !tbaa !12
  %463 = load ptr, ptr %18, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.HIR::PatternBinding", ptr %463, i32 0, i32 4
  %465 = load i32, ptr %464, align 4, !tbaa !14
  %466 = zext i32 %465 to i64
  %467 = icmp ult i64 %462, %466
  br i1 %467, label %473, label %468

468:                                              ; preds = %461
  store i32 4, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #0
  br label %482

469:                                              ; preds = %457
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %9, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %10, align 4
  br label %503

473:                                              ; preds = %461
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %19, i8 noundef zeroext -1)
          to label %474 unwind label %478

474:                                              ; preds = %473
  br label %475

475:                                              ; preds = %474
  %476 = load i64, ptr %20, align 8, !tbaa !12
  %477 = add i64 %476, 1
  store i64 %477, ptr %20, align 8, !tbaa !12
  br label %461, !llvm.loop !20

478:                                              ; preds = %473
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %9, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #0
  br label %502

482:                                              ; preds = %468
  invoke void @_ZN12field_path_tC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %483 unwind label %489

483:                                              ; preds = %482
  %484 = load ptr, ptr %18, align 8, !tbaa !5
  invoke void @_ZN14PatternBindingC2E12field_path_tRKN3HIR14PatternBindingE(ptr noundef nonnull align 8 dereferenceable(48) %21, ptr noundef %22, ptr noundef nonnull align 8 dereferenceable(24) %484)
          to label %485 unwind label %493

485:                                              ; preds = %483
  invoke void @_ZN21PatternRulesetBuilder12push_bindingE14PatternBinding(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %21)
          to label %486 unwind label %497

486:                                              ; preds = %485
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %21) #0
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #0
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  br label %487

487:                                              ; preds = %486
  %488 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR14PatternBindingESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #0
  br label %446

489:                                              ; preds = %482
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %9, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %10, align 4
  br label %502

493:                                              ; preds = %483
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %9, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %10, align 4
  br label %501

497:                                              ; preds = %485
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %9, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %10, align 4
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %21) #0
  br label %501

501:                                              ; preds = %497, %493
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #0
  br label %502

502:                                              ; preds = %501, %489, %478
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #0
  br label %503

503:                                              ; preds = %502, %469
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #0
  br label %4905

504:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #0
  %505 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %505, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #0
  store i64 0, ptr %24, align 8, !tbaa !12
  br label %506

506:                                              ; preds = %567, %504
  %507 = load i64, ptr %24, align 8, !tbaa !12
  %508 = load ptr, ptr %7, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.HIR::Pattern", ptr %508, i32 0, i32 2
  %510 = load i32, ptr %509, align 8, !tbaa !22
  %511 = zext i32 %510 to i64
  %512 = icmp ult i64 %507, %511
  br i1 %512, label %514, label %513

513:                                              ; preds = %506
  store i32 7, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  br label %571

514:                                              ; preds = %506
  %515 = load ptr, ptr %23, align 8, !tbaa !5
  %516 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %515)
          to label %517 unwind label %534

517:                                              ; preds = %514
  %518 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %516)
          to label %519 unwind label %534

519:                                              ; preds = %517
  br i1 %518, label %558, label %520

520:                                              ; preds = %519
  br label %521

521:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #0
  %522 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %522)
          to label %523 unwind label %538

523:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #0
  %524 = getelementptr inbounds %class.anon.360, ptr %27, i32 0, i32 0
  store ptr %24, ptr %524, align 8, !tbaa !5
  %525 = getelementptr inbounds %class.anon.360, ptr %27, i32 0, i32 1
  %526 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %526, ptr %525, align 8, !tbaa !5
  %527 = getelementptr inbounds %class.anon.360, ptr %27, i32 0, i32 2
  store ptr %23, ptr %527, align 8, !tbaa !5
  %528 = getelementptr inbounds %class.anon.360, ptr %27, i32 0, i32 3
  %529 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %529, ptr %528, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %530 unwind label %542

530:                                              ; preds = %523
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef %26)
          to label %531 unwind label %546

531:                                              ; preds = %530
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #0
  %532 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %532, ptr noundef @.str.10)
          to label %533 unwind label %552

533:                                              ; preds = %531
  invoke void @__cxa_throw(ptr %532, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %534

534:                                              ; preds = %563, %561, %558, %533, %517, %514
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %9, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %10, align 4
  br label %570

538:                                              ; preds = %521
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %9, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %10, align 4
  br label %551

542:                                              ; preds = %523
  %543 = landingpad { ptr, i32 }
          cleanup
  %544 = extractvalue { ptr, i32 } %543, 0
  store ptr %544, ptr %9, align 8
  %545 = extractvalue { ptr, i32 } %543, 1
  store i32 %545, ptr %10, align 4
  br label %550

546:                                              ; preds = %530
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %9, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #0
  br label %550

550:                                              ; preds = %546, %542
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #0
  br label %551

551:                                              ; preds = %550, %538
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #0
  br label %570

552:                                              ; preds = %531
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %9, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %10, align 4
  call void @__cxa_free_exception(ptr %532) #0
  br label %570

556:                                              ; No predecessors!
  br label %557

557:                                              ; preds = %556
  br label %558

558:                                              ; preds = %557, %519
  %559 = load ptr, ptr %23, align 8, !tbaa !5
  %560 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %559)
          to label %561 unwind label %534

561:                                              ; preds = %558
  %562 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %560)
          to label %563 unwind label %534

563:                                              ; preds = %561
  %564 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %562, i32 0, i32 2
  store ptr %564, ptr %23, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %565, i8 noundef zeroext -1)
          to label %566 unwind label %534

566:                                              ; preds = %563
  br label %567

567:                                              ; preds = %566
  %568 = load i64, ptr %24, align 8, !tbaa !12
  %569 = add i64 %568, 1
  store i64 %569, ptr %24, align 8, !tbaa !12
  br label %506, !llvm.loop !30

570:                                              ; preds = %552, %551, %534
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  br label %4904

571:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #0
  %572 = load ptr, ptr %23, align 8, !tbaa !5
  store ptr %572, ptr %28, align 8, !tbaa !5
  %573 = load ptr, ptr %7, align 8, !tbaa !5
  %574 = getelementptr inbounds %"struct.HIR::Pattern", ptr %573, i32 0, i32 1
  %575 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %574)
          to label %576 unwind label %616

576:                                              ; preds = %571
  %577 = icmp eq i32 %575, 10
  br i1 %577, label %578, label %679

578:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #0
  %579 = load ptr, ptr %7, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.HIR::Pattern", ptr %579, i32 0, i32 1
  %581 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3HIR7Pattern4Data8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(184) %580)
          to label %582 unwind label %620

582:                                              ; preds = %578
  store ptr %581, ptr %29, align 8, !tbaa !5
  %583 = load ptr, ptr %29, align 8, !tbaa !5
  %584 = load ptr, ptr %29, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Value", ptr %584, i32 0, i32 0
  %586 = invoke noundef i32 @_ZNK3HIR7Pattern5Value3tagEv(ptr noundef nonnull align 8 dereferenceable(104) %585)
          to label %587 unwind label %620

587:                                              ; preds = %582
  %588 = icmp eq i32 %586, 5
  br i1 %588, label %589, label %674

589:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #0
  %590 = load ptr, ptr %29, align 8, !tbaa !5
  %591 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Value", ptr %590, i32 0, i32 0
  %592 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3HIR7Pattern5Value8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(104) %591)
          to label %593 unwind label %624

593:                                              ; preds = %589
  store ptr %592, ptr %30, align 8, !tbaa !5
  %594 = load ptr, ptr %30, align 8, !tbaa !5
  %595 = load ptr, ptr %30, align 8, !tbaa !5
  %596 = getelementptr inbounds %"struct.HIR::Pattern::Value::Data_Named", ptr %595, i32 0, i32 1
  %597 = load ptr, ptr %596, align 8, !tbaa !31
  %598 = icmp ne ptr %597, null
  br i1 %598, label %599, label %639

599:                                              ; preds = %593
  %600 = load ptr, ptr %6, align 8, !tbaa !5
  %601 = load ptr, ptr %30, align 8, !tbaa !5
  %602 = getelementptr inbounds %"struct.HIR::Pattern::Value::Data_Named", ptr %601, i32 0, i32 1
  %603 = load ptr, ptr %602, align 8, !tbaa !31
  %604 = getelementptr inbounds %"class.HIR::Constant", ptr %603, i32 0, i32 3
  invoke void @_ZN19EncodedLiteralSliceC2ERK14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(48) %604)
          to label %605 unwind label %624

605:                                              ; preds = %599
  %606 = load ptr, ptr %28, align 8, !tbaa !5
  invoke void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %600, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %31, ptr noundef nonnull align 8 dereferenceable(8) %606)
          to label %607 unwind label %624

607:                                              ; preds = %605
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #0
  store i64 0, ptr %32, align 8, !tbaa !12
  br label %608

608:                                              ; preds = %631, %607
  %609 = load i64, ptr %32, align 8, !tbaa !12
  %610 = load ptr, ptr %7, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.HIR::Pattern", ptr %610, i32 0, i32 2
  %612 = load i32, ptr %611, align 8, !tbaa !22
  %613 = zext i32 %612 to i64
  %614 = icmp ult i64 %609, %613
  br i1 %614, label %628, label %615

615:                                              ; preds = %608
  store i32 12, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %638

616:                                              ; preds = %679, %571
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %9, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %10, align 4
  br label %4903

620:                                              ; preds = %582, %578
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %9, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %10, align 4
  br label %678

624:                                              ; preds = %605, %599, %589
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %9, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %10, align 4
  br label %673

628:                                              ; preds = %608
  %629 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %629)
          to label %630 unwind label %634

630:                                              ; preds = %628
  br label %631

631:                                              ; preds = %630
  %632 = load i64, ptr %32, align 8, !tbaa !12
  %633 = add i64 %632, 1
  store i64 %633, ptr %32, align 8, !tbaa !12
  br label %608, !llvm.loop !36

634:                                              ; preds = %628
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %9, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %673

638:                                              ; preds = %615
  store i32 1, ptr %17, align 4
  br label %670

639:                                              ; preds = %593
  br label %640

640:                                              ; preds = %639
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #0
  store ptr @__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #0
  %641 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %641)
          to label %642 unwind label %649

642:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #0
  %643 = getelementptr inbounds %class.anon.361, ptr %36, i32 0, i32 0
  store ptr %33, ptr %643, align 8, !tbaa !5
  %644 = getelementptr inbounds %class.anon.361, ptr %36, i32 0, i32 1
  %645 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %645, ptr %644, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(16) %36) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef %35)
          to label %646 unwind label %653

646:                                              ; preds = %642
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  %647 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %647, ptr noundef @.str.5)
          to label %648 unwind label %658

648:                                              ; preds = %646
  invoke void @__cxa_throw(ptr %647, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %662

649:                                              ; preds = %640
  %650 = landingpad { ptr, i32 }
          cleanup
  %651 = extractvalue { ptr, i32 } %650, 0
  store ptr %651, ptr %9, align 8
  %652 = extractvalue { ptr, i32 } %650, 1
  store i32 %652, ptr %10, align 4
  br label %657

653:                                              ; preds = %642
  %654 = landingpad { ptr, i32 }
          cleanup
  %655 = extractvalue { ptr, i32 } %654, 0
  store ptr %655, ptr %9, align 8
  %656 = extractvalue { ptr, i32 } %654, 1
  store i32 %656, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #0
  br label %657

657:                                              ; preds = %653, %649
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  br label %666

658:                                              ; preds = %646
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %9, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %10, align 4
  call void @__cxa_free_exception(ptr %647) #0
  br label %666

662:                                              ; preds = %648
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %9, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %10, align 4
  br label %666

666:                                              ; preds = %662, %658, %657
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #0
  br label %673

667:                                              ; No predecessors!
  br label %668

668:                                              ; preds = %667
  br label %669

669:                                              ; preds = %668
  store i32 0, ptr %17, align 4
  br label %670

670:                                              ; preds = %669, %638
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #0
  %671 = load i32, ptr %17, align 4
  switch i32 %671, label %675 [
    i32 0, label %672
  ]

672:                                              ; preds = %670
  br label %674

673:                                              ; preds = %666, %634, %624
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #0
  br label %678

674:                                              ; preds = %672, %587
  store i32 0, ptr %17, align 4
  br label %675

675:                                              ; preds = %674, %670
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  %676 = load i32, ptr %17, align 4
  switch i32 %676, label %4900 [
    i32 0, label %677
  ]

677:                                              ; preds = %675
  br label %679

678:                                              ; preds = %673, %620
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  br label %4903

679:                                              ; preds = %677, %576
  %680 = load ptr, ptr %7, align 8, !tbaa !5
  %681 = getelementptr inbounds %"struct.HIR::Pattern", ptr %680, i32 0, i32 1
  %682 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern4Data5is_OrEv(ptr noundef nonnull align 8 dereferenceable(184) %681)
          to label %683 unwind label %616

683:                                              ; preds = %679
  br i1 %682, label %684, label %729

684:                                              ; preds = %683
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #0
  %685 = load ptr, ptr %7, align 8, !tbaa !5
  %686 = getelementptr inbounds %"struct.HIR::Pattern", ptr %685, i32 0, i32 1
  %687 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR7Pattern4Data5as_OrEv(ptr noundef nonnull align 8 dereferenceable(184) %686)
          to label %688 unwind label %695

688:                                              ; preds = %684
  store ptr %687, ptr %37, align 8, !tbaa !5
  %689 = load ptr, ptr %7, align 8, !tbaa !5
  %690 = getelementptr inbounds %"struct.HIR::Pattern", ptr %689, i32 0, i32 2
  %691 = load i32, ptr %690, align 8, !tbaa !22
  %692 = icmp eq i32 %691, 0
  br i1 %692, label %693, label %694

693:                                              ; preds = %688
  br label %700

694:                                              ; preds = %688
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str.17, i32 noundef 1363, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

695:                                              ; preds = %684
  %696 = landingpad { ptr, i32 }
          cleanup
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %9, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %10, align 4
  br label %728

699:                                              ; No predecessors!
  br label %700

700:                                              ; preds = %699, %693
  %701 = load ptr, ptr %37, align 8, !tbaa !5
  %702 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %701) #0
  %703 = icmp ugt i64 %702, 0
  br i1 %703, label %704, label %705

704:                                              ; preds = %700
  br label %707

705:                                              ; preds = %700
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.17, i32 noundef 1364, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

706:                                              ; No predecessors!
  br label %707

707:                                              ; preds = %706, %704
  %708 = load ptr, ptr %37, align 8, !tbaa !5
  %709 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %708) #0
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #0
  %710 = getelementptr inbounds %class.anon.362, ptr %39, i32 0, i32 0
  store ptr %419, ptr %710, align 8, !tbaa !37
  %711 = getelementptr inbounds %class.anon.362, ptr %39, i32 0, i32 1
  %712 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %712, ptr %711, align 8, !tbaa !5
  %713 = getelementptr inbounds %class.anon.362, ptr %39, i32 0, i32 2
  %714 = load ptr, ptr %37, align 8, !tbaa !5
  store ptr %714, ptr %713, align 8, !tbaa !5
  %715 = getelementptr inbounds %class.anon.362, ptr %39, i32 0, i32 3
  %716 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %716, ptr %715, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvmEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS7_7TypeRefEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %717 unwind label %719

717:                                              ; preds = %707
  invoke void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80) %419, i64 noundef %709, ptr noundef %38)
          to label %718 unwind label %723

718:                                              ; preds = %717
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #0
  store i32 1, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  br label %4900

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

723:                                              ; preds = %717
  %724 = landingpad { ptr, i32 }
          cleanup
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %9, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #0
  br label %727

727:                                              ; preds = %723, %719
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #0
  br label %728

728:                                              ; preds = %727, %695
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  br label %4903

729:                                              ; preds = %683
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #0
  store i8 1, ptr %40, align 1, !tbaa !39
  br label %730

730:                                              ; preds = %4879, %729
  %731 = load i8, ptr %40, align 1, !tbaa !39, !range !40, !noundef !41
  %732 = trunc i8 %731 to i1
  br i1 %732, label %734, label %733

733:                                              ; preds = %730
  store i32 17, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #0
  br label %4880

734:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #0
  %735 = load ptr, ptr %28, align 8, !tbaa !5
  %736 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %735)
          to label %737 unwind label %742

737:                                              ; preds = %734
  store ptr %736, ptr %41, align 8, !tbaa !5
  br label %738

738:                                              ; preds = %4876, %737
  %739 = load i8, ptr %40, align 1, !tbaa !39, !range !40, !noundef !41
  %740 = trunc i8 %739 to i1
  br i1 %740, label %746, label %741

741:                                              ; preds = %738
  store i32 20, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  br label %4878

742:                                              ; preds = %746, %734
  %743 = landingpad { ptr, i32 }
          cleanup
  %744 = extractvalue { ptr, i32 } %743, 0
  store ptr %744, ptr %9, align 8
  %745 = extractvalue { ptr, i32 } %743, 1
  store i32 %745, ptr %10, align 4
  br label %4877

746:                                              ; preds = %738
  %747 = load ptr, ptr %41, align 8, !tbaa !5
  %748 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %747)
          to label %749 unwind label %742

749:                                              ; preds = %746
  switch i32 %748, label %4875 [
    i32 0, label %750
    i32 1, label %751
    i32 2, label %796
    i32 3, label %819
    i32 10, label %1118
    i32 4, label %1365
    i32 5, label %3109
    i32 6, label %3182
    i32 7, label %3234
    i32 8, label %3286
    i32 9, label %3844
    i32 11, label %4343
    i32 12, label %4609
    i32 13, label %4667
    i32 14, label %4719
    i32 15, label %4771
    i32 16, label %4823
  ]

750:                                              ; preds = %749
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1371, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

751:                                              ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #0
  store i8 1, ptr %42, align 1, !tbaa !39
  br label %752

752:                                              ; preds = %794, %751
  %753 = load i8, ptr %42, align 1, !tbaa !39, !range !40, !noundef !41
  %754 = trunc i8 %753 to i1
  br i1 %754, label %756, label %755

755:                                              ; preds = %752
  store i32 24, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #0
  br label %795

756:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #0
  %757 = load ptr, ptr %41, align 8, !tbaa !5
  %758 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %757)
          to label %759 unwind label %765

759:                                              ; preds = %756
  store ptr %758, ptr %43, align 8, !tbaa !5
  br label %760

760:                                              ; preds = %791, %759
  %761 = load ptr, ptr %43, align 8, !tbaa !5
  %762 = load i8, ptr %42, align 1, !tbaa !39, !range !40, !noundef !41
  %763 = trunc i8 %762 to i1
  br i1 %763, label %769, label %764

764:                                              ; preds = %760
  store i32 27, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  br label %793

765:                                              ; preds = %775, %756
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %9, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %10, align 4
  br label %792

769:                                              ; preds = %760
  br label %770

770:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #0
  %771 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %771)
          to label %772 unwind label %776

772:                                              ; preds = %770
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 1 dereferenceable(1) %46) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef %45)
          to label %773 unwind label %780

773:                                              ; preds = %772
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  %774 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %774, ptr noundef @.str.10)
          to label %775 unwind label %785

775:                                              ; preds = %773
  invoke void @__cxa_throw(ptr %774, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %765

776:                                              ; preds = %770
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %9, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %10, align 4
  br label %784

780:                                              ; preds = %772
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %9, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #0
  br label %784

784:                                              ; preds = %780, %776
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  br label %792

785:                                              ; preds = %773
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %9, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %10, align 4
  call void @__cxa_free_exception(ptr %774) #0
  br label %792

789:                                              ; No predecessors!
  br label %790

790:                                              ; preds = %789
  br label %791

791:                                              ; preds = %790
  store i8 0, ptr %42, align 1, !tbaa !39
  br label %760, !llvm.loop !42

792:                                              ; preds = %785, %784, %765
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #0
  br label %4877

793:                                              ; preds = %764
  br label %794

794:                                              ; preds = %793
  store i8 0, ptr %42, align 1, !tbaa !39
  br label %752, !llvm.loop !43

795:                                              ; preds = %755
  br label %4875

796:                                              ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #0
  store i8 1, ptr %47, align 1, !tbaa !39
  br label %797

797:                                              ; preds = %817, %796
  %798 = load i8, ptr %47, align 1, !tbaa !39, !range !40, !noundef !41
  %799 = trunc i8 %798 to i1
  br i1 %799, label %801, label %800

800:                                              ; preds = %797
  store i32 32, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #0
  br label %818

801:                                              ; preds = %797
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #0
  %802 = load ptr, ptr %41, align 8, !tbaa !5
  %803 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %802)
          to label %804 unwind label %810

804:                                              ; preds = %801
  store ptr %803, ptr %48, align 8, !tbaa !5
  br label %805

805:                                              ; preds = %815, %804
  %806 = load ptr, ptr %48, align 8, !tbaa !5
  %807 = load i8, ptr %47, align 1, !tbaa !39, !range !40, !noundef !41
  %808 = trunc i8 %807 to i1
  br i1 %808, label %814, label %809

809:                                              ; preds = %805
  store i32 35, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  br label %816

810:                                              ; preds = %801
  %811 = landingpad { ptr, i32 }
          cleanup
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %9, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #0
  br label %4877

814:                                              ; preds = %805
  br label %815

815:                                              ; preds = %814
  store i8 0, ptr %47, align 1, !tbaa !39
  br label %805, !llvm.loop !44

816:                                              ; preds = %809
  br label %817

817:                                              ; preds = %816
  store i8 0, ptr %47, align 1, !tbaa !39
  br label %797, !llvm.loop !45

818:                                              ; preds = %800
  br label %4875

819:                                              ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #0
  store i8 1, ptr %49, align 1, !tbaa !39
  br label %820

820:                                              ; preds = %1116, %819
  %821 = load i8, ptr %49, align 1, !tbaa !39, !range !40, !noundef !41
  %822 = trunc i8 %821 to i1
  br i1 %822, label %824, label %823

823:                                              ; preds = %820
  store i32 38, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #0
  br label %1117

824:                                              ; preds = %820
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #0
  %825 = load ptr, ptr %41, align 8, !tbaa !5
  %826 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %825)
          to label %827 unwind label %833

827:                                              ; preds = %824
  store ptr %826, ptr %50, align 8, !tbaa !5
  br label %828

828:                                              ; preds = %1113, %827
  %829 = load ptr, ptr %50, align 8, !tbaa !5
  %830 = load i8, ptr %49, align 1, !tbaa !39, !range !40, !noundef !41
  %831 = trunc i8 %830 to i1
  br i1 %831, label %837, label %832

832:                                              ; preds = %828
  store i32 41, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #0
  br label %1115

833:                                              ; preds = %851, %837, %824
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %9, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %10, align 4
  br label %1114

837:                                              ; preds = %828
  %838 = load ptr, ptr %7, align 8, !tbaa !5
  %839 = getelementptr inbounds %"struct.HIR::Pattern", ptr %838, i32 0, i32 1
  %840 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %839)
          to label %841 unwind label %833

841:                                              ; preds = %837
  switch i32 %840, label %843 [
    i32 0, label %842
    i32 1, label %867
    i32 11, label %898
    i32 10, label %1052
  ]

842:                                              ; preds = %841
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1381, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

843:                                              ; preds = %841
  br label %844

844:                                              ; preds = %843
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #0
  %845 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %845)
          to label %846 unwind label %852

846:                                              ; preds = %844
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #0
  %847 = getelementptr inbounds %class.anon.365, ptr %53, i32 0, i32 0
  %848 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %848, ptr %847, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef %52)
          to label %849 unwind label %856

849:                                              ; preds = %846
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  %850 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %850, ptr noundef @.str.10)
          to label %851 unwind label %861

851:                                              ; preds = %849
  invoke void @__cxa_throw(ptr %850, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %833

852:                                              ; preds = %844
  %853 = landingpad { ptr, i32 }
          cleanup
  %854 = extractvalue { ptr, i32 } %853, 0
  store ptr %854, ptr %9, align 8
  %855 = extractvalue { ptr, i32 } %853, 1
  store i32 %855, ptr %10, align 4
  br label %860

856:                                              ; preds = %846
  %857 = landingpad { ptr, i32 }
          cleanup
  %858 = extractvalue { ptr, i32 } %857, 0
  store ptr %858, ptr %9, align 8
  %859 = extractvalue { ptr, i32 } %857, 1
  store i32 %859, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #0
  br label %860

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

861:                                              ; preds = %849
  %862 = landingpad { ptr, i32 }
          cleanup
  %863 = extractvalue { ptr, i32 } %862, 0
  store ptr %863, ptr %9, align 8
  %864 = extractvalue { ptr, i32 } %862, 1
  store i32 %864, ptr %10, align 4
  call void @__cxa_free_exception(ptr %850) #0
  br label %1114

865:                                              ; No predecessors!
  br label %866

866:                                              ; preds = %865
  br label %1112

867:                                              ; preds = %841
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #0
  store i8 1, ptr %54, align 1, !tbaa !39
  br label %868

868:                                              ; preds = %896, %867
  %869 = load i8, ptr %54, align 1, !tbaa !39, !range !40, !noundef !41
  %870 = trunc i8 %869 to i1
  br i1 %870, label %872, label %871

871:                                              ; preds = %868
  store i32 47, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #0
  br label %897

872:                                              ; preds = %868
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #0
  %873 = load ptr, ptr %7, align 8, !tbaa !5
  %874 = getelementptr inbounds %"struct.HIR::Pattern", ptr %873, i32 0, i32 1
  %875 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %874)
          to label %876 unwind label %882

876:                                              ; preds = %872
  store ptr %875, ptr %55, align 8, !tbaa !5
  br label %877

877:                                              ; preds = %889, %876
  %878 = load ptr, ptr %55, align 8, !tbaa !5
  %879 = load i8, ptr %54, align 1, !tbaa !39, !range !40, !noundef !41
  %880 = trunc i8 %879 to i1
  br i1 %880, label %886, label %881

881:                                              ; preds = %877
  store i32 50, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #0
  br label %895

882:                                              ; preds = %886, %872
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %9, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %10, align 4
  br label %894

886:                                              ; preds = %877
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %56)
          to label %887 unwind label %882

887:                                              ; preds = %886
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %56)
          to label %888 unwind label %890

888:                                              ; preds = %887
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %56) #0
  br label %889

889:                                              ; preds = %888
  store i8 0, ptr %54, align 1, !tbaa !39
  br label %877, !llvm.loop !46

890:                                              ; preds = %887
  %891 = landingpad { ptr, i32 }
          cleanup
  %892 = extractvalue { ptr, i32 } %891, 0
  store ptr %892, ptr %9, align 8
  %893 = extractvalue { ptr, i32 } %891, 1
  store i32 %893, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %56) #0
  br label %894

894:                                              ; preds = %890, %882
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #0
  br label %1114

895:                                              ; preds = %881
  br label %896

896:                                              ; preds = %895
  store i8 0, ptr %54, align 1, !tbaa !39
  br label %868, !llvm.loop !47

897:                                              ; preds = %871
  br label %1112

898:                                              ; preds = %841
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #0
  store i8 1, ptr %58, align 1, !tbaa !39
  br label %899

899:                                              ; preds = %1050, %898
  %900 = load i8, ptr %58, align 1, !tbaa !39, !range !40, !noundef !41
  %901 = trunc i8 %900 to i1
  br i1 %901, label %903, label %902

902:                                              ; preds = %899
  store i32 53, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #0
  br label %1051

903:                                              ; preds = %899
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #0
  %904 = load ptr, ptr %7, align 8, !tbaa !5
  %905 = getelementptr inbounds %"struct.HIR::Pattern", ptr %904, i32 0, i32 1
  %906 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK3HIR7Pattern4Data8as_RangeEv(ptr noundef nonnull align 8 dereferenceable(184) %905)
          to label %907 unwind label %913

907:                                              ; preds = %903
  store ptr %906, ptr %59, align 8, !tbaa !5
  br label %908

908:                                              ; preds = %1047, %907
  %909 = load ptr, ptr %59, align 8, !tbaa !5
  %910 = load i8, ptr %58, align 1, !tbaa !39, !range !40, !noundef !41
  %911 = trunc i8 %910 to i1
  br i1 %911, label %917, label %912

912:                                              ; preds = %908
  store i32 56, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #0
  br label %1049

913:                                              ; preds = %1008, %972, %942, %903
  %914 = landingpad { ptr, i32 }
          cleanup
  %915 = extractvalue { ptr, i32 } %914, 0
  store ptr %915, ptr %9, align 8
  %916 = extractvalue { ptr, i32 } %914, 1
  store i32 %916, ptr %10, align 4
  br label %1048

917:                                              ; preds = %908
  %918 = load ptr, ptr %59, align 8, !tbaa !5
  %919 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %918, i32 0, i32 0
  %920 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %919) #0
  br i1 %920, label %921, label %925

921:                                              ; preds = %917
  %922 = load ptr, ptr %59, align 8, !tbaa !5
  %923 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %922, i32 0, i32 1
  %924 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %923) #0
  br i1 %924, label %1008, label %925

925:                                              ; preds = %921, %917
  %926 = load ptr, ptr %59, align 8, !tbaa !5
  %927 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %926, i32 0, i32 0
  %928 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %927) #0
  br i1 %928, label %933, label %929

929:                                              ; preds = %925
  %930 = load ptr, ptr %59, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %930, i32 0, i32 1
  %932 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %931) #0
  br label %933

933:                                              ; preds = %929, %925
  %934 = phi i1 [ true, %925 ], [ %932, %929 ]
  br i1 %934, label %935, label %936

935:                                              ; preds = %933
  br label %938

936:                                              ; preds = %933
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.17, i32 noundef 1390, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

937:                                              ; No predecessors!
  br label %938

938:                                              ; preds = %937, %935
  %939 = load ptr, ptr %59, align 8, !tbaa !5
  %940 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %939, i32 0, i32 0
  %941 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %940) #0
  br i1 %941, label %942, label %972

942:                                              ; preds = %938
  %943 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %61, i32 0, i32 0
  %944 = load ptr, ptr %6, align 8, !tbaa !5
  %945 = load ptr, ptr %7, align 8, !tbaa !5
  %946 = load ptr, ptr %59, align 8, !tbaa !5
  %947 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %946, i32 0, i32 0
  %948 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %947) #0
  %949 = load ptr, ptr %50, align 8, !tbaa !5
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %943, ptr noundef nonnull align 8 dereferenceable(8) %944, ptr noundef nonnull align 8 dereferenceable(212) %945, ptr noundef nonnull align 8 dereferenceable(104) %948, ptr noundef nonnull align 4 dereferenceable(4) %949)
          to label %950 unwind label %913

950:                                              ; preds = %942
  %951 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %61, i32 0, i32 1
  %952 = load ptr, ptr %6, align 8, !tbaa !5
  %953 = load ptr, ptr %7, align 8, !tbaa !5
  %954 = load ptr, ptr %50, align 8, !tbaa !5
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H21get_pattern_value_maxES2_S6_RKNS3_8CoreTypeE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %951, ptr noundef nonnull align 8 dereferenceable(8) %952, ptr noundef nonnull align 8 dereferenceable(212) %953, ptr noundef nonnull align 4 dereferenceable(4) %954)
          to label %955 unwind label %959

955:                                              ; preds = %950
  %956 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %61, i32 0, i32 2
  store i8 1, ptr %956, align 8, !tbaa !48
  invoke void @_ZN11PatternRule15make_ValueRangeENS_15Data_ValueRangeE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %60, ptr noundef %61)
          to label %957 unwind label %963

957:                                              ; preds = %955
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %60)
          to label %958 unwind label %967

958:                                              ; preds = %957
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %60) #0
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %61) #0
  br label %1007

959:                                              ; preds = %950
  %960 = landingpad { ptr, i32 }
          cleanup
  %961 = extractvalue { ptr, i32 } %960, 0
  store ptr %961, ptr %9, align 8
  %962 = extractvalue { ptr, i32 } %960, 1
  store i32 %962, ptr %10, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %943) #0
  br label %1048

963:                                              ; preds = %955
  %964 = landingpad { ptr, i32 }
          cleanup
  %965 = extractvalue { ptr, i32 } %964, 0
  store ptr %965, ptr %9, align 8
  %966 = extractvalue { ptr, i32 } %964, 1
  store i32 %966, ptr %10, align 4
  br label %971

967:                                              ; preds = %957
  %968 = landingpad { ptr, i32 }
          cleanup
  %969 = extractvalue { ptr, i32 } %968, 0
  store ptr %969, ptr %9, align 8
  %970 = extractvalue { ptr, i32 } %968, 1
  store i32 %970, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %60) #0
  br label %971

971:                                              ; preds = %967, %963
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %61) #0
  br label %1048

972:                                              ; preds = %938
  %973 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %63, i32 0, i32 0
  %974 = load ptr, ptr %6, align 8, !tbaa !5
  %975 = load ptr, ptr %7, align 8, !tbaa !5
  %976 = load ptr, ptr %50, align 8, !tbaa !5
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H21get_pattern_value_minES2_S6_RKNS3_8CoreTypeE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %973, ptr noundef nonnull align 8 dereferenceable(8) %974, ptr noundef nonnull align 8 dereferenceable(212) %975, ptr noundef nonnull align 4 dereferenceable(4) %976)
          to label %977 unwind label %913

977:                                              ; preds = %972
  %978 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %63, i32 0, i32 1
  %979 = load ptr, ptr %6, align 8, !tbaa !5
  %980 = load ptr, ptr %7, align 8, !tbaa !5
  %981 = load ptr, ptr %59, align 8, !tbaa !5
  %982 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %981, i32 0, i32 1
  %983 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %982) #0
  %984 = load ptr, ptr %50, align 8, !tbaa !5
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %978, ptr noundef nonnull align 8 dereferenceable(8) %979, ptr noundef nonnull align 8 dereferenceable(212) %980, ptr noundef nonnull align 8 dereferenceable(104) %983, ptr noundef nonnull align 4 dereferenceable(4) %984)
          to label %985 unwind label %994

985:                                              ; preds = %977
  %986 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %63, i32 0, i32 2
  %987 = load ptr, ptr %59, align 8, !tbaa !5
  %988 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %987, i32 0, i32 2
  %989 = load i8, ptr %988, align 8, !tbaa !52, !range !40, !noundef !41
  %990 = trunc i8 %989 to i1
  %991 = zext i1 %990 to i8
  store i8 %991, ptr %986, align 8, !tbaa !48
  invoke void @_ZN11PatternRule15make_ValueRangeENS_15Data_ValueRangeE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %62, ptr noundef %63)
          to label %992 unwind label %998

992:                                              ; preds = %985
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %62)
          to label %993 unwind label %1002

993:                                              ; preds = %992
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %62) #0
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %63) #0
  br label %1007

994:                                              ; preds = %977
  %995 = landingpad { ptr, i32 }
          cleanup
  %996 = extractvalue { ptr, i32 } %995, 0
  store ptr %996, ptr %9, align 8
  %997 = extractvalue { ptr, i32 } %995, 1
  store i32 %997, ptr %10, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %973) #0
  br label %1048

998:                                              ; preds = %985
  %999 = landingpad { ptr, i32 }
          cleanup
  %1000 = extractvalue { ptr, i32 } %999, 0
  store ptr %1000, ptr %9, align 8
  %1001 = extractvalue { ptr, i32 } %999, 1
  store i32 %1001, ptr %10, align 4
  br label %1006

1002:                                             ; preds = %992
  %1003 = landingpad { ptr, i32 }
          cleanup
  %1004 = extractvalue { ptr, i32 } %1003, 0
  store ptr %1004, ptr %9, align 8
  %1005 = extractvalue { ptr, i32 } %1003, 1
  store i32 %1005, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %62) #0
  br label %1006

1006:                                             ; preds = %1002, %998
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %63) #0
  br label %1048

1007:                                             ; preds = %993, %958
  br label %1046

1008:                                             ; preds = %921
  %1009 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %65, i32 0, i32 0
  %1010 = load ptr, ptr %6, align 8, !tbaa !5
  %1011 = load ptr, ptr %7, align 8, !tbaa !5
  %1012 = load ptr, ptr %59, align 8, !tbaa !5
  %1013 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %1012, i32 0, i32 0
  %1014 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1013) #0
  %1015 = load ptr, ptr %50, align 8, !tbaa !5
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %1009, ptr noundef nonnull align 8 dereferenceable(8) %1010, ptr noundef nonnull align 8 dereferenceable(212) %1011, ptr noundef nonnull align 8 dereferenceable(104) %1014, ptr noundef nonnull align 4 dereferenceable(4) %1015)
          to label %1016 unwind label %913

1016:                                             ; preds = %1008
  %1017 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %65, i32 0, i32 1
  %1018 = load ptr, ptr %6, align 8, !tbaa !5
  %1019 = load ptr, ptr %7, align 8, !tbaa !5
  %1020 = load ptr, ptr %59, align 8, !tbaa !5
  %1021 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %1020, i32 0, i32 1
  %1022 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1021) #0
  %1023 = load ptr, ptr %50, align 8, !tbaa !5
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %1017, ptr noundef nonnull align 8 dereferenceable(8) %1018, ptr noundef nonnull align 8 dereferenceable(212) %1019, ptr noundef nonnull align 8 dereferenceable(104) %1022, ptr noundef nonnull align 4 dereferenceable(4) %1023)
          to label %1024 unwind label %1033

1024:                                             ; preds = %1016
  %1025 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %65, i32 0, i32 2
  %1026 = load ptr, ptr %59, align 8, !tbaa !5
  %1027 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Range", ptr %1026, i32 0, i32 2
  %1028 = load i8, ptr %1027, align 8, !tbaa !52, !range !40, !noundef !41
  %1029 = trunc i8 %1028 to i1
  %1030 = zext i1 %1029 to i8
  store i8 %1030, ptr %1025, align 8, !tbaa !48
  invoke void @_ZN11PatternRule15make_ValueRangeENS_15Data_ValueRangeE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %64, ptr noundef %65)
          to label %1031 unwind label %1037

1031:                                             ; preds = %1024
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %64)
          to label %1032 unwind label %1041

1032:                                             ; preds = %1031
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %64) #0
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %65) #0
  br label %1046

1033:                                             ; preds = %1016
  %1034 = landingpad { ptr, i32 }
          cleanup
  %1035 = extractvalue { ptr, i32 } %1034, 0
  store ptr %1035, ptr %9, align 8
  %1036 = extractvalue { ptr, i32 } %1034, 1
  store i32 %1036, ptr %10, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %1009) #0
  br label %1048

1037:                                             ; preds = %1024
  %1038 = landingpad { ptr, i32 }
          cleanup
  %1039 = extractvalue { ptr, i32 } %1038, 0
  store ptr %1039, ptr %9, align 8
  %1040 = extractvalue { ptr, i32 } %1038, 1
  store i32 %1040, ptr %10, align 4
  br label %1045

1041:                                             ; preds = %1031
  %1042 = landingpad { ptr, i32 }
          cleanup
  %1043 = extractvalue { ptr, i32 } %1042, 0
  store ptr %1043, ptr %9, align 8
  %1044 = extractvalue { ptr, i32 } %1042, 1
  store i32 %1044, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %64) #0
  br label %1045

1045:                                             ; preds = %1041, %1037
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %65) #0
  br label %1048

1046:                                             ; preds = %1032, %1007
  br label %1047

1047:                                             ; preds = %1046
  store i8 0, ptr %58, align 1, !tbaa !39
  br label %908, !llvm.loop !60

1048:                                             ; preds = %1045, %1033, %1006, %994, %971, %959, %913
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #0
  br label %1114

1049:                                             ; preds = %912
  br label %1050

1050:                                             ; preds = %1049
  store i8 0, ptr %58, align 1, !tbaa !39
  br label %899, !llvm.loop !61

1051:                                             ; preds = %902
  br label %1112

1052:                                             ; preds = %841
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #0
  store i8 1, ptr %66, align 1, !tbaa !39
  br label %1053

1053:                                             ; preds = %1110, %1052
  %1054 = load i8, ptr %66, align 1, !tbaa !39, !range !40, !noundef !41
  %1055 = trunc i8 %1054 to i1
  br i1 %1055, label %1057, label %1056

1056:                                             ; preds = %1053
  store i32 59, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #0
  br label %1111

1057:                                             ; preds = %1053
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #0
  %1058 = load ptr, ptr %7, align 8, !tbaa !5
  %1059 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1058, i32 0, i32 1
  %1060 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3HIR7Pattern4Data8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(184) %1059)
          to label %1061 unwind label %1067

1061:                                             ; preds = %1057
  store ptr %1060, ptr %67, align 8, !tbaa !5
  br label %1062

1062:                                             ; preds = %1107, %1061
  %1063 = load ptr, ptr %67, align 8, !tbaa !5
  %1064 = load i8, ptr %66, align 1, !tbaa !39, !range !40, !noundef !41
  %1065 = trunc i8 %1064 to i1
  br i1 %1065, label %1071, label %1066

1066:                                             ; preds = %1062
  store i32 62, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  br label %1109

1067:                                             ; preds = %1088, %1081, %1078, %1074, %1057
  %1068 = landingpad { ptr, i32 }
          cleanup
  %1069 = extractvalue { ptr, i32 } %1068, 0
  store ptr %1069, ptr %9, align 8
  %1070 = extractvalue { ptr, i32 } %1068, 1
  store i32 %1070, ptr %10, align 4
  br label %1108

1071:                                             ; preds = %1062
  %1072 = load ptr, ptr %50, align 8, !tbaa !5
  %1073 = load i32, ptr %1072, align 4, !tbaa !62
  switch i32 %1073, label %1088 [
    i32 14, label %1074
  ]

1074:                                             ; preds = %1071
  %1075 = load ptr, ptr %67, align 8, !tbaa !5
  %1076 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Value", ptr %1075, i32 0, i32 0
  %1077 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR7Pattern5Value10as_IntegerEv(ptr noundef nonnull align 8 dereferenceable(104) %1076)
          to label %1078 unwind label %1067

1078:                                             ; preds = %1074
  %1079 = getelementptr inbounds %"struct.HIR::Pattern::Value::Data_Integer", ptr %1077, i32 0, i32 1
  %1080 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %1079, i32 noundef 0)
          to label %1081 unwind label %1067

1081:                                             ; preds = %1078
  invoke void @_ZN11PatternRule9make_BoolEb(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %68, i1 noundef zeroext %1080)
          to label %1082 unwind label %1067

1082:                                             ; preds = %1081
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %68)
          to label %1083 unwind label %1084

1083:                                             ; preds = %1082
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %68) #0
  br label %1106

1084:                                             ; preds = %1082
  %1085 = landingpad { ptr, i32 }
          cleanup
  %1086 = extractvalue { ptr, i32 } %1085, 0
  store ptr %1086, ptr %9, align 8
  %1087 = extractvalue { ptr, i32 } %1085, 1
  store i32 %1087, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %68) #0
  br label %1108

1088:                                             ; preds = %1071
  %1089 = load ptr, ptr %6, align 8, !tbaa !5
  %1090 = load ptr, ptr %7, align 8, !tbaa !5
  %1091 = load ptr, ptr %67, align 8, !tbaa !5
  %1092 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Value", ptr %1091, i32 0, i32 0
  %1093 = load ptr, ptr %50, align 8, !tbaa !5
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %70, ptr noundef nonnull align 8 dereferenceable(8) %1089, ptr noundef nonnull align 8 dereferenceable(212) %1090, ptr noundef nonnull align 8 dereferenceable(104) %1092, ptr noundef nonnull align 4 dereferenceable(4) %1093)
          to label %1094 unwind label %1067

1094:                                             ; preds = %1088
  invoke void @_ZN11PatternRuleC2EN3MIR8ConstantE(ptr noundef nonnull align 8 dereferenceable(120) %69, ptr noundef %70)
          to label %1095 unwind label %1097

1095:                                             ; preds = %1094
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %69)
          to label %1096 unwind label %1101

1096:                                             ; preds = %1095
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %69) #0
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %70) #0
  br label %1106

1097:                                             ; preds = %1094
  %1098 = landingpad { ptr, i32 }
          cleanup
  %1099 = extractvalue { ptr, i32 } %1098, 0
  store ptr %1099, ptr %9, align 8
  %1100 = extractvalue { ptr, i32 } %1098, 1
  store i32 %1100, ptr %10, align 4
  br label %1105

1101:                                             ; preds = %1095
  %1102 = landingpad { ptr, i32 }
          cleanup
  %1103 = extractvalue { ptr, i32 } %1102, 0
  store ptr %1103, ptr %9, align 8
  %1104 = extractvalue { ptr, i32 } %1102, 1
  store i32 %1104, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %69) #0
  br label %1105

1105:                                             ; preds = %1101, %1097
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %70) #0
  br label %1108

1106:                                             ; preds = %1096, %1083
  br label %1107

1107:                                             ; preds = %1106
  store i8 0, ptr %66, align 1, !tbaa !39
  br label %1062, !llvm.loop !64

1108:                                             ; preds = %1105, %1084, %1067
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #0
  br label %1114

1109:                                             ; preds = %1066
  br label %1110

1110:                                             ; preds = %1109
  store i8 0, ptr %66, align 1, !tbaa !39
  br label %1053, !llvm.loop !65

1111:                                             ; preds = %1056
  br label %1112

1112:                                             ; preds = %1111, %1051, %897, %866
  br label %1113

1113:                                             ; preds = %1112
  store i8 0, ptr %49, align 1, !tbaa !39
  br label %828, !llvm.loop !66

1114:                                             ; preds = %1108, %1048, %894, %861, %860, %833
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #0
  br label %4877

1115:                                             ; preds = %832
  br label %1116

1116:                                             ; preds = %1115
  store i8 0, ptr %49, align 1, !tbaa !39
  br label %820, !llvm.loop !67

1117:                                             ; preds = %823
  br label %4875

1118:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #0
  store i8 1, ptr %71, align 1, !tbaa !39
  br label %1119

1119:                                             ; preds = %1363, %1118
  %1120 = load i8, ptr %71, align 1, !tbaa !39, !range !40, !noundef !41
  %1121 = trunc i8 %1120 to i1
  br i1 %1121, label %1123, label %1122

1122:                                             ; preds = %1119
  store i32 66, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #0
  br label %1364

1123:                                             ; preds = %1119
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #0
  %1124 = load ptr, ptr %41, align 8, !tbaa !5
  %1125 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1124)
          to label %1126 unwind label %1132

1126:                                             ; preds = %1123
  store ptr %1125, ptr %72, align 8, !tbaa !5
  br label %1127

1127:                                             ; preds = %1360, %1126
  %1128 = load ptr, ptr %72, align 8, !tbaa !5
  %1129 = load i8, ptr %71, align 1, !tbaa !39, !range !40, !noundef !41
  %1130 = trunc i8 %1129 to i1
  br i1 %1130, label %1136, label %1131

1131:                                             ; preds = %1127
  store i32 69, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #0
  br label %1362

1132:                                             ; preds = %1357, %1341, %1138, %1136, %1123
  %1133 = landingpad { ptr, i32 }
          cleanup
  %1134 = extractvalue { ptr, i32 } %1133, 0
  store ptr %1134, ptr %9, align 8
  %1135 = extractvalue { ptr, i32 } %1133, 1
  store i32 %1135, ptr %10, align 4
  br label %1361

1136:                                             ; preds = %1127
  %1137 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %1137, i8 noundef zeroext 0)
          to label %1138 unwind label %1132

1138:                                             ; preds = %1136
  %1139 = load ptr, ptr %7, align 8, !tbaa !5
  %1140 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1139, i32 0, i32 1
  %1141 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1140)
          to label %1142 unwind label %1132

1142:                                             ; preds = %1138
  switch i32 %1141, label %1333 [
    i32 0, label %1143
    i32 1, label %1144
    i32 4, label %1182
    i32 5, label %1235
  ]

1143:                                             ; preds = %1142
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1461, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

1144:                                             ; preds = %1142
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #0
  %1145 = load ptr, ptr %7, align 8, !tbaa !5
  %1146 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1145, i32 0, i32 1
  %1147 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %1146)
          to label %1148 unwind label %1160

1148:                                             ; preds = %1144
  store ptr %1147, ptr %73, align 8, !tbaa !5
  %1149 = load ptr, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #0
  %1150 = load ptr, ptr %72, align 8, !tbaa !5
  store ptr %1150, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #0
  %1151 = load ptr, ptr %74, align 8, !tbaa !5
  %1152 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1151) #0
  %1153 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.366", ptr %75, i32 0, i32 0
  store ptr %1152, ptr %1153, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #0
  %1154 = load ptr, ptr %74, align 8, !tbaa !5
  %1155 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1154) #0
  %1156 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.366", ptr %76, i32 0, i32 0
  store ptr %1155, ptr %1156, align 8
  br label %1157

1157:                                             ; preds = %1174, %1148
  %1158 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #0
  br i1 %1158, label %1164, label %1159

1159:                                             ; preds = %1157
  store i32 73, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #0
  br label %1180

1160:                                             ; preds = %1144
  %1161 = landingpad { ptr, i32 }
          cleanup
  %1162 = extractvalue { ptr, i32 } %1161, 0
  store ptr %1162, ptr %9, align 8
  %1163 = extractvalue { ptr, i32 } %1161, 1
  store i32 %1163, ptr %10, align 4
  br label %1181

1164:                                             ; preds = %1157
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #0
  %1165 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #0
  store ptr %1165, ptr %77, align 8, !tbaa !5
  %1166 = load ptr, ptr %6, align 8, !tbaa !5
  %1167 = load ptr, ptr %77, align 8, !tbaa !5
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %1166, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %1167)
          to label %1168 unwind label %1176

1168:                                             ; preds = %1164
  %1169 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %1170 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1169)
          to label %1171 unwind label %1176

1171:                                             ; preds = %1168
  %1172 = load i8, ptr %1170, align 1, !tbaa !68
  %1173 = add i8 %1172, 1
  store i8 %1173, ptr %1170, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  br label %1174

1174:                                             ; preds = %1171
  %1175 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #0
  br label %1157

1176:                                             ; preds = %1168, %1164
  %1177 = landingpad { ptr, i32 }
          cleanup
  %1178 = extractvalue { ptr, i32 } %1177, 0
  store ptr %1178, ptr %9, align 8
  %1179 = extractvalue { ptr, i32 } %1177, 1
  store i32 %1179, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #0
  br label %1181

1180:                                             ; preds = %1159
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #0
  br label %1357

1181:                                             ; preds = %1176, %1160
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #0
  br label %1361

1182:                                             ; preds = %1142
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #0
  %1183 = load ptr, ptr %7, align 8, !tbaa !5
  %1184 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1183, i32 0, i32 1
  %1185 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR7Pattern4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1184)
          to label %1186 unwind label %1196

1186:                                             ; preds = %1182
  store ptr %1185, ptr %78, align 8, !tbaa !5
  %1187 = load ptr, ptr %78, align 8, !tbaa !5
  %1188 = load ptr, ptr %72, align 8, !tbaa !5
  %1189 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1188) #0
  %1190 = load ptr, ptr %78, align 8, !tbaa !5
  %1191 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Tuple", ptr %1190, i32 0, i32 0
  %1192 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1191) #0
  %1193 = icmp eq i64 %1189, %1192
  br i1 %1193, label %1194, label %1195

1194:                                             ; preds = %1186
  br label %1201

1195:                                             ; preds = %1186
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.17, i32 noundef 1442, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

1196:                                             ; preds = %1182
  %1197 = landingpad { ptr, i32 }
          cleanup
  %1198 = extractvalue { ptr, i32 } %1197, 0
  store ptr %1198, ptr %9, align 8
  %1199 = extractvalue { ptr, i32 } %1197, 1
  store i32 %1199, ptr %10, align 4
  br label %1234

1200:                                             ; No predecessors!
  br label %1201

1201:                                             ; preds = %1200, %1194
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #0
  store i32 0, ptr %79, align 4, !tbaa !69
  br label %1202

1202:                                             ; preds = %1226, %1201
  %1203 = load i32, ptr %79, align 4, !tbaa !69
  %1204 = zext i32 %1203 to i64
  %1205 = load ptr, ptr %72, align 8, !tbaa !5
  %1206 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1205) #0
  %1207 = icmp ult i64 %1204, %1206
  br i1 %1207, label %1209, label %1208

1208:                                             ; preds = %1202
  store i32 75, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #0
  br label %1233

1209:                                             ; preds = %1202
  %1210 = load ptr, ptr %6, align 8, !tbaa !5
  %1211 = load ptr, ptr %78, align 8, !tbaa !5
  %1212 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Tuple", ptr %1211, i32 0, i32 0
  %1213 = load i32, ptr %79, align 4, !tbaa !69
  %1214 = zext i32 %1213 to i64
  %1215 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1212, i64 noundef %1214) #0
  %1216 = load ptr, ptr %72, align 8, !tbaa !5
  %1217 = load i32, ptr %79, align 4, !tbaa !69
  %1218 = zext i32 %1217 to i64
  %1219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1216, i64 noundef %1218) #0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %1210, ptr noundef nonnull align 8 dereferenceable(212) %1215, ptr noundef nonnull align 8 dereferenceable(8) %1219)
          to label %1220 unwind label %1229

1220:                                             ; preds = %1209
  %1221 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %1222 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1221)
          to label %1223 unwind label %1229

1223:                                             ; preds = %1220
  %1224 = load i8, ptr %1222, align 1, !tbaa !68
  %1225 = add i8 %1224, 1
  store i8 %1225, ptr %1222, align 1, !tbaa !68
  br label %1226

1226:                                             ; preds = %1223
  %1227 = load i32, ptr %79, align 4, !tbaa !69
  %1228 = add i32 %1227, 1
  store i32 %1228, ptr %79, align 4, !tbaa !69
  br label %1202, !llvm.loop !70

1229:                                             ; preds = %1220, %1209
  %1230 = landingpad { ptr, i32 }
          cleanup
  %1231 = extractvalue { ptr, i32 } %1230, 0
  store ptr %1231, ptr %9, align 8
  %1232 = extractvalue { ptr, i32 } %1230, 1
  store i32 %1232, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #0
  br label %1234

1233:                                             ; preds = %1208
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #0
  br label %1357

1234:                                             ; preds = %1229, %1196
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #0
  br label %1361

1235:                                             ; preds = %1142
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #0
  %1236 = load ptr, ptr %7, align 8, !tbaa !5
  %1237 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1236, i32 0, i32 1
  %1238 = invoke noundef nonnull align 8 dereferenceable(52) ptr @_ZNK3HIR7Pattern4Data13as_SplitTupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1237)
          to label %1239 unwind label %1253

1239:                                             ; preds = %1235
  store ptr %1238, ptr %80, align 8, !tbaa !5
  %1240 = load ptr, ptr %80, align 8, !tbaa !5
  %1241 = load ptr, ptr %72, align 8, !tbaa !5
  %1242 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1241) #0
  %1243 = load ptr, ptr %80, align 8, !tbaa !5
  %1244 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitTuple", ptr %1243, i32 0, i32 0
  %1245 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1244) #0
  %1246 = load ptr, ptr %80, align 8, !tbaa !5
  %1247 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitTuple", ptr %1246, i32 0, i32 1
  %1248 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1247) #0
  %1249 = add i64 %1245, %1248
  %1250 = icmp uge i64 %1242, %1249
  br i1 %1250, label %1251, label %1252

1251:                                             ; preds = %1239
  br label %1258

1252:                                             ; preds = %1239
  call void @__assert_fail(ptr noundef @.str.64, ptr noundef @.str.17, i32 noundef 1449, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

1253:                                             ; preds = %1235
  %1254 = landingpad { ptr, i32 }
          cleanup
  %1255 = extractvalue { ptr, i32 } %1254, 0
  store ptr %1255, ptr %9, align 8
  %1256 = extractvalue { ptr, i32 } %1254, 1
  store i32 %1256, ptr %10, align 4
  br label %1332

1257:                                             ; No predecessors!
  br label %1258

1258:                                             ; preds = %1257, %1251
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #0
  %1259 = load ptr, ptr %72, align 8, !tbaa !5
  %1260 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1259) #0
  %1261 = load ptr, ptr %80, align 8, !tbaa !5
  %1262 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitTuple", ptr %1261, i32 0, i32 1
  %1263 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1262) #0
  %1264 = sub i64 %1260, %1263
  %1265 = trunc i64 %1264 to i32
  store i32 %1265, ptr %81, align 4, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #0
  store i32 0, ptr %82, align 4, !tbaa !69
  br label %1266

1266:                                             ; preds = %1328, %1258
  %1267 = load i32, ptr %82, align 4, !tbaa !69
  %1268 = zext i32 %1267 to i64
  %1269 = load ptr, ptr %72, align 8, !tbaa !5
  %1270 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1269) #0
  %1271 = icmp ult i64 %1268, %1270
  br i1 %1271, label %1273, label %1272

1272:                                             ; preds = %1266
  store i32 78, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #0
  br label %1331

1273:                                             ; preds = %1266
  %1274 = load i32, ptr %82, align 4, !tbaa !69
  %1275 = zext i32 %1274 to i64
  %1276 = load ptr, ptr %80, align 8, !tbaa !5
  %1277 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitTuple", ptr %1276, i32 0, i32 0
  %1278 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1277) #0
  %1279 = icmp ult i64 %1275, %1278
  br i1 %1279, label %1280, label %1296

1280:                                             ; preds = %1273
  %1281 = load ptr, ptr %6, align 8, !tbaa !5
  %1282 = load ptr, ptr %80, align 8, !tbaa !5
  %1283 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitTuple", ptr %1282, i32 0, i32 0
  %1284 = load i32, ptr %82, align 4, !tbaa !69
  %1285 = zext i32 %1284 to i64
  %1286 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1283, i64 noundef %1285) #0
  %1287 = load ptr, ptr %72, align 8, !tbaa !5
  %1288 = load i32, ptr %82, align 4, !tbaa !69
  %1289 = zext i32 %1288 to i64
  %1290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1287, i64 noundef %1289) #0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %1281, ptr noundef nonnull align 8 dereferenceable(212) %1286, ptr noundef nonnull align 8 dereferenceable(8) %1290)
          to label %1291 unwind label %1292

1291:                                             ; preds = %1280
  br label %1322

1292:                                             ; preds = %1322, %1307, %1300, %1280
  %1293 = landingpad { ptr, i32 }
          cleanup
  %1294 = extractvalue { ptr, i32 } %1293, 0
  store ptr %1294, ptr %9, align 8
  %1295 = extractvalue { ptr, i32 } %1293, 1
  store i32 %1295, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #0
  br label %1332

1296:                                             ; preds = %1273
  %1297 = load i32, ptr %82, align 4, !tbaa !69
  %1298 = load i32, ptr %81, align 4, !tbaa !69
  %1299 = icmp ult i32 %1297, %1298
  br i1 %1299, label %1300, label %1307

1300:                                             ; preds = %1296
  %1301 = load ptr, ptr %6, align 8, !tbaa !5
  %1302 = load ptr, ptr %72, align 8, !tbaa !5
  %1303 = load i32, ptr %82, align 4, !tbaa !69
  %1304 = zext i32 %1303 to i64
  %1305 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1302, i64 noundef %1304) #0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %1301, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %1305)
          to label %1306 unwind label %1292

1306:                                             ; preds = %1300
  br label %1321

1307:                                             ; preds = %1296
  %1308 = load ptr, ptr %6, align 8, !tbaa !5
  %1309 = load ptr, ptr %80, align 8, !tbaa !5
  %1310 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitTuple", ptr %1309, i32 0, i32 1
  %1311 = load i32, ptr %82, align 4, !tbaa !69
  %1312 = load i32, ptr %81, align 4, !tbaa !69
  %1313 = sub i32 %1311, %1312
  %1314 = zext i32 %1313 to i64
  %1315 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1310, i64 noundef %1314) #0
  %1316 = load ptr, ptr %72, align 8, !tbaa !5
  %1317 = load i32, ptr %82, align 4, !tbaa !69
  %1318 = zext i32 %1317 to i64
  %1319 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1316, i64 noundef %1318) #0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %1308, ptr noundef nonnull align 8 dereferenceable(212) %1315, ptr noundef nonnull align 8 dereferenceable(8) %1319)
          to label %1320 unwind label %1292

1320:                                             ; preds = %1307
  br label %1321

1321:                                             ; preds = %1320, %1306
  br label %1322

1322:                                             ; preds = %1321, %1291
  %1323 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %1324 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1323)
          to label %1325 unwind label %1292

1325:                                             ; preds = %1322
  %1326 = load i8, ptr %1324, align 1, !tbaa !68
  %1327 = add i8 %1326, 1
  store i8 %1327, ptr %1324, align 1, !tbaa !68
  br label %1328

1328:                                             ; preds = %1325
  %1329 = load i32, ptr %82, align 4, !tbaa !69
  %1330 = add i32 %1329, 1
  store i32 %1330, ptr %82, align 4, !tbaa !69
  br label %1266, !llvm.loop !71

1331:                                             ; preds = %1272
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #0
  br label %1357

1332:                                             ; preds = %1292, %1253
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #0
  br label %1361

1333:                                             ; preds = %1142
  br label %1334

1334:                                             ; preds = %1333
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #0
  %1335 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %1335)
          to label %1336 unwind label %1342

1336:                                             ; preds = %1334
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #0
  %1337 = getelementptr inbounds %class.anon.367, ptr %85, i32 0, i32 0
  %1338 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1338, ptr %1337, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 8 dereferenceable(8) %85) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef %84)
          to label %1339 unwind label %1346

1339:                                             ; preds = %1336
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #0
  %1340 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1340, ptr noundef @.str.10)
          to label %1341 unwind label %1351

1341:                                             ; preds = %1339
  invoke void @__cxa_throw(ptr %1340, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %1132

1342:                                             ; preds = %1334
  %1343 = landingpad { ptr, i32 }
          cleanup
  %1344 = extractvalue { ptr, i32 } %1343, 0
  store ptr %1344, ptr %9, align 8
  %1345 = extractvalue { ptr, i32 } %1343, 1
  store i32 %1345, ptr %10, align 4
  br label %1350

1346:                                             ; preds = %1336
  %1347 = landingpad { ptr, i32 }
          cleanup
  %1348 = extractvalue { ptr, i32 } %1347, 0
  store ptr %1348, ptr %9, align 8
  %1349 = extractvalue { ptr, i32 } %1347, 1
  store i32 %1349, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #0
  br label %1350

1350:                                             ; preds = %1346, %1342
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #0
  br label %1361

1351:                                             ; preds = %1339
  %1352 = landingpad { ptr, i32 }
          cleanup
  %1353 = extractvalue { ptr, i32 } %1352, 0
  store ptr %1353, ptr %9, align 8
  %1354 = extractvalue { ptr, i32 } %1352, 1
  store i32 %1354, ptr %10, align 4
  call void @__cxa_free_exception(ptr %1340) #0
  br label %1361

1355:                                             ; No predecessors!
  br label %1356

1356:                                             ; preds = %1355
  br label %1357

1357:                                             ; preds = %1356, %1331, %1233, %1180
  %1358 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %1358)
          to label %1359 unwind label %1132

1359:                                             ; preds = %1357
  br label %1360

1360:                                             ; preds = %1359
  store i8 0, ptr %71, align 1, !tbaa !39
  br label %1127, !llvm.loop !72

1361:                                             ; preds = %1351, %1350, %1332, %1234, %1181, %1132
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #0
  br label %4877

1362:                                             ; preds = %1131
  br label %1363

1363:                                             ; preds = %1362
  store i8 0, ptr %71, align 1, !tbaa !39
  br label %1119, !llvm.loop !73

1364:                                             ; preds = %1122
  br label %4875

1365:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #0
  store i8 1, ptr %86, align 1, !tbaa !39
  br label %1366

1366:                                             ; preds = %3107, %1365
  %1367 = load i8, ptr %86, align 1, !tbaa !39, !range !40, !noundef !41
  %1368 = trunc i8 %1367 to i1
  br i1 %1368, label %1370, label %1369

1369:                                             ; preds = %1366
  store i32 83, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #0
  br label %3108

1370:                                             ; preds = %1366
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #0
  %1371 = load ptr, ptr %41, align 8, !tbaa !5
  %1372 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1371)
          to label %1373 unwind label %1379

1373:                                             ; preds = %1370
  store ptr %1372, ptr %87, align 8, !tbaa !5
  br label %1374

1374:                                             ; preds = %3103, %1373
  %1375 = load ptr, ptr %87, align 8, !tbaa !5
  %1376 = load i8, ptr %86, align 1, !tbaa !39, !range !40, !noundef !41
  %1377 = trunc i8 %1376 to i1
  br i1 %1377, label %1383, label %1378

1378:                                             ; preds = %1374
  store i32 86, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  br label %3106

1379:                                             ; preds = %1370
  %1380 = landingpad { ptr, i32 }
          cleanup
  %1381 = extractvalue { ptr, i32 } %1380, 0
  store ptr %1381, ptr %9, align 8
  %1382 = extractvalue { ptr, i32 } %1380, 1
  store i32 %1382, ptr %10, align 4
  br label %3105

1383:                                             ; preds = %1374
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %1384 unwind label %1395

1384:                                             ; preds = %1383
  call void @llvm.lifetime.start.p0(i64 32, ptr %89) #0
  %1385 = getelementptr inbounds %class.anon.368, ptr %89, i32 0, i32 0
  store ptr %88, ptr %1385, align 8, !tbaa !5
  %1386 = getelementptr inbounds %class.anon.368, ptr %89, i32 0, i32 1
  %1387 = load ptr, ptr %87, align 8, !tbaa !5
  store ptr %1387, ptr %1386, align 8, !tbaa !5
  %1388 = getelementptr inbounds %class.anon.368, ptr %89, i32 0, i32 2
  %1389 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %1389, ptr %1388, align 8, !tbaa !5
  %1390 = getelementptr inbounds %class.anon.368, ptr %89, i32 0, i32 3
  store ptr %419, ptr %1390, align 8, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #0
  store i8 1, ptr %90, align 1, !tbaa !39
  br label %1391

1391:                                             ; preds = %3101, %1384
  %1392 = load i8, ptr %90, align 1, !tbaa !39, !range !40, !noundef !41
  %1393 = trunc i8 %1392 to i1
  br i1 %1393, label %1399, label %1394

1394:                                             ; preds = %1391
  store i32 89, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #0
  br label %3102

1395:                                             ; preds = %1383
  %1396 = landingpad { ptr, i32 }
          cleanup
  %1397 = extractvalue { ptr, i32 } %1396, 0
  store ptr %1397, ptr %9, align 8
  %1398 = extractvalue { ptr, i32 } %1396, 1
  store i32 %1398, ptr %10, align 4
  br label %3104

1399:                                             ; preds = %1391
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #0
  %1400 = load ptr, ptr %87, align 8, !tbaa !5
  %1401 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1400, i32 0, i32 1
  store ptr %1401, ptr %91, align 8, !tbaa !5
  br label %1402

1402:                                             ; preds = %3098, %1399
  %1403 = load i8, ptr %90, align 1, !tbaa !39, !range !40, !noundef !41
  %1404 = trunc i8 %1403 to i1
  br i1 %1404, label %1406, label %1405

1405:                                             ; preds = %1402
  store i32 92, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #0
  br label %3100

1406:                                             ; preds = %1402
  %1407 = load ptr, ptr %91, align 8, !tbaa !5
  %1408 = invoke noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %1407)
          to label %1409 unwind label %1410

1409:                                             ; preds = %1406
  switch i32 %1408, label %3097 [
    i32 0, label %1414
    i32 1, label %1415
    i32 2, label %1462
    i32 4, label %1533
    i32 5, label %2332
    i32 3, label %2450
    i32 6, label %2556
  ]

1410:                                             ; preds = %1406
  %1411 = landingpad { ptr, i32 }
          cleanup
  %1412 = extractvalue { ptr, i32 } %1411, 0
  store ptr %1412, ptr %9, align 8
  %1413 = extractvalue { ptr, i32 } %1411, 1
  store i32 %1413, ptr %10, align 4
  br label %3099

1414:                                             ; preds = %1409
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1529, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

1415:                                             ; preds = %1409
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #0
  store i8 1, ptr %92, align 1, !tbaa !39
  br label %1416

1416:                                             ; preds = %1460, %1415
  %1417 = load i8, ptr %92, align 1, !tbaa !39, !range !40, !noundef !41
  %1418 = trunc i8 %1417 to i1
  br i1 %1418, label %1420, label %1419

1419:                                             ; preds = %1416
  store i32 96, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #0
  br label %1461

1420:                                             ; preds = %1416
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #0
  %1421 = load ptr, ptr %91, align 8, !tbaa !5
  %1422 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %1421)
          to label %1423 unwind label %1429

1423:                                             ; preds = %1420
  store ptr %1422, ptr %93, align 8, !tbaa !5
  br label %1424

1424:                                             ; preds = %1457, %1423
  %1425 = load ptr, ptr %93, align 8, !tbaa !5
  %1426 = load i8, ptr %92, align 1, !tbaa !39, !range !40, !noundef !41
  %1427 = trunc i8 %1426 to i1
  br i1 %1427, label %1433, label %1428

1428:                                             ; preds = %1424
  store i32 99, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  br label %1459

1429:                                             ; preds = %1441, %1420
  %1430 = landingpad { ptr, i32 }
          cleanup
  %1431 = extractvalue { ptr, i32 } %1430, 0
  store ptr %1431, ptr %9, align 8
  %1432 = extractvalue { ptr, i32 } %1430, 1
  store i32 %1432, ptr %10, align 4
  br label %1458

1433:                                             ; preds = %1424
  br label %1434

1434:                                             ; preds = %1433
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #0
  %1435 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %1435)
          to label %1436 unwind label %1442

1436:                                             ; preds = %1434
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #0
  %1437 = getelementptr inbounds %class.anon.369, ptr %96, i32 0, i32 0
  %1438 = load ptr, ptr %87, align 8, !tbaa !5
  store ptr %1438, ptr %1437, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(8) %96) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef %95)
          to label %1439 unwind label %1446

1439:                                             ; preds = %1436
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #0
  %1440 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1440, ptr noundef @.str.10)
          to label %1441 unwind label %1451

1441:                                             ; preds = %1439
  invoke void @__cxa_throw(ptr %1440, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %1429

1442:                                             ; preds = %1434
  %1443 = landingpad { ptr, i32 }
          cleanup
  %1444 = extractvalue { ptr, i32 } %1443, 0
  store ptr %1444, ptr %9, align 8
  %1445 = extractvalue { ptr, i32 } %1443, 1
  store i32 %1445, ptr %10, align 4
  br label %1450

1446:                                             ; preds = %1436
  %1447 = landingpad { ptr, i32 }
          cleanup
  %1448 = extractvalue { ptr, i32 } %1447, 0
  store ptr %1448, ptr %9, align 8
  %1449 = extractvalue { ptr, i32 } %1447, 1
  store i32 %1449, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #0
  br label %1450

1450:                                             ; preds = %1446, %1442
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #0
  br label %1458

1451:                                             ; preds = %1439
  %1452 = landingpad { ptr, i32 }
          cleanup
  %1453 = extractvalue { ptr, i32 } %1452, 0
  store ptr %1453, ptr %9, align 8
  %1454 = extractvalue { ptr, i32 } %1452, 1
  store i32 %1454, ptr %10, align 4
  call void @__cxa_free_exception(ptr %1440) #0
  br label %1458

1455:                                             ; No predecessors!
  br label %1456

1456:                                             ; preds = %1455
  br label %1457

1457:                                             ; preds = %1456
  store i8 0, ptr %92, align 1, !tbaa !39
  br label %1424, !llvm.loop !76

1458:                                             ; preds = %1451, %1450, %1429
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #0
  br label %3099

1459:                                             ; preds = %1428
  br label %1460

1460:                                             ; preds = %1459
  store i8 0, ptr %92, align 1, !tbaa !39
  br label %1416, !llvm.loop !77

1461:                                             ; preds = %1419
  br label %3097

1462:                                             ; preds = %1409
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #0
  store i8 1, ptr %97, align 1, !tbaa !39
  br label %1463

1463:                                             ; preds = %1531, %1462
  %1464 = load i8, ptr %97, align 1, !tbaa !39, !range !40, !noundef !41
  %1465 = trunc i8 %1464 to i1
  br i1 %1465, label %1467, label %1466

1466:                                             ; preds = %1463
  store i32 104, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #0
  br label %1532

1467:                                             ; preds = %1463
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #0
  %1468 = load ptr, ptr %91, align 8, !tbaa !5
  %1469 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %1468)
          to label %1470 unwind label %1476

1470:                                             ; preds = %1467
  store ptr %1469, ptr %98, align 8, !tbaa !5
  br label %1471

1471:                                             ; preds = %1528, %1470
  %1472 = load ptr, ptr %98, align 8, !tbaa !5
  %1473 = load i8, ptr %97, align 1, !tbaa !39, !range !40, !noundef !41
  %1474 = trunc i8 %1473 to i1
  br i1 %1474, label %1480, label %1475

1475:                                             ; preds = %1471
  store i32 107, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  br label %1530

1476:                                             ; preds = %1511, %1480, %1467
  %1477 = landingpad { ptr, i32 }
          cleanup
  %1478 = extractvalue { ptr, i32 } %1477, 0
  store ptr %1478, ptr %9, align 8
  %1479 = extractvalue { ptr, i32 } %1477, 1
  store i32 %1479, ptr %10, align 4
  br label %1529

1480:                                             ; preds = %1471
  %1481 = load ptr, ptr %7, align 8, !tbaa !5
  %1482 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1481, i32 0, i32 1
  %1483 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1482)
          to label %1484 unwind label %1476

1484:                                             ; preds = %1480
  switch i32 %1483, label %1503 [
    i32 0, label %1485
    i32 1, label %1486
  ]

1485:                                             ; preds = %1484
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1539, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

1486:                                             ; preds = %1484
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #0
  %1487 = load ptr, ptr %7, align 8, !tbaa !5
  %1488 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1487, i32 0, i32 1
  %1489 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %1488)
          to label %1490 unwind label %1494

1490:                                             ; preds = %1486
  store ptr %1489, ptr %99, align 8, !tbaa !5
  %1491 = load ptr, ptr %99, align 8, !tbaa !5
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %100)
          to label %1492 unwind label %1494

1492:                                             ; preds = %1490
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %100)
          to label %1493 unwind label %1498

1493:                                             ; preds = %1492
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %100) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  br label %1527

1494:                                             ; preds = %1490, %1486
  %1495 = landingpad { ptr, i32 }
          cleanup
  %1496 = extractvalue { ptr, i32 } %1495, 0
  store ptr %1496, ptr %9, align 8
  %1497 = extractvalue { ptr, i32 } %1495, 1
  store i32 %1497, ptr %10, align 4
  br label %1502

1498:                                             ; preds = %1492
  %1499 = landingpad { ptr, i32 }
          cleanup
  %1500 = extractvalue { ptr, i32 } %1499, 0
  store ptr %1500, ptr %9, align 8
  %1501 = extractvalue { ptr, i32 } %1499, 1
  store i32 %1501, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %100) #0
  br label %1502

1502:                                             ; preds = %1498, %1494
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  br label %1529

1503:                                             ; preds = %1484
  br label %1504

1504:                                             ; preds = %1503
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #0
  %1505 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %1505)
          to label %1506 unwind label %1512

1506:                                             ; preds = %1504
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #0
  %1507 = getelementptr inbounds %class.anon.370, ptr %104, i32 0, i32 0
  %1508 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1508, ptr %1507, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull align 8 dereferenceable(8) %104) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef %103)
          to label %1509 unwind label %1516

1509:                                             ; preds = %1506
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #0
  %1510 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1510, ptr noundef @.str.10)
          to label %1511 unwind label %1521

1511:                                             ; preds = %1509
  invoke void @__cxa_throw(ptr %1510, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %1476

1512:                                             ; preds = %1504
  %1513 = landingpad { ptr, i32 }
          cleanup
  %1514 = extractvalue { ptr, i32 } %1513, 0
  store ptr %1514, ptr %9, align 8
  %1515 = extractvalue { ptr, i32 } %1513, 1
  store i32 %1515, ptr %10, align 4
  br label %1520

1516:                                             ; preds = %1506
  %1517 = landingpad { ptr, i32 }
          cleanup
  %1518 = extractvalue { ptr, i32 } %1517, 0
  store ptr %1518, ptr %9, align 8
  %1519 = extractvalue { ptr, i32 } %1517, 1
  store i32 %1519, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #0
  br label %1520

1520:                                             ; preds = %1516, %1512
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #0
  br label %1529

1521:                                             ; preds = %1509
  %1522 = landingpad { ptr, i32 }
          cleanup
  %1523 = extractvalue { ptr, i32 } %1522, 0
  store ptr %1523, ptr %9, align 8
  %1524 = extractvalue { ptr, i32 } %1522, 1
  store i32 %1524, ptr %10, align 4
  call void @__cxa_free_exception(ptr %1510) #0
  br label %1529

1525:                                             ; No predecessors!
  br label %1526

1526:                                             ; preds = %1525
  br label %1527

1527:                                             ; preds = %1526, %1493
  br label %1528

1528:                                             ; preds = %1527
  store i8 0, ptr %97, align 1, !tbaa !39
  br label %1471, !llvm.loop !78

1529:                                             ; preds = %1521, %1520, %1502, %1476
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #0
  br label %3099

1530:                                             ; preds = %1475
  br label %1531

1531:                                             ; preds = %1530
  store i8 0, ptr %97, align 1, !tbaa !39
  br label %1463, !llvm.loop !79

1532:                                             ; preds = %1466
  br label %3097

1533:                                             ; preds = %1409
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #0
  store i8 1, ptr %105, align 1, !tbaa !39
  br label %1534

1534:                                             ; preds = %2330, %1533
  %1535 = load i8, ptr %105, align 1, !tbaa !39, !range !40, !noundef !41
  %1536 = trunc i8 %1535 to i1
  br i1 %1536, label %1538, label %1537

1537:                                             ; preds = %1534
  store i32 113, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #0
  br label %2331

1538:                                             ; preds = %1534
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #0
  %1539 = load ptr, ptr %91, align 8, !tbaa !5
  %1540 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1539)
          to label %1541 unwind label %1547

1541:                                             ; preds = %1538
  store ptr %1540, ptr %106, align 8, !tbaa !5
  br label %1542

1542:                                             ; preds = %2325, %1541
  %1543 = load ptr, ptr %106, align 8, !tbaa !5
  %1544 = load i8, ptr %105, align 1, !tbaa !39, !range !40, !noundef !41
  %1545 = trunc i8 %1544 to i1
  br i1 %1545, label %1551, label %1546

1546:                                             ; preds = %1542
  store i32 116, ptr %17, align 4
  br label %2327

1547:                                             ; preds = %1538
  %1548 = landingpad { ptr, i32 }
          cleanup
  %1549 = extractvalue { ptr, i32 } %1548, 0
  store ptr %1549, ptr %9, align 8
  %1550 = extractvalue { ptr, i32 } %1548, 1
  store i32 %1550, ptr %10, align 4
  br label %2328

1551:                                             ; preds = %1542
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #0
  %1552 = load ptr, ptr %106, align 8, !tbaa !5
  %1553 = load ptr, ptr %1552, align 8, !tbaa !5
  %1554 = getelementptr inbounds %"class.HIR::Struct", ptr %1553, i32 0, i32 3
  store ptr %1554, ptr %107, align 8, !tbaa !5
  %1555 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 1
  %1556 = load ptr, ptr %1555, align 8, !tbaa !80
  %1557 = icmp ne ptr %1556, null
  br i1 %1557, label %1558, label %1657

1558:                                             ; preds = %1551
  %1559 = load ptr, ptr %87, align 8, !tbaa !5
  %1560 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1559, i32 0, i32 0
  %1561 = getelementptr inbounds %"class.HIR::Path", ptr %1560, i32 0, i32 0
  %1562 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %1561)
          to label %1563 unwind label %1583

1563:                                             ; preds = %1558
  %1564 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1562, i32 0, i32 0
  %1565 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 1
  %1566 = load ptr, ptr %1565, align 8, !tbaa !80
  %1567 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1564, ptr noundef nonnull align 8 dereferenceable(8) %1566)
          to label %1568 unwind label %1583

1568:                                             ; preds = %1563
  br i1 %1567, label %1569, label %1657

1569:                                             ; preds = %1568
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #0
  %1570 = load ptr, ptr %87, align 8, !tbaa !5
  %1571 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1570, i32 0, i32 0
  %1572 = getelementptr inbounds %"class.HIR::Path", ptr %1571, i32 0, i32 0
  %1573 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %1572)
          to label %1574 unwind label %1587

1574:                                             ; preds = %1569
  %1575 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1573, i32 0, i32 1
  %1576 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1575, i32 0, i32 1
  %1577 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1576, i64 noundef 0)
          to label %1578 unwind label %1587

1578:                                             ; preds = %1574
  store ptr %1577, ptr %108, align 8, !tbaa !5
  %1579 = load ptr, ptr %7, align 8, !tbaa !5
  %1580 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1579, i32 0, i32 1
  %1581 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1580)
          to label %1582 unwind label %1587

1582:                                             ; preds = %1578
  switch i32 %1581, label %1629 [
    i32 0, label %1591
    i32 1, label %1592
    i32 2, label %1609
  ]

1583:                                             ; preds = %1563, %1558
  %1584 = landingpad { ptr, i32 }
          cleanup
  %1585 = extractvalue { ptr, i32 } %1584, 0
  store ptr %1585, ptr %9, align 8
  %1586 = extractvalue { ptr, i32 } %1584, 1
  store i32 %1586, ptr %10, align 4
  br label %2326

1587:                                             ; preds = %1639, %1578, %1574, %1569
  %1588 = landingpad { ptr, i32 }
          cleanup
  %1589 = extractvalue { ptr, i32 } %1588, 0
  store ptr %1589, ptr %9, align 8
  %1590 = extractvalue { ptr, i32 } %1588, 1
  store i32 %1590, ptr %10, align 4
  br label %1656

1591:                                             ; preds = %1582
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1560, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

1592:                                             ; preds = %1582
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #0
  %1593 = load ptr, ptr %7, align 8, !tbaa !5
  %1594 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1593, i32 0, i32 1
  %1595 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %1594)
          to label %1596 unwind label %1605

1596:                                             ; preds = %1592
  store ptr %1595, ptr %109, align 8, !tbaa !5
  %1597 = load ptr, ptr %109, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %1598, i8 noundef zeroext -1)
          to label %1599 unwind label %1605

1599:                                             ; preds = %1596
  %1600 = load ptr, ptr %6, align 8, !tbaa !5
  %1601 = load ptr, ptr %108, align 8, !tbaa !5
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %1600, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %1601)
          to label %1602 unwind label %1605

1602:                                             ; preds = %1599
  %1603 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %1603)
          to label %1604 unwind label %1605

1604:                                             ; preds = %1602
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #0
  br label %1655

1605:                                             ; preds = %1602, %1599, %1596, %1592
  %1606 = landingpad { ptr, i32 }
          cleanup
  %1607 = extractvalue { ptr, i32 } %1606, 0
  store ptr %1607, ptr %9, align 8
  %1608 = extractvalue { ptr, i32 } %1606, 1
  store i32 %1608, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #0
  br label %1656

1609:                                             ; preds = %1582
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #0
  %1610 = load ptr, ptr %7, align 8, !tbaa !5
  %1611 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1610, i32 0, i32 1
  %1612 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR7Pattern4Data6as_BoxEv(ptr noundef nonnull align 8 dereferenceable(184) %1611)
          to label %1613 unwind label %1625

1613:                                             ; preds = %1609
  store ptr %1612, ptr %110, align 8, !tbaa !5
  %1614 = load ptr, ptr %110, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %1615, i8 noundef zeroext -1)
          to label %1616 unwind label %1625

1616:                                             ; preds = %1613
  %1617 = load ptr, ptr %6, align 8, !tbaa !5
  %1618 = load ptr, ptr %110, align 8, !tbaa !5
  %1619 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Box", ptr %1618, i32 0, i32 0
  %1620 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNKSt10unique_ptrIN3HIR7PatternESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1619) #0
  %1621 = load ptr, ptr %108, align 8, !tbaa !5
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %1617, ptr noundef nonnull align 8 dereferenceable(212) %1620, ptr noundef nonnull align 8 dereferenceable(8) %1621)
          to label %1622 unwind label %1625

1622:                                             ; preds = %1616
  %1623 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %1623)
          to label %1624 unwind label %1625

1624:                                             ; preds = %1622
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #0
  br label %1655

1625:                                             ; preds = %1622, %1616, %1613, %1609
  %1626 = landingpad { ptr, i32 }
          cleanup
  %1627 = extractvalue { ptr, i32 } %1626, 0
  store ptr %1627, ptr %9, align 8
  %1628 = extractvalue { ptr, i32 } %1626, 1
  store i32 %1628, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #0
  br label %1656

1629:                                             ; preds = %1582
  br label %1630

1630:                                             ; preds = %1629
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #0
  %1631 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull align 8 dereferenceable(8) %1631)
          to label %1632 unwind label %1640

1632:                                             ; preds = %1630
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #0
  %1633 = getelementptr inbounds %class.anon.387, ptr %113, i32 0, i32 0
  %1634 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %1634, ptr %1633, align 8, !tbaa !5
  %1635 = getelementptr inbounds %class.anon.387, ptr %113, i32 0, i32 1
  %1636 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1636, ptr %1635, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull align 8 dereferenceable(16) %113) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef %112)
          to label %1637 unwind label %1644

1637:                                             ; preds = %1632
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #0
  %1638 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1638, ptr noundef @.str.10)
          to label %1639 unwind label %1649

1639:                                             ; preds = %1637
  invoke void @__cxa_throw(ptr %1638, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %1587

1640:                                             ; preds = %1630
  %1641 = landingpad { ptr, i32 }
          cleanup
  %1642 = extractvalue { ptr, i32 } %1641, 0
  store ptr %1642, ptr %9, align 8
  %1643 = extractvalue { ptr, i32 } %1641, 1
  store i32 %1643, ptr %10, align 4
  br label %1648

1644:                                             ; preds = %1632
  %1645 = landingpad { ptr, i32 }
          cleanup
  %1646 = extractvalue { ptr, i32 } %1645, 0
  store ptr %1646, ptr %9, align 8
  %1647 = extractvalue { ptr, i32 } %1645, 1
  store i32 %1647, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #0
  br label %1648

1648:                                             ; preds = %1644, %1640
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #0
  br label %1656

1649:                                             ; preds = %1637
  %1650 = landingpad { ptr, i32 }
          cleanup
  %1651 = extractvalue { ptr, i32 } %1650, 0
  store ptr %1651, ptr %9, align 8
  %1652 = extractvalue { ptr, i32 } %1650, 1
  store i32 %1652, ptr %10, align 4
  call void @__cxa_free_exception(ptr %1638) #0
  br label %1656

1653:                                             ; No predecessors!
  br label %1654

1654:                                             ; preds = %1653
  br label %1655

1655:                                             ; preds = %1654, %1624, %1604
  store i32 116, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #0
  br label %2322

1656:                                             ; preds = %1649, %1648, %1625, %1605, %1587
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #0
  br label %2326

1657:                                             ; preds = %1568, %1551
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #0
  store i8 1, ptr %114, align 1, !tbaa !39
  br label %1658

1658:                                             ; preds = %2320, %1657
  %1659 = load i8, ptr %114, align 1, !tbaa !39, !range !40, !noundef !41
  %1660 = trunc i8 %1659 to i1
  br i1 %1660, label %1662, label %1661

1661:                                             ; preds = %1658
  store i32 122, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #0
  br label %2321

1662:                                             ; preds = %1658
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #0
  %1663 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %1663, ptr %115, align 8, !tbaa !5
  br label %1664

1664:                                             ; preds = %2317, %1662
  %1665 = load i8, ptr %114, align 1, !tbaa !39, !range !40, !noundef !41
  %1666 = trunc i8 %1665 to i1
  br i1 %1666, label %1668, label %1667

1667:                                             ; preds = %1664
  store i32 125, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #0
  br label %2319

1668:                                             ; preds = %1664
  %1669 = load ptr, ptr %115, align 8, !tbaa !5
  %1670 = invoke noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %1669)
          to label %1671 unwind label %1672

1671:                                             ; preds = %1668
  switch i32 %1670, label %2316 [
    i32 0, label %1676
    i32 1, label %1677
    i32 2, label %1875
    i32 3, label %2137
  ]

1672:                                             ; preds = %1668
  %1673 = landingpad { ptr, i32 }
          cleanup
  %1674 = extractvalue { ptr, i32 } %1673, 0
  store ptr %1674, ptr %9, align 8
  %1675 = extractvalue { ptr, i32 } %1673, 1
  store i32 %1675, ptr %10, align 4
  br label %2318

1676:                                             ; preds = %1671
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1563, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

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

1678:                                             ; preds = %1873, %1677
  %1679 = load i8, ptr %116, align 1, !tbaa !39, !range !40, !noundef !41
  %1680 = trunc i8 %1679 to i1
  br i1 %1680, label %1682, label %1681

1681:                                             ; preds = %1678
  store i32 129, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #0
  br label %1874

1682:                                             ; preds = %1678
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #0
  %1683 = load ptr, ptr %115, align 8, !tbaa !5
  %1684 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %1683)
          to label %1685 unwind label %1691

1685:                                             ; preds = %1682
  store ptr %1684, ptr %117, align 8, !tbaa !5
  br label %1686

1686:                                             ; preds = %1870, %1685
  %1687 = load ptr, ptr %117, align 8, !tbaa !5
  %1688 = load i8, ptr %116, align 1, !tbaa !39, !range !40, !noundef !41
  %1689 = trunc i8 %1688 to i1
  br i1 %1689, label %1695, label %1690

1690:                                             ; preds = %1686
  store i32 132, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  br label %1872

1691:                                             ; preds = %1682
  %1692 = landingpad { ptr, i32 }
          cleanup
  %1693 = extractvalue { ptr, i32 } %1692, 0
  store ptr %1693, ptr %9, align 8
  %1694 = extractvalue { ptr, i32 } %1692, 1
  store i32 %1694, ptr %10, align 4
  br label %1871

1695:                                             ; preds = %1686
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #0
  store i8 1, ptr %118, align 1, !tbaa !39
  br label %1696

1696:                                             ; preds = %1868, %1695
  %1697 = load i8, ptr %118, align 1, !tbaa !39, !range !40, !noundef !41
  %1698 = trunc i8 %1697 to i1
  br i1 %1698, label %1700, label %1699

1699:                                             ; preds = %1696
  store i32 135, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #0
  br label %1869

1700:                                             ; preds = %1696
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #0
  %1701 = load ptr, ptr %7, align 8, !tbaa !5
  %1702 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1701, i32 0, i32 1
  store ptr %1702, ptr %119, align 8, !tbaa !5
  br label %1703

1703:                                             ; preds = %1865, %1700
  %1704 = load i8, ptr %118, align 1, !tbaa !39, !range !40, !noundef !41
  %1705 = trunc i8 %1704 to i1
  br i1 %1705, label %1707, label %1706

1706:                                             ; preds = %1703
  store i32 138, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #0
  br label %1867

1707:                                             ; preds = %1703
  %1708 = load ptr, ptr %119, align 8, !tbaa !5
  %1709 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1708)
          to label %1710 unwind label %1711

1710:                                             ; preds = %1707
  switch i32 %1709, label %1716 [
    i32 0, label %1715
    i32 1, label %1742
    i32 6, label %1765
    i32 10, label %1788
    i32 8, label %1811
  ]

1711:                                             ; preds = %1726, %1707
  %1712 = landingpad { ptr, i32 }
          cleanup
  %1713 = extractvalue { ptr, i32 } %1712, 0
  store ptr %1713, ptr %9, align 8
  %1714 = extractvalue { ptr, i32 } %1712, 1
  store i32 %1714, ptr %10, align 4
  br label %1866

1715:                                             ; preds = %1710
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1565, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

1716:                                             ; preds = %1710
  br label %1717

1717:                                             ; preds = %1716
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #0
  %1718 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull align 8 dereferenceable(8) %1718)
          to label %1719 unwind label %1727

1719:                                             ; preds = %1717
  call void @llvm.lifetime.start.p0(i64 16, ptr %122) #0
  %1720 = getelementptr inbounds %class.anon.388, ptr %122, i32 0, i32 0
  %1721 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %1721, ptr %1720, align 8, !tbaa !5
  %1722 = getelementptr inbounds %class.anon.388, ptr %122, i32 0, i32 1
  %1723 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1723, ptr %1722, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull align 8 dereferenceable(16) %122) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef %121)
          to label %1724 unwind label %1731

1724:                                             ; preds = %1719
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %122) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #0
  %1725 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1725, ptr noundef @.str.10)
          to label %1726 unwind label %1736

1726:                                             ; preds = %1724
  invoke void @__cxa_throw(ptr %1725, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %1711

1727:                                             ; preds = %1717
  %1728 = landingpad { ptr, i32 }
          cleanup
  %1729 = extractvalue { ptr, i32 } %1728, 0
  store ptr %1729, ptr %9, align 8
  %1730 = extractvalue { ptr, i32 } %1728, 1
  store i32 %1730, ptr %10, align 4
  br label %1735

1731:                                             ; preds = %1719
  %1732 = landingpad { ptr, i32 }
          cleanup
  %1733 = extractvalue { ptr, i32 } %1732, 0
  store ptr %1733, ptr %9, align 8
  %1734 = extractvalue { ptr, i32 } %1732, 1
  store i32 %1734, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %122) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #0
  br label %1735

1735:                                             ; preds = %1731, %1727
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #0
  br label %1866

1736:                                             ; preds = %1724
  %1737 = landingpad { ptr, i32 }
          cleanup
  %1738 = extractvalue { ptr, i32 } %1737, 0
  store ptr %1738, ptr %9, align 8
  %1739 = extractvalue { ptr, i32 } %1737, 1
  store i32 %1739, ptr %10, align 4
  call void @__cxa_free_exception(ptr %1725) #0
  br label %1866

1740:                                             ; No predecessors!
  br label %1741

1741:                                             ; preds = %1740
  br label %1864

1742:                                             ; preds = %1710
  call void @llvm.lifetime.start.p0(i64 1, ptr %123) #0
  store i8 1, ptr %123, align 1, !tbaa !39
  br label %1743

1743:                                             ; preds = %1763, %1742
  %1744 = load i8, ptr %123, align 1, !tbaa !39, !range !40, !noundef !41
  %1745 = trunc i8 %1744 to i1
  br i1 %1745, label %1747, label %1746

1746:                                             ; preds = %1743
  store i32 144, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #0
  br label %1764

1747:                                             ; preds = %1743
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #0
  %1748 = load ptr, ptr %119, align 8, !tbaa !5
  %1749 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %1748)
          to label %1750 unwind label %1756

1750:                                             ; preds = %1747
  store ptr %1749, ptr %124, align 8, !tbaa !5
  br label %1751

1751:                                             ; preds = %1761, %1750
  %1752 = load ptr, ptr %124, align 8, !tbaa !5
  %1753 = load i8, ptr %123, align 1, !tbaa !39, !range !40, !noundef !41
  %1754 = trunc i8 %1753 to i1
  br i1 %1754, label %1760, label %1755

1755:                                             ; preds = %1751
  store i32 147, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #0
  br label %1762

1756:                                             ; preds = %1747
  %1757 = landingpad { ptr, i32 }
          cleanup
  %1758 = extractvalue { ptr, i32 } %1757, 0
  store ptr %1758, ptr %9, align 8
  %1759 = extractvalue { ptr, i32 } %1757, 1
  store i32 %1759, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %123) #0
  br label %1866

1760:                                             ; preds = %1751
  br label %1761

1761:                                             ; preds = %1760
  store i8 0, ptr %123, align 1, !tbaa !39
  br label %1751, !llvm.loop !91

1762:                                             ; preds = %1755
  br label %1763

1763:                                             ; preds = %1762
  store i8 0, ptr %123, align 1, !tbaa !39
  br label %1743, !llvm.loop !92

1764:                                             ; preds = %1746
  br label %1864

1765:                                             ; preds = %1710
  call void @llvm.lifetime.start.p0(i64 1, ptr %125) #0
  store i8 1, ptr %125, align 1, !tbaa !39
  br label %1766

1766:                                             ; preds = %1786, %1765
  %1767 = load i8, ptr %125, align 1, !tbaa !39, !range !40, !noundef !41
  %1768 = trunc i8 %1767 to i1
  br i1 %1768, label %1770, label %1769

1769:                                             ; preds = %1766
  store i32 150, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #0
  br label %1787

1770:                                             ; preds = %1766
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #0
  %1771 = load ptr, ptr %119, align 8, !tbaa !5
  %1772 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR7Pattern4Data12as_PathValueEv(ptr noundef nonnull align 8 dereferenceable(184) %1771)
          to label %1773 unwind label %1779

1773:                                             ; preds = %1770
  store ptr %1772, ptr %126, align 8, !tbaa !5
  br label %1774

1774:                                             ; preds = %1784, %1773
  %1775 = load ptr, ptr %126, align 8, !tbaa !5
  %1776 = load i8, ptr %125, align 1, !tbaa !39, !range !40, !noundef !41
  %1777 = trunc i8 %1776 to i1
  br i1 %1777, label %1783, label %1778

1778:                                             ; preds = %1774
  store i32 153, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #0
  br label %1785

1779:                                             ; preds = %1770
  %1780 = landingpad { ptr, i32 }
          cleanup
  %1781 = extractvalue { ptr, i32 } %1780, 0
  store ptr %1781, ptr %9, align 8
  %1782 = extractvalue { ptr, i32 } %1780, 1
  store i32 %1782, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %125) #0
  br label %1866

1783:                                             ; preds = %1774
  br label %1784

1784:                                             ; preds = %1783
  store i8 0, ptr %125, align 1, !tbaa !39
  br label %1774, !llvm.loop !93

1785:                                             ; preds = %1778
  br label %1786

1786:                                             ; preds = %1785
  store i8 0, ptr %125, align 1, !tbaa !39
  br label %1766, !llvm.loop !94

1787:                                             ; preds = %1769
  br label %1864

1788:                                             ; preds = %1710
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #0
  store i8 1, ptr %127, align 1, !tbaa !39
  br label %1789

1789:                                             ; preds = %1809, %1788
  %1790 = load i8, ptr %127, align 1, !tbaa !39, !range !40, !noundef !41
  %1791 = trunc i8 %1790 to i1
  br i1 %1791, label %1793, label %1792

1792:                                             ; preds = %1789
  store i32 156, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #0
  br label %1810

1793:                                             ; preds = %1789
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #0
  %1794 = load ptr, ptr %119, align 8, !tbaa !5
  %1795 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3HIR7Pattern4Data8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(184) %1794)
          to label %1796 unwind label %1802

1796:                                             ; preds = %1793
  store ptr %1795, ptr %128, align 8, !tbaa !5
  br label %1797

1797:                                             ; preds = %1807, %1796
  %1798 = load ptr, ptr %128, align 8, !tbaa !5
  %1799 = load i8, ptr %127, align 1, !tbaa !39, !range !40, !noundef !41
  %1800 = trunc i8 %1799 to i1
  br i1 %1800, label %1806, label %1801

1801:                                             ; preds = %1797
  store i32 159, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #0
  br label %1808

1802:                                             ; preds = %1793
  %1803 = landingpad { ptr, i32 }
          cleanup
  %1804 = extractvalue { ptr, i32 } %1803, 0
  store ptr %1804, ptr %9, align 8
  %1805 = extractvalue { ptr, i32 } %1803, 1
  store i32 %1805, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #0
  br label %1866

1806:                                             ; preds = %1797
  br label %1807

1807:                                             ; preds = %1806
  store i8 0, ptr %127, align 1, !tbaa !39
  br label %1797, !llvm.loop !95

1808:                                             ; preds = %1801
  br label %1809

1809:                                             ; preds = %1808
  store i8 0, ptr %127, align 1, !tbaa !39
  br label %1789, !llvm.loop !96

1810:                                             ; preds = %1792
  br label %1864

1811:                                             ; preds = %1710
  call void @llvm.lifetime.start.p0(i64 1, ptr %129) #0
  store i8 1, ptr %129, align 1, !tbaa !39
  br label %1812

1812:                                             ; preds = %1862, %1811
  %1813 = load i8, ptr %129, align 1, !tbaa !39, !range !40, !noundef !41
  %1814 = trunc i8 %1813 to i1
  br i1 %1814, label %1816, label %1815

1815:                                             ; preds = %1812
  store i32 162, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #0
  br label %1863

1816:                                             ; preds = %1812
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #0
  %1817 = load ptr, ptr %119, align 8, !tbaa !5
  %1818 = invoke noundef nonnull align 8 dereferenceable(137) ptr @_ZNK3HIR7Pattern4Data12as_PathNamedEv(ptr noundef nonnull align 8 dereferenceable(184) %1817)
          to label %1819 unwind label %1825

1819:                                             ; preds = %1816
  store ptr %1818, ptr %130, align 8, !tbaa !5
  br label %1820

1820:                                             ; preds = %1859, %1819
  %1821 = load ptr, ptr %130, align 8, !tbaa !5
  %1822 = load i8, ptr %129, align 1, !tbaa !39, !range !40, !noundef !41
  %1823 = trunc i8 %1822 to i1
  br i1 %1823, label %1829, label %1824

1824:                                             ; preds = %1820
  store i32 165, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #0
  br label %1861

1825:                                             ; preds = %1842, %1816
  %1826 = landingpad { ptr, i32 }
          cleanup
  %1827 = extractvalue { ptr, i32 } %1826, 0
  store ptr %1827, ptr %9, align 8
  %1828 = extractvalue { ptr, i32 } %1826, 1
  store i32 %1828, ptr %10, align 4
  br label %1860

1829:                                             ; preds = %1820
  br label %1830

1830:                                             ; preds = %1829
  %1831 = load ptr, ptr %130, align 8, !tbaa !5
  %1832 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathNamed", ptr %1831, i32 0, i32 2
  %1833 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR7PatternEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1832) #0
  %1834 = icmp eq i64 %1833, 0
  br i1 %1834, label %1856, label %1835

1835:                                             ; preds = %1830
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #0
  %1836 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull align 8 dereferenceable(8) %1836)
          to label %1837 unwind label %1843

1837:                                             ; preds = %1835
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #0
  %1838 = getelementptr inbounds %class.anon.389, ptr %133, i32 0, i32 0
  %1839 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1839, ptr %1838, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %132, ptr noundef nonnull align 8 dereferenceable(8) %133) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef %132)
          to label %1840 unwind label %1847

1840:                                             ; preds = %1837
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %131) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #0
  %1841 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1841, ptr noundef @.str.10)
          to label %1842 unwind label %1852

1842:                                             ; preds = %1840
  invoke void @__cxa_throw(ptr %1841, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %1825

1843:                                             ; preds = %1835
  %1844 = landingpad { ptr, i32 }
          cleanup
  %1845 = extractvalue { ptr, i32 } %1844, 0
  store ptr %1845, ptr %9, align 8
  %1846 = extractvalue { ptr, i32 } %1844, 1
  store i32 %1846, ptr %10, align 4
  br label %1851

1847:                                             ; preds = %1837
  %1848 = landingpad { ptr, i32 }
          cleanup
  %1849 = extractvalue { ptr, i32 } %1848, 0
  store ptr %1849, ptr %9, align 8
  %1850 = extractvalue { ptr, i32 } %1848, 1
  store i32 %1850, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %131) #0
  br label %1851

1851:                                             ; preds = %1847, %1843
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #0
  br label %1860

1852:                                             ; preds = %1840
  %1853 = landingpad { ptr, i32 }
          cleanup
  %1854 = extractvalue { ptr, i32 } %1853, 0
  store ptr %1854, ptr %9, align 8
  %1855 = extractvalue { ptr, i32 } %1853, 1
  store i32 %1855, ptr %10, align 4
  call void @__cxa_free_exception(ptr %1841) #0
  br label %1860

1856:                                             ; preds = %1830
  br label %1857

1857:                                             ; preds = %1856
  br label %1858

1858:                                             ; preds = %1857
  br label %1859

1859:                                             ; preds = %1858
  store i8 0, ptr %129, align 1, !tbaa !39
  br label %1820, !llvm.loop !97

1860:                                             ; preds = %1852, %1851, %1825
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #0
  br label %1866

1861:                                             ; preds = %1824
  br label %1862

1862:                                             ; preds = %1861
  store i8 0, ptr %129, align 1, !tbaa !39
  br label %1812, !llvm.loop !98

1863:                                             ; preds = %1815
  br label %1864

1864:                                             ; preds = %1863, %1810, %1787, %1764, %1741
  br label %1865

1865:                                             ; preds = %1864
  store i8 0, ptr %118, align 1, !tbaa !39
  br label %1703, !llvm.loop !99

1866:                                             ; preds = %1860, %1802, %1779, %1756, %1736, %1735, %1711
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #0
  br label %1871

1867:                                             ; preds = %1706
  br label %1868

1868:                                             ; preds = %1867
  store i8 0, ptr %118, align 1, !tbaa !39
  br label %1696, !llvm.loop !100

1869:                                             ; preds = %1699
  br label %1870

1870:                                             ; preds = %1869
  store i8 0, ptr %116, align 1, !tbaa !39
  br label %1686, !llvm.loop !101

1871:                                             ; preds = %1866, %1691
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #0
  br label %2318

1872:                                             ; preds = %1690
  br label %1873

1873:                                             ; preds = %1872
  store i8 0, ptr %116, align 1, !tbaa !39
  br label %1678, !llvm.loop !102

1874:                                             ; preds = %1681
  br label %2316

1875:                                             ; preds = %1671
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #0
  store i8 1, ptr %134, align 1, !tbaa !39
  br label %1876

1876:                                             ; preds = %2135, %1875
  %1877 = load i8, ptr %134, align 1, !tbaa !39, !range !40, !noundef !41
  %1878 = trunc i8 %1877 to i1
  br i1 %1878, label %1880, label %1879

1879:                                             ; preds = %1876
  store i32 170, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #0
  br label %2136

1880:                                             ; preds = %1876
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #0
  %1881 = load ptr, ptr %115, align 8, !tbaa !5
  %1882 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %1881)
          to label %1883 unwind label %1889

1883:                                             ; preds = %1880
  store ptr %1882, ptr %135, align 8, !tbaa !5
  br label %1884

1884:                                             ; preds = %2132, %1883
  %1885 = load ptr, ptr %135, align 8, !tbaa !5
  %1886 = load i8, ptr %134, align 1, !tbaa !39, !range !40, !noundef !41
  %1887 = trunc i8 %1886 to i1
  br i1 %1887, label %1893, label %1888

1888:                                             ; preds = %1884
  store i32 173, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #0
  br label %2134

1889:                                             ; preds = %2129, %1893, %1880
  %1890 = landingpad { ptr, i32 }
          cleanup
  %1891 = extractvalue { ptr, i32 } %1890, 0
  store ptr %1891, ptr %9, align 8
  %1892 = extractvalue { ptr, i32 } %1890, 1
  store i32 %1892, ptr %10, align 4
  br label %2133

1893:                                             ; preds = %1884
  %1894 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %1894, i8 noundef zeroext 0)
          to label %1895 unwind label %1889

1895:                                             ; preds = %1893
  call void @llvm.lifetime.start.p0(i64 1, ptr %136) #0
  store i8 1, ptr %136, align 1, !tbaa !39
  br label %1896

1896:                                             ; preds = %2128, %1895
  %1897 = load i8, ptr %136, align 1, !tbaa !39, !range !40, !noundef !41
  %1898 = trunc i8 %1897 to i1
  br i1 %1898, label %1900, label %1899

1899:                                             ; preds = %1896
  store i32 176, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %136) #0
  br label %2129

1900:                                             ; preds = %1896
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #0
  %1901 = load ptr, ptr %7, align 8, !tbaa !5
  %1902 = getelementptr inbounds %"struct.HIR::Pattern", ptr %1901, i32 0, i32 1
  store ptr %1902, ptr %137, align 8, !tbaa !5
  br label %1903

1903:                                             ; preds = %2125, %1900
  %1904 = load i8, ptr %136, align 1, !tbaa !39, !range !40, !noundef !41
  %1905 = trunc i8 %1904 to i1
  br i1 %1905, label %1907, label %1906

1906:                                             ; preds = %1903
  store i32 179, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #0
  br label %2127

1907:                                             ; preds = %1903
  %1908 = load ptr, ptr %137, align 8, !tbaa !5
  %1909 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1908)
          to label %1910 unwind label %1911

1910:                                             ; preds = %1907
  switch i32 %1909, label %1916 [
    i32 0, label %1915
    i32 1, label %1942
    i32 8, label %1996
    i32 7, label %2084
  ]

1911:                                             ; preds = %1926, %1907
  %1912 = landingpad { ptr, i32 }
          cleanup
  %1913 = extractvalue { ptr, i32 } %1912, 0
  store ptr %1913, ptr %9, align 8
  %1914 = extractvalue { ptr, i32 } %1912, 1
  store i32 %1914, ptr %10, align 4
  br label %2126

1915:                                             ; preds = %1910
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1584, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

1916:                                             ; preds = %1910
  br label %1917

1917:                                             ; preds = %1916
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #0
  %1918 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef nonnull align 8 dereferenceable(8) %1918)
          to label %1919 unwind label %1927

1919:                                             ; preds = %1917
  call void @llvm.lifetime.start.p0(i64 16, ptr %140) #0
  %1920 = getelementptr inbounds %class.anon.390, ptr %140, i32 0, i32 0
  %1921 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %1921, ptr %1920, align 8, !tbaa !5
  %1922 = getelementptr inbounds %class.anon.390, ptr %140, i32 0, i32 1
  %1923 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1923, ptr %1922, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %139, ptr noundef nonnull align 8 dereferenceable(16) %140) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef %139)
          to label %1924 unwind label %1931

1924:                                             ; preds = %1919
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #0
  %1925 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1925, ptr noundef @.str.10)
          to label %1926 unwind label %1936

1926:                                             ; preds = %1924
  invoke void @__cxa_throw(ptr %1925, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %1911

1927:                                             ; preds = %1917
  %1928 = landingpad { ptr, i32 }
          cleanup
  %1929 = extractvalue { ptr, i32 } %1928, 0
  store ptr %1929, ptr %9, align 8
  %1930 = extractvalue { ptr, i32 } %1928, 1
  store i32 %1930, ptr %10, align 4
  br label %1935

1931:                                             ; preds = %1919
  %1932 = landingpad { ptr, i32 }
          cleanup
  %1933 = extractvalue { ptr, i32 } %1932, 0
  store ptr %1933, ptr %9, align 8
  %1934 = extractvalue { ptr, i32 } %1932, 1
  store i32 %1934, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %139) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %140) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #0
  br label %1935

1935:                                             ; preds = %1931, %1927
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #0
  br label %2126

1936:                                             ; preds = %1924
  %1937 = landingpad { ptr, i32 }
          cleanup
  %1938 = extractvalue { ptr, i32 } %1937, 0
  store ptr %1938, ptr %9, align 8
  %1939 = extractvalue { ptr, i32 } %1937, 1
  store i32 %1939, ptr %10, align 4
  call void @__cxa_free_exception(ptr %1925) #0
  br label %2126

1940:                                             ; No predecessors!
  br label %1941

1941:                                             ; preds = %1940
  br label %2124

1942:                                             ; preds = %1910
  call void @llvm.lifetime.start.p0(i64 1, ptr %141) #0
  store i8 1, ptr %141, align 1, !tbaa !39
  br label %1943

1943:                                             ; preds = %1994, %1942
  %1944 = load i8, ptr %141, align 1, !tbaa !39, !range !40, !noundef !41
  %1945 = trunc i8 %1944 to i1
  br i1 %1945, label %1947, label %1946

1946:                                             ; preds = %1943
  store i32 185, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #0
  br label %1995

1947:                                             ; preds = %1943
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #0
  %1948 = load ptr, ptr %137, align 8, !tbaa !5
  %1949 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %1948)
          to label %1950 unwind label %1956

1950:                                             ; preds = %1947
  store ptr %1949, ptr %142, align 8, !tbaa !5
  br label %1951

1951:                                             ; preds = %1991, %1950
  %1952 = load ptr, ptr %142, align 8, !tbaa !5
  %1953 = load i8, ptr %141, align 1, !tbaa !39, !range !40, !noundef !41
  %1954 = trunc i8 %1953 to i1
  br i1 %1954, label %1960, label %1955

1955:                                             ; preds = %1951
  store i32 188, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #0
  br label %1993

1956:                                             ; preds = %1947
  %1957 = landingpad { ptr, i32 }
          cleanup
  %1958 = extractvalue { ptr, i32 } %1957, 0
  store ptr %1958, ptr %9, align 8
  %1959 = extractvalue { ptr, i32 } %1957, 1
  store i32 %1959, ptr %10, align 4
  br label %1992

1960:                                             ; preds = %1951
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #0
  %1961 = load ptr, ptr %135, align 8, !tbaa !5
  store ptr %1961, ptr %143, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #0
  %1962 = load ptr, ptr %143, align 8, !tbaa !5
  %1963 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1962) #0
  %1964 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.391", ptr %144, i32 0, i32 0
  store ptr %1963, ptr %1964, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #0
  %1965 = load ptr, ptr %143, align 8, !tbaa !5
  %1966 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1965) #0
  %1967 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.391", ptr %145, i32 0, i32 0
  store ptr %1966, ptr %1967, align 8
  br label %1968

1968:                                             ; preds = %1984, %1960
  %1969 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull align 8 dereferenceable(8) %145) #0
  br i1 %1969, label %1971, label %1970

1970:                                             ; preds = %1968
  store i32 191, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #0
  br label %1990

1971:                                             ; preds = %1968
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #0
  %1972 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %144) #0
  store ptr %1972, ptr %146, align 8, !tbaa !5
  %1973 = load ptr, ptr %6, align 8, !tbaa !5
  %1974 = load ptr, ptr %146, align 8, !tbaa !5
  %1975 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %1974, i32 0, i32 1
  %1976 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEENK4$_13clIS7_EES9_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(8) %1975)
          to label %1977 unwind label %1986

1977:                                             ; preds = %1971
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %1973, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %1976)
          to label %1978 unwind label %1986

1978:                                             ; preds = %1977
  %1979 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %1980 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1979)
          to label %1981 unwind label %1986

1981:                                             ; preds = %1978
  %1982 = load i8, ptr %1980, align 1, !tbaa !68
  %1983 = add i8 %1982, 1
  store i8 %1983, ptr %1980, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  br label %1984

1984:                                             ; preds = %1981
  %1985 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %144) #0
  br label %1968

1986:                                             ; preds = %1978, %1977, %1971
  %1987 = landingpad { ptr, i32 }
          cleanup
  %1988 = extractvalue { ptr, i32 } %1987, 0
  store ptr %1988, ptr %9, align 8
  %1989 = extractvalue { ptr, i32 } %1987, 1
  store i32 %1989, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #0
  br label %1992

1990:                                             ; preds = %1970
  br label %1991

1991:                                             ; preds = %1990
  store i8 0, ptr %141, align 1, !tbaa !39
  br label %1951, !llvm.loop !103

1992:                                             ; preds = %1986, %1956
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #0
  br label %2126

1993:                                             ; preds = %1955
  br label %1994

1994:                                             ; preds = %1993
  store i8 0, ptr %141, align 1, !tbaa !39
  br label %1943, !llvm.loop !104

1995:                                             ; preds = %1946
  br label %2124

1996:                                             ; preds = %1910
  call void @llvm.lifetime.start.p0(i64 1, ptr %147) #0
  store i8 1, ptr %147, align 1, !tbaa !39
  br label %1997

1997:                                             ; preds = %2082, %1996
  %1998 = load i8, ptr %147, align 1, !tbaa !39, !range !40, !noundef !41
  %1999 = trunc i8 %1998 to i1
  br i1 %1999, label %2001, label %2000

2000:                                             ; preds = %1997
  store i32 193, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #0
  br label %2083

2001:                                             ; preds = %1997
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #0
  %2002 = load ptr, ptr %137, align 8, !tbaa !5
  %2003 = invoke noundef nonnull align 8 dereferenceable(137) ptr @_ZNK3HIR7Pattern4Data12as_PathNamedEv(ptr noundef nonnull align 8 dereferenceable(184) %2002)
          to label %2004 unwind label %2010

2004:                                             ; preds = %2001
  store ptr %2003, ptr %148, align 8, !tbaa !5
  br label %2005

2005:                                             ; preds = %2079, %2004
  %2006 = load ptr, ptr %148, align 8, !tbaa !5
  %2007 = load i8, ptr %147, align 1, !tbaa !39, !range !40, !noundef !41
  %2008 = trunc i8 %2007 to i1
  br i1 %2008, label %2014, label %2009

2009:                                             ; preds = %2005
  store i32 196, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #0
  br label %2081

2010:                                             ; preds = %2032, %2018, %2001
  %2011 = landingpad { ptr, i32 }
          cleanup
  %2012 = extractvalue { ptr, i32 } %2011, 0
  store ptr %2012, ptr %9, align 8
  %2013 = extractvalue { ptr, i32 } %2011, 1
  store i32 %2013, ptr %10, align 4
  br label %2080

2014:                                             ; preds = %2005
  %2015 = load ptr, ptr %135, align 8, !tbaa !5
  %2016 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2015) #0
  %2017 = icmp ne i64 %2016, 0
  br i1 %2017, label %2018, label %2048

2018:                                             ; preds = %2014
  %2019 = load ptr, ptr %148, align 8, !tbaa !5
  %2020 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern4Data14Data_PathNamed11is_wildcardEv(ptr noundef nonnull align 8 dereferenceable(137) %2019)
          to label %2021 unwind label %2010

2021:                                             ; preds = %2018
  br i1 %2020, label %2048, label %2022

2022:                                             ; preds = %2021
  br label %2023

2023:                                             ; preds = %2022
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #0
  %2024 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull align 8 dereferenceable(8) %2024)
          to label %2025 unwind label %2033

2025:                                             ; preds = %2023
  call void @llvm.lifetime.start.p0(i64 16, ptr %151) #0
  %2026 = getelementptr inbounds %class.anon.395, ptr %151, i32 0, i32 0
  %2027 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %2027, ptr %2026, align 8, !tbaa !5
  %2028 = getelementptr inbounds %class.anon.395, ptr %151, i32 0, i32 1
  %2029 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2029, ptr %2028, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %150, ptr noundef nonnull align 8 dereferenceable(16) %151) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef %150)
          to label %2030 unwind label %2037

2030:                                             ; preds = %2025
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %151) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #0
  %2031 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2031, ptr noundef @.str.10)
          to label %2032 unwind label %2042

2032:                                             ; preds = %2030
  invoke void @__cxa_throw(ptr %2031, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %2010

2033:                                             ; preds = %2023
  %2034 = landingpad { ptr, i32 }
          cleanup
  %2035 = extractvalue { ptr, i32 } %2034, 0
  store ptr %2035, ptr %9, align 8
  %2036 = extractvalue { ptr, i32 } %2034, 1
  store i32 %2036, ptr %10, align 4
  br label %2041

2037:                                             ; preds = %2025
  %2038 = landingpad { ptr, i32 }
          cleanup
  %2039 = extractvalue { ptr, i32 } %2038, 0
  store ptr %2039, ptr %9, align 8
  %2040 = extractvalue { ptr, i32 } %2038, 1
  store i32 %2040, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %151) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #0
  br label %2041

2041:                                             ; preds = %2037, %2033
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #0
  br label %2080

2042:                                             ; preds = %2030
  %2043 = landingpad { ptr, i32 }
          cleanup
  %2044 = extractvalue { ptr, i32 } %2043, 0
  store ptr %2044, ptr %9, align 8
  %2045 = extractvalue { ptr, i32 } %2043, 1
  store i32 %2045, ptr %10, align 4
  call void @__cxa_free_exception(ptr %2031) #0
  br label %2080

2046:                                             ; No predecessors!
  br label %2047

2047:                                             ; preds = %2046
  br label %2048

2048:                                             ; preds = %2047, %2021, %2014
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #0
  %2049 = load ptr, ptr %135, align 8, !tbaa !5
  store ptr %2049, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #0
  %2050 = load ptr, ptr %152, align 8, !tbaa !5
  %2051 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2050) #0
  %2052 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.391", ptr %153, i32 0, i32 0
  store ptr %2051, ptr %2052, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #0
  %2053 = load ptr, ptr %152, align 8, !tbaa !5
  %2054 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2053) #0
  %2055 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.391", ptr %154, i32 0, i32 0
  store ptr %2054, ptr %2055, align 8
  br label %2056

2056:                                             ; preds = %2072, %2048
  %2057 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(8) %154) #0
  br i1 %2057, label %2059, label %2058

2058:                                             ; preds = %2056
  store i32 201, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #0
  br label %2078

2059:                                             ; preds = %2056
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #0
  %2060 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %153) #0
  store ptr %2060, ptr %155, align 8, !tbaa !5
  %2061 = load ptr, ptr %6, align 8, !tbaa !5
  %2062 = load ptr, ptr %155, align 8, !tbaa !5
  %2063 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %2062, i32 0, i32 1
  %2064 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEENK4$_13clIS7_EES9_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(8) %2063)
          to label %2065 unwind label %2074

2065:                                             ; preds = %2059
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %2061, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %2064)
          to label %2066 unwind label %2074

2066:                                             ; preds = %2065
  %2067 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %2068 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %2067)
          to label %2069 unwind label %2074

2069:                                             ; preds = %2066
  %2070 = load i8, ptr %2068, align 1, !tbaa !68
  %2071 = add i8 %2070, 1
  store i8 %2071, ptr %2068, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #0
  br label %2072

2072:                                             ; preds = %2069
  %2073 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %153) #0
  br label %2056

2074:                                             ; preds = %2066, %2065, %2059
  %2075 = landingpad { ptr, i32 }
          cleanup
  %2076 = extractvalue { ptr, i32 } %2075, 0
  store ptr %2076, ptr %9, align 8
  %2077 = extractvalue { ptr, i32 } %2075, 1
  store i32 %2077, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #0
  br label %2080

2078:                                             ; preds = %2058
  br label %2079

2079:                                             ; preds = %2078
  store i8 0, ptr %147, align 1, !tbaa !39
  br label %2005, !llvm.loop !105

2080:                                             ; preds = %2074, %2042, %2041, %2010
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #0
  br label %2126

2081:                                             ; preds = %2009
  br label %2082

2082:                                             ; preds = %2081
  store i8 0, ptr %147, align 1, !tbaa !39
  br label %1997, !llvm.loop !106

2083:                                             ; preds = %2000
  br label %2124

2084:                                             ; preds = %1910
  call void @llvm.lifetime.start.p0(i64 1, ptr %156) #0
  store i8 1, ptr %156, align 1, !tbaa !39
  br label %2085

2085:                                             ; preds = %2122, %2084
  %2086 = load i8, ptr %156, align 1, !tbaa !39, !range !40, !noundef !41
  %2087 = trunc i8 %2086 to i1
  br i1 %2087, label %2089, label %2088

2088:                                             ; preds = %2085
  store i32 203, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %156) #0
  br label %2123

2089:                                             ; preds = %2085
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #0
  %2090 = load ptr, ptr %137, align 8, !tbaa !5
  %2091 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR7Pattern4Data12as_PathTupleEv(ptr noundef nonnull align 8 dereferenceable(184) %2090)
          to label %2092 unwind label %2098

2092:                                             ; preds = %2089
  store ptr %2091, ptr %157, align 8, !tbaa !5
  br label %2093

2093:                                             ; preds = %2115, %2092
  %2094 = load ptr, ptr %157, align 8, !tbaa !5
  %2095 = load i8, ptr %156, align 1, !tbaa !39, !range !40, !noundef !41
  %2096 = trunc i8 %2095 to i1
  br i1 %2096, label %2102, label %2097

2097:                                             ; preds = %2093
  store i32 206, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #0
  br label %2121

2098:                                             ; preds = %2110, %2102, %2089
  %2099 = landingpad { ptr, i32 }
          cleanup
  %2100 = extractvalue { ptr, i32 } %2099, 0
  store ptr %2100, ptr %9, align 8
  %2101 = extractvalue { ptr, i32 } %2099, 1
  store i32 %2101, ptr %10, align 4
  br label %2120

2102:                                             ; preds = %2093
  %2103 = load ptr, ptr %157, align 8, !tbaa !5
  %2104 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathTuple", ptr %2103, i32 0, i32 1
  %2105 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern11PathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(24) %2104)
          to label %2106 unwind label %2098

2106:                                             ; preds = %2102
  br i1 %2105, label %2107, label %2108

2107:                                             ; preds = %2106
  br label %2110

2108:                                             ; preds = %2106
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.17, i32 noundef 1607, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2109:                                             ; No predecessors!
  br label %2110

2110:                                             ; preds = %2109, %2107
  %2111 = load ptr, ptr %6, align 8, !tbaa !5
  %2112 = load ptr, ptr %157, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFRKN3HIR7TypeRefES3_EEC2IRZN21PatternRulesetBuilder11append_fromERK4SpanRKNS0_7PatternES3_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %158, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %2113 unwind label %2098

2113:                                             ; preds = %2110
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH18push_pattern_tupleERS_S2_RKNS4_4Data14Data_PathTupleESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %2111, ptr noundef nonnull align 8 dereferenceable(172) %2112, ptr noundef %158)
          to label %2114 unwind label %2116

2114:                                             ; preds = %2113
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #0
  br label %2115

2115:                                             ; preds = %2114
  store i8 0, ptr %156, align 1, !tbaa !39
  br label %2093, !llvm.loop !107

2116:                                             ; preds = %2113
  %2117 = landingpad { ptr, i32 }
          cleanup
  %2118 = extractvalue { ptr, i32 } %2117, 0
  store ptr %2118, ptr %9, align 8
  %2119 = extractvalue { ptr, i32 } %2117, 1
  store i32 %2119, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #0
  br label %2120

2120:                                             ; preds = %2116, %2098
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %156) #0
  br label %2126

2121:                                             ; preds = %2097
  br label %2122

2122:                                             ; preds = %2121
  store i8 0, ptr %156, align 1, !tbaa !39
  br label %2085, !llvm.loop !108

2123:                                             ; preds = %2088
  br label %2124

2124:                                             ; preds = %2123, %2083, %1995, %1941
  br label %2125

2125:                                             ; preds = %2124
  store i8 0, ptr %136, align 1, !tbaa !39
  br label %1903, !llvm.loop !109

2126:                                             ; preds = %2120, %2080, %1992, %1936, %1935, %1911
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %136) #0
  br label %2133

2127:                                             ; preds = %1906
  br label %2128

2128:                                             ; preds = %2127
  store i8 0, ptr %136, align 1, !tbaa !39
  br label %1896, !llvm.loop !110

2129:                                             ; preds = %1899
  %2130 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %2130)
          to label %2131 unwind label %1889

2131:                                             ; preds = %2129
  br label %2132

2132:                                             ; preds = %2131
  store i8 0, ptr %134, align 1, !tbaa !39
  br label %1884, !llvm.loop !111

2133:                                             ; preds = %2126, %1889
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #0
  br label %2318

2134:                                             ; preds = %1888
  br label %2135

2135:                                             ; preds = %2134
  store i8 0, ptr %134, align 1, !tbaa !39
  br label %1876, !llvm.loop !112

2136:                                             ; preds = %1879
  br label %2316

2137:                                             ; preds = %1671
  call void @llvm.lifetime.start.p0(i64 1, ptr %159) #0
  store i8 1, ptr %159, align 1, !tbaa !39
  br label %2138

2138:                                             ; preds = %2314, %2137
  %2139 = load i8, ptr %159, align 1, !tbaa !39, !range !40, !noundef !41
  %2140 = trunc i8 %2139 to i1
  br i1 %2140, label %2142, label %2141

2141:                                             ; preds = %2138
  store i32 209, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #0
  br label %2315

2142:                                             ; preds = %2138
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #0
  %2143 = load ptr, ptr %115, align 8, !tbaa !5
  %2144 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %2143)
          to label %2145 unwind label %2151

2145:                                             ; preds = %2142
  store ptr %2144, ptr %160, align 8, !tbaa !5
  br label %2146

2146:                                             ; preds = %2311, %2145
  %2147 = load ptr, ptr %160, align 8, !tbaa !5
  %2148 = load i8, ptr %159, align 1, !tbaa !39, !range !40, !noundef !41
  %2149 = trunc i8 %2148 to i1
  br i1 %2149, label %2155, label %2150

2150:                                             ; preds = %2146
  store i32 212, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #0
  br label %2313

2151:                                             ; preds = %2142
  %2152 = landingpad { ptr, i32 }
          cleanup
  %2153 = extractvalue { ptr, i32 } %2152, 0
  store ptr %2153, ptr %9, align 8
  %2154 = extractvalue { ptr, i32 } %2152, 1
  store i32 %2154, ptr %10, align 4
  br label %2312

2155:                                             ; preds = %2146
  call void @llvm.lifetime.start.p0(i64 1, ptr %161) #0
  store i8 1, ptr %161, align 1, !tbaa !39
  br label %2156

2156:                                             ; preds = %2309, %2155
  %2157 = load i8, ptr %161, align 1, !tbaa !39, !range !40, !noundef !41
  %2158 = trunc i8 %2157 to i1
  br i1 %2158, label %2160, label %2159

2159:                                             ; preds = %2156
  store i32 215, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %161) #0
  br label %2310

2160:                                             ; preds = %2156
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #0
  %2161 = load ptr, ptr %7, align 8, !tbaa !5
  %2162 = getelementptr inbounds %"struct.HIR::Pattern", ptr %2161, i32 0, i32 1
  store ptr %2162, ptr %162, align 8, !tbaa !5
  br label %2163

2163:                                             ; preds = %2306, %2160
  %2164 = load i8, ptr %161, align 1, !tbaa !39, !range !40, !noundef !41
  %2165 = trunc i8 %2164 to i1
  br i1 %2165, label %2167, label %2166

2166:                                             ; preds = %2163
  store i32 218, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #0
  br label %2308

2167:                                             ; preds = %2163
  %2168 = load ptr, ptr %162, align 8, !tbaa !5
  %2169 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %2168)
          to label %2170 unwind label %2171

2170:                                             ; preds = %2167
  switch i32 %2169, label %2176 [
    i32 0, label %2175
    i32 1, label %2202
    i32 8, label %2261
  ]

2171:                                             ; preds = %2186, %2167
  %2172 = landingpad { ptr, i32 }
          cleanup
  %2173 = extractvalue { ptr, i32 } %2172, 0
  store ptr %2173, ptr %9, align 8
  %2174 = extractvalue { ptr, i32 } %2172, 1
  store i32 %2174, ptr %10, align 4
  br label %2307

2175:                                             ; preds = %2170
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1614, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2176:                                             ; preds = %2170
  br label %2177

2177:                                             ; preds = %2176
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #0
  %2178 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef nonnull align 8 dereferenceable(8) %2178)
          to label %2179 unwind label %2187

2179:                                             ; preds = %2177
  call void @llvm.lifetime.start.p0(i64 16, ptr %165) #0
  %2180 = getelementptr inbounds %class.anon.399, ptr %165, i32 0, i32 0
  %2181 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %2181, ptr %2180, align 8, !tbaa !5
  %2182 = getelementptr inbounds %class.anon.399, ptr %165, i32 0, i32 1
  %2183 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2183, ptr %2182, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %164, ptr noundef nonnull align 8 dereferenceable(16) %165) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef %164)
          to label %2184 unwind label %2191

2184:                                             ; preds = %2179
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #0
  %2185 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2185, ptr noundef @.str.10)
          to label %2186 unwind label %2196

2186:                                             ; preds = %2184
  invoke void @__cxa_throw(ptr %2185, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %2171

2187:                                             ; preds = %2177
  %2188 = landingpad { ptr, i32 }
          cleanup
  %2189 = extractvalue { ptr, i32 } %2188, 0
  store ptr %2189, ptr %9, align 8
  %2190 = extractvalue { ptr, i32 } %2188, 1
  store i32 %2190, ptr %10, align 4
  br label %2195

2191:                                             ; preds = %2179
  %2192 = landingpad { ptr, i32 }
          cleanup
  %2193 = extractvalue { ptr, i32 } %2192, 0
  store ptr %2193, ptr %9, align 8
  %2194 = extractvalue { ptr, i32 } %2192, 1
  store i32 %2194, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %165) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %163) #0
  br label %2195

2195:                                             ; preds = %2191, %2187
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #0
  br label %2307

2196:                                             ; preds = %2184
  %2197 = landingpad { ptr, i32 }
          cleanup
  %2198 = extractvalue { ptr, i32 } %2197, 0
  store ptr %2198, ptr %9, align 8
  %2199 = extractvalue { ptr, i32 } %2197, 1
  store i32 %2199, ptr %10, align 4
  call void @__cxa_free_exception(ptr %2185) #0
  br label %2307

2200:                                             ; No predecessors!
  br label %2201

2201:                                             ; preds = %2200
  br label %2305

2202:                                             ; preds = %2170
  call void @llvm.lifetime.start.p0(i64 1, ptr %166) #0
  store i8 1, ptr %166, align 1, !tbaa !39
  br label %2203

2203:                                             ; preds = %2259, %2202
  %2204 = load i8, ptr %166, align 1, !tbaa !39, !range !40, !noundef !41
  %2205 = trunc i8 %2204 to i1
  br i1 %2205, label %2207, label %2206

2206:                                             ; preds = %2203
  store i32 224, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %166) #0
  br label %2260

2207:                                             ; preds = %2203
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #0
  %2208 = load ptr, ptr %162, align 8, !tbaa !5
  %2209 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %2208)
          to label %2210 unwind label %2216

2210:                                             ; preds = %2207
  store ptr %2209, ptr %167, align 8, !tbaa !5
  br label %2211

2211:                                             ; preds = %2256, %2210
  %2212 = load ptr, ptr %167, align 8, !tbaa !5
  %2213 = load i8, ptr %166, align 1, !tbaa !39, !range !40, !noundef !41
  %2214 = trunc i8 %2213 to i1
  br i1 %2214, label %2220, label %2215

2215:                                             ; preds = %2211
  store i32 227, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #0
  br label %2258

2216:                                             ; preds = %2253, %2220, %2207
  %2217 = landingpad { ptr, i32 }
          cleanup
  %2218 = extractvalue { ptr, i32 } %2217, 0
  store ptr %2218, ptr %9, align 8
  %2219 = extractvalue { ptr, i32 } %2217, 1
  store i32 %2219, ptr %10, align 4
  br label %2257

2220:                                             ; preds = %2211
  %2221 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %2221, i8 noundef zeroext 0)
          to label %2222 unwind label %2216

2222:                                             ; preds = %2220
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #0
  %2223 = load ptr, ptr %160, align 8, !tbaa !5
  store ptr %2223, ptr %168, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #0
  %2224 = load ptr, ptr %168, align 8, !tbaa !5
  %2225 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2224) #0
  %2226 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.400", ptr %169, i32 0, i32 0
  store ptr %2225, ptr %2226, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #0
  %2227 = load ptr, ptr %168, align 8, !tbaa !5
  %2228 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2227) #0
  %2229 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.400", ptr %170, i32 0, i32 0
  store ptr %2228, ptr %2229, align 8
  br label %2230

2230:                                             ; preds = %2247, %2222
  %2231 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull align 8 dereferenceable(8) %170) #0
  br i1 %2231, label %2233, label %2232

2232:                                             ; preds = %2230
  store i32 230, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #0
  br label %2253

2233:                                             ; preds = %2230
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #0
  %2234 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %169) #0
  store ptr %2234, ptr %171, align 8, !tbaa !5
  %2235 = load ptr, ptr %6, align 8, !tbaa !5
  %2236 = load ptr, ptr %171, align 8, !tbaa !5
  %2237 = getelementptr inbounds %"struct.std::pair.401", ptr %2236, i32 0, i32 1
  %2238 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %2237, i32 0, i32 1
  %2239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEENK4$_13clIS7_EES9_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(8) %2238)
          to label %2240 unwind label %2249

2240:                                             ; preds = %2233
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %2235, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %2239)
          to label %2241 unwind label %2249

2241:                                             ; preds = %2240
  %2242 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %2243 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %2242)
          to label %2244 unwind label %2249

2244:                                             ; preds = %2241
  %2245 = load i8, ptr %2243, align 1, !tbaa !68
  %2246 = add i8 %2245, 1
  store i8 %2246, ptr %2243, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #0
  br label %2247

2247:                                             ; preds = %2244
  %2248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %169) #0
  br label %2230

2249:                                             ; preds = %2241, %2240, %2233
  %2250 = landingpad { ptr, i32 }
          cleanup
  %2251 = extractvalue { ptr, i32 } %2250, 0
  store ptr %2251, ptr %9, align 8
  %2252 = extractvalue { ptr, i32 } %2250, 1
  store i32 %2252, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #0
  br label %2257

2253:                                             ; preds = %2232
  %2254 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %2254)
          to label %2255 unwind label %2216

2255:                                             ; preds = %2253
  br label %2256

2256:                                             ; preds = %2255
  store i8 0, ptr %166, align 1, !tbaa !39
  br label %2211, !llvm.loop !113

2257:                                             ; preds = %2249, %2216
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %166) #0
  br label %2307

2258:                                             ; preds = %2215
  br label %2259

2259:                                             ; preds = %2258
  store i8 0, ptr %166, align 1, !tbaa !39
  br label %2203, !llvm.loop !114

2260:                                             ; preds = %2206
  br label %2305

2261:                                             ; preds = %2170
  call void @llvm.lifetime.start.p0(i64 1, ptr %172) #0
  store i8 1, ptr %172, align 1, !tbaa !39
  br label %2262

2262:                                             ; preds = %2303, %2261
  %2263 = load i8, ptr %172, align 1, !tbaa !39, !range !40, !noundef !41
  %2264 = trunc i8 %2263 to i1
  br i1 %2264, label %2266, label %2265

2265:                                             ; preds = %2262
  store i32 232, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %172) #0
  br label %2304

2266:                                             ; preds = %2262
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #0
  %2267 = load ptr, ptr %162, align 8, !tbaa !5
  %2268 = invoke noundef nonnull align 8 dereferenceable(137) ptr @_ZNK3HIR7Pattern4Data12as_PathNamedEv(ptr noundef nonnull align 8 dereferenceable(184) %2267)
          to label %2269 unwind label %2275

2269:                                             ; preds = %2266
  store ptr %2268, ptr %173, align 8, !tbaa !5
  br label %2270

2270:                                             ; preds = %2296, %2269
  %2271 = load ptr, ptr %173, align 8, !tbaa !5
  %2272 = load i8, ptr %172, align 1, !tbaa !39, !range !40, !noundef !41
  %2273 = trunc i8 %2272 to i1
  br i1 %2273, label %2279, label %2274

2274:                                             ; preds = %2270
  store i32 235, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #0
  br label %2302

2275:                                             ; preds = %2293, %2289, %2287, %2279, %2266
  %2276 = landingpad { ptr, i32 }
          cleanup
  %2277 = extractvalue { ptr, i32 } %2276, 0
  store ptr %2277, ptr %9, align 8
  %2278 = extractvalue { ptr, i32 } %2276, 1
  store i32 %2278, ptr %10, align 4
  br label %2301

2279:                                             ; preds = %2270
  %2280 = load ptr, ptr %173, align 8, !tbaa !5
  %2281 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathNamed", ptr %2280, i32 0, i32 1
  %2282 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern11PathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(24) %2281)
          to label %2283 unwind label %2275

2283:                                             ; preds = %2279
  br i1 %2282, label %2284, label %2285

2284:                                             ; preds = %2283
  br label %2287

2285:                                             ; preds = %2283
  call void @__assert_fail(ptr noundef @.str.65, ptr noundef @.str.17, i32 noundef 1627, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2286:                                             ; No predecessors!
  br label %2287

2287:                                             ; preds = %2286, %2284
  %2288 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %2288, i8 noundef zeroext 0)
          to label %2289 unwind label %2275

2289:                                             ; preds = %2287
  %2290 = load ptr, ptr %6, align 8, !tbaa !5
  %2291 = load ptr, ptr %173, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFRKN3HIR7TypeRefES3_EEC2IRZN21PatternRulesetBuilder11append_fromERK4SpanRKNS0_7PatternES3_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %2292 unwind label %2275

2292:                                             ; preds = %2289
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH19push_pattern_structERS_S2_RKNS4_4Data14Data_PathNamedESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %2290, ptr noundef nonnull align 8 dereferenceable(137) %2291, ptr noundef %174)
          to label %2293 unwind label %2297

2293:                                             ; preds = %2292
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #0
  %2294 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %2294)
          to label %2295 unwind label %2275

2295:                                             ; preds = %2293
  br label %2296

2296:                                             ; preds = %2295
  store i8 0, ptr %172, align 1, !tbaa !39
  br label %2270, !llvm.loop !115

2297:                                             ; preds = %2292
  %2298 = landingpad { ptr, i32 }
          cleanup
  %2299 = extractvalue { ptr, i32 } %2298, 0
  store ptr %2299, ptr %9, align 8
  %2300 = extractvalue { ptr, i32 } %2298, 1
  store i32 %2300, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #0
  br label %2301

2301:                                             ; preds = %2297, %2275
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %172) #0
  br label %2307

2302:                                             ; preds = %2274
  br label %2303

2303:                                             ; preds = %2302
  store i8 0, ptr %172, align 1, !tbaa !39
  br label %2262, !llvm.loop !116

2304:                                             ; preds = %2265
  br label %2305

2305:                                             ; preds = %2304, %2260, %2201
  br label %2306

2306:                                             ; preds = %2305
  store i8 0, ptr %161, align 1, !tbaa !39
  br label %2163, !llvm.loop !117

2307:                                             ; preds = %2301, %2257, %2196, %2195, %2171
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %161) #0
  br label %2312

2308:                                             ; preds = %2166
  br label %2309

2309:                                             ; preds = %2308
  store i8 0, ptr %161, align 1, !tbaa !39
  br label %2156, !llvm.loop !118

2310:                                             ; preds = %2159
  br label %2311

2311:                                             ; preds = %2310
  store i8 0, ptr %159, align 1, !tbaa !39
  br label %2146, !llvm.loop !119

2312:                                             ; preds = %2307, %2151
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %159) #0
  br label %2318

2313:                                             ; preds = %2150
  br label %2314

2314:                                             ; preds = %2313
  store i8 0, ptr %159, align 1, !tbaa !39
  br label %2138, !llvm.loop !120

2315:                                             ; preds = %2141
  br label %2316

2316:                                             ; preds = %2315, %2136, %1874, %1671
  br label %2317

2317:                                             ; preds = %2316
  store i8 0, ptr %114, align 1, !tbaa !39
  br label %1664, !llvm.loop !121

2318:                                             ; preds = %2312, %2133, %1871, %1672
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #0
  br label %2326

2319:                                             ; preds = %1667
  br label %2320

2320:                                             ; preds = %2319
  store i8 0, ptr %114, align 1, !tbaa !39
  br label %1658, !llvm.loop !122

2321:                                             ; preds = %1661
  store i32 0, ptr %17, align 4
  br label %2322

2322:                                             ; preds = %2321, %1655
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #0
  %2323 = load i32, ptr %17, align 4
  switch i32 %2323, label %2327 [
    i32 0, label %2324
  ]

2324:                                             ; preds = %2322
  br label %2325

2325:                                             ; preds = %2324
  store i8 0, ptr %105, align 1, !tbaa !39
  br label %1542, !llvm.loop !123

2326:                                             ; preds = %2318, %1656, %1583
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #0
  br label %2328

2327:                                             ; preds = %2322, %1546
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #0
  br label %2329

2328:                                             ; preds = %2326, %1547
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #0
  br label %3099

2329:                                             ; preds = %2327
  br label %2330

2330:                                             ; preds = %2329
  store i8 0, ptr %105, align 1, !tbaa !39
  br label %1534, !llvm.loop !124

2331:                                             ; preds = %1537
  br label %3097

2332:                                             ; preds = %1409
  call void @llvm.lifetime.start.p0(i64 1, ptr %175) #0
  store i8 1, ptr %175, align 1, !tbaa !39
  br label %2333

2333:                                             ; preds = %2448, %2332
  %2334 = load i8, ptr %175, align 1, !tbaa !39, !range !40, !noundef !41
  %2335 = trunc i8 %2334 to i1
  br i1 %2335, label %2337, label %2336

2336:                                             ; preds = %2333
  store i32 238, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %175) #0
  br label %2449

2337:                                             ; preds = %2333
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #0
  %2338 = load ptr, ptr %91, align 8, !tbaa !5
  %2339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %2338)
          to label %2340 unwind label %2346

2340:                                             ; preds = %2337
  store ptr %2339, ptr %176, align 8, !tbaa !5
  br label %2341

2341:                                             ; preds = %2445, %2340
  %2342 = load ptr, ptr %176, align 8, !tbaa !5
  %2343 = load i8, ptr %175, align 1, !tbaa !39, !range !40, !noundef !41
  %2344 = trunc i8 %2343 to i1
  br i1 %2344, label %2350, label %2345

2345:                                             ; preds = %2341
  store i32 241, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #0
  br label %2447

2346:                                             ; preds = %2337
  %2347 = landingpad { ptr, i32 }
          cleanup
  %2348 = extractvalue { ptr, i32 } %2347, 0
  store ptr %2348, ptr %9, align 8
  %2349 = extractvalue { ptr, i32 } %2347, 1
  store i32 %2349, ptr %10, align 4
  br label %2446

2350:                                             ; preds = %2341
  call void @llvm.lifetime.start.p0(i64 1, ptr %177) #0
  store i8 1, ptr %177, align 1, !tbaa !39
  br label %2351

2351:                                             ; preds = %2443, %2350
  %2352 = load i8, ptr %177, align 1, !tbaa !39, !range !40, !noundef !41
  %2353 = trunc i8 %2352 to i1
  br i1 %2353, label %2355, label %2354

2354:                                             ; preds = %2351
  store i32 244, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %177) #0
  br label %2444

2355:                                             ; preds = %2351
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #0
  %2356 = load ptr, ptr %7, align 8, !tbaa !5
  %2357 = getelementptr inbounds %"struct.HIR::Pattern", ptr %2356, i32 0, i32 1
  store ptr %2357, ptr %178, align 8, !tbaa !5
  br label %2358

2358:                                             ; preds = %2440, %2355
  %2359 = load i8, ptr %177, align 1, !tbaa !39, !range !40, !noundef !41
  %2360 = trunc i8 %2359 to i1
  br i1 %2360, label %2362, label %2361

2361:                                             ; preds = %2358
  store i32 247, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #0
  br label %2442

2362:                                             ; preds = %2358
  %2363 = load ptr, ptr %178, align 8, !tbaa !5
  %2364 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %2363)
          to label %2365 unwind label %2366

2365:                                             ; preds = %2362
  switch i32 %2364, label %2371 [
    i32 0, label %2370
    i32 1, label %2409
  ]

2366:                                             ; preds = %2362
  %2367 = landingpad { ptr, i32 }
          cleanup
  %2368 = extractvalue { ptr, i32 } %2367, 0
  store ptr %2368, ptr %9, align 8
  %2369 = extractvalue { ptr, i32 } %2367, 1
  store i32 %2369, ptr %10, align 4
  br label %2441

2370:                                             ; preds = %2365
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1637, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2371:                                             ; preds = %2365
  br label %2372

2372:                                             ; preds = %2371
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #0
  store ptr @__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE, ptr %179, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #0
  %2373 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull align 8 dereferenceable(8) %2373)
          to label %2374 unwind label %2384

2374:                                             ; preds = %2372
  call void @llvm.lifetime.start.p0(i64 24, ptr %182) #0
  %2375 = getelementptr inbounds %class.anon.403, ptr %182, i32 0, i32 0
  store ptr %179, ptr %2375, align 8, !tbaa !5
  %2376 = getelementptr inbounds %class.anon.403, ptr %182, i32 0, i32 1
  %2377 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %2377, ptr %2376, align 8, !tbaa !5
  %2378 = getelementptr inbounds %class.anon.403, ptr %182, i32 0, i32 2
  %2379 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2379, ptr %2378, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %181, ptr noundef nonnull align 8 dereferenceable(24) %182)
          to label %2380 unwind label %2388

2380:                                             ; preds = %2374
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef %181)
          to label %2381 unwind label %2392

2381:                                             ; preds = %2380
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %182) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #0
  %2382 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2382, ptr noundef @.str.5)
          to label %2383 unwind label %2398

2383:                                             ; preds = %2381
  invoke void @__cxa_throw(ptr %2382, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %2402

2384:                                             ; preds = %2372
  %2385 = landingpad { ptr, i32 }
          cleanup
  %2386 = extractvalue { ptr, i32 } %2385, 0
  store ptr %2386, ptr %9, align 8
  %2387 = extractvalue { ptr, i32 } %2385, 1
  store i32 %2387, ptr %10, align 4
  br label %2397

2388:                                             ; preds = %2374
  %2389 = landingpad { ptr, i32 }
          cleanup
  %2390 = extractvalue { ptr, i32 } %2389, 0
  store ptr %2390, ptr %9, align 8
  %2391 = extractvalue { ptr, i32 } %2389, 1
  store i32 %2391, ptr %10, align 4
  br label %2396

2392:                                             ; preds = %2380
  %2393 = landingpad { ptr, i32 }
          cleanup
  %2394 = extractvalue { ptr, i32 } %2393, 0
  store ptr %2394, ptr %9, align 8
  %2395 = extractvalue { ptr, i32 } %2393, 1
  store i32 %2395, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %181) #0
  br label %2396

2396:                                             ; preds = %2392, %2388
  call void @llvm.lifetime.end.p0(i64 24, ptr %182) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #0
  br label %2397

2397:                                             ; preds = %2396, %2384
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #0
  br label %2406

2398:                                             ; preds = %2381
  %2399 = landingpad { ptr, i32 }
          cleanup
  %2400 = extractvalue { ptr, i32 } %2399, 0
  store ptr %2400, ptr %9, align 8
  %2401 = extractvalue { ptr, i32 } %2399, 1
  store i32 %2401, ptr %10, align 4
  call void @__cxa_free_exception(ptr %2382) #0
  br label %2406

2402:                                             ; preds = %2383
  %2403 = landingpad { ptr, i32 }
          cleanup
  %2404 = extractvalue { ptr, i32 } %2403, 0
  store ptr %2404, ptr %9, align 8
  %2405 = extractvalue { ptr, i32 } %2403, 1
  store i32 %2405, ptr %10, align 4
  br label %2406

2406:                                             ; preds = %2402, %2398, %2397
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #0
  br label %2441

2407:                                             ; No predecessors!
  br label %2408

2408:                                             ; preds = %2407
  br label %2439

2409:                                             ; preds = %2365
  call void @llvm.lifetime.start.p0(i64 1, ptr %183) #0
  store i8 1, ptr %183, align 1, !tbaa !39
  br label %2410

2410:                                             ; preds = %2437, %2409
  %2411 = load i8, ptr %183, align 1, !tbaa !39, !range !40, !noundef !41
  %2412 = trunc i8 %2411 to i1
  br i1 %2412, label %2414, label %2413

2413:                                             ; preds = %2410
  store i32 253, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %183) #0
  br label %2438

2414:                                             ; preds = %2410
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #0
  %2415 = load ptr, ptr %178, align 8, !tbaa !5
  %2416 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %2415)
          to label %2417 unwind label %2423

2417:                                             ; preds = %2414
  store ptr %2416, ptr %184, align 8, !tbaa !5
  br label %2418

2418:                                             ; preds = %2430, %2417
  %2419 = load ptr, ptr %184, align 8, !tbaa !5
  %2420 = load i8, ptr %183, align 1, !tbaa !39, !range !40, !noundef !41
  %2421 = trunc i8 %2420 to i1
  br i1 %2421, label %2427, label %2422

2422:                                             ; preds = %2418
  store i32 256, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #0
  br label %2436

2423:                                             ; preds = %2427, %2414
  %2424 = landingpad { ptr, i32 }
          cleanup
  %2425 = extractvalue { ptr, i32 } %2424, 0
  store ptr %2425, ptr %9, align 8
  %2426 = extractvalue { ptr, i32 } %2424, 1
  store i32 %2426, ptr %10, align 4
  br label %2435

2427:                                             ; preds = %2418
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %185)
          to label %2428 unwind label %2423

2428:                                             ; preds = %2427
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %185)
          to label %2429 unwind label %2431

2429:                                             ; preds = %2428
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %185) #0
  br label %2430

2430:                                             ; preds = %2429
  store i8 0, ptr %183, align 1, !tbaa !39
  br label %2418, !llvm.loop !125

2431:                                             ; preds = %2428
  %2432 = landingpad { ptr, i32 }
          cleanup
  %2433 = extractvalue { ptr, i32 } %2432, 0
  store ptr %2433, ptr %9, align 8
  %2434 = extractvalue { ptr, i32 } %2432, 1
  store i32 %2434, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %185) #0
  br label %2435

2435:                                             ; preds = %2431, %2423
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %183) #0
  br label %2441

2436:                                             ; preds = %2422
  br label %2437

2437:                                             ; preds = %2436
  store i8 0, ptr %183, align 1, !tbaa !39
  br label %2410, !llvm.loop !126

2438:                                             ; preds = %2413
  br label %2439

2439:                                             ; preds = %2438, %2408
  br label %2440

2440:                                             ; preds = %2439
  store i8 0, ptr %177, align 1, !tbaa !39
  br label %2358, !llvm.loop !127

2441:                                             ; preds = %2435, %2406, %2366
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %177) #0
  br label %2446

2442:                                             ; preds = %2361
  br label %2443

2443:                                             ; preds = %2442
  store i8 0, ptr %177, align 1, !tbaa !39
  br label %2351, !llvm.loop !128

2444:                                             ; preds = %2354
  br label %2445

2445:                                             ; preds = %2444
  store i8 0, ptr %175, align 1, !tbaa !39
  br label %2341, !llvm.loop !129

2446:                                             ; preds = %2441, %2346
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %175) #0
  br label %3099

2447:                                             ; preds = %2345
  br label %2448

2448:                                             ; preds = %2447
  store i8 0, ptr %175, align 1, !tbaa !39
  br label %2333, !llvm.loop !130

2449:                                             ; preds = %2336
  br label %3097

2450:                                             ; preds = %1409
  call void @llvm.lifetime.start.p0(i64 1, ptr %187) #0
  store i8 1, ptr %187, align 1, !tbaa !39
  br label %2451

2451:                                             ; preds = %2554, %2450
  %2452 = load i8, ptr %187, align 1, !tbaa !39, !range !40, !noundef !41
  %2453 = trunc i8 %2452 to i1
  br i1 %2453, label %2455, label %2454

2454:                                             ; preds = %2451
  store i32 259, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %187) #0
  br label %2555

2455:                                             ; preds = %2451
  call void @llvm.lifetime.start.p0(i64 8, ptr %188) #0
  %2456 = load ptr, ptr %91, align 8, !tbaa !5
  %2457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %2456)
          to label %2458 unwind label %2464

2458:                                             ; preds = %2455
  store ptr %2457, ptr %188, align 8, !tbaa !5
  br label %2459

2459:                                             ; preds = %2551, %2458
  %2460 = load ptr, ptr %188, align 8, !tbaa !5
  %2461 = load i8, ptr %187, align 1, !tbaa !39, !range !40, !noundef !41
  %2462 = trunc i8 %2461 to i1
  br i1 %2462, label %2468, label %2463

2463:                                             ; preds = %2459
  store i32 262, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #0
  br label %2553

2464:                                             ; preds = %2455
  %2465 = landingpad { ptr, i32 }
          cleanup
  %2466 = extractvalue { ptr, i32 } %2465, 0
  store ptr %2466, ptr %9, align 8
  %2467 = extractvalue { ptr, i32 } %2465, 1
  store i32 %2467, ptr %10, align 4
  br label %2552

2468:                                             ; preds = %2459
  call void @llvm.lifetime.start.p0(i64 1, ptr %189) #0
  store i8 1, ptr %189, align 1, !tbaa !39
  br label %2469

2469:                                             ; preds = %2549, %2468
  %2470 = load i8, ptr %189, align 1, !tbaa !39, !range !40, !noundef !41
  %2471 = trunc i8 %2470 to i1
  br i1 %2471, label %2473, label %2472

2472:                                             ; preds = %2469
  store i32 265, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %189) #0
  br label %2550

2473:                                             ; preds = %2469
  call void @llvm.lifetime.start.p0(i64 8, ptr %190) #0
  %2474 = load ptr, ptr %7, align 8, !tbaa !5
  %2475 = getelementptr inbounds %"struct.HIR::Pattern", ptr %2474, i32 0, i32 1
  store ptr %2475, ptr %190, align 8, !tbaa !5
  br label %2476

2476:                                             ; preds = %2546, %2473
  %2477 = load i8, ptr %189, align 1, !tbaa !39, !range !40, !noundef !41
  %2478 = trunc i8 %2477 to i1
  br i1 %2478, label %2480, label %2479

2479:                                             ; preds = %2476
  store i32 268, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #0
  br label %2548

2480:                                             ; preds = %2476
  %2481 = load ptr, ptr %190, align 8, !tbaa !5
  %2482 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %2481)
          to label %2483 unwind label %2484

2483:                                             ; preds = %2480
  switch i32 %2482, label %2489 [
    i32 0, label %2488
    i32 1, label %2515
  ]

2484:                                             ; preds = %2499, %2480
  %2485 = landingpad { ptr, i32 }
          cleanup
  %2486 = extractvalue { ptr, i32 } %2485, 0
  store ptr %2486, ptr %9, align 8
  %2487 = extractvalue { ptr, i32 } %2485, 1
  store i32 %2487, ptr %10, align 4
  br label %2547

2488:                                             ; preds = %2483
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1646, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2489:                                             ; preds = %2483
  br label %2490

2490:                                             ; preds = %2489
  call void @llvm.lifetime.start.p0(i64 8, ptr %191) #0
  %2491 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %191, ptr noundef nonnull align 8 dereferenceable(8) %2491)
          to label %2492 unwind label %2500

2492:                                             ; preds = %2490
  call void @llvm.lifetime.start.p0(i64 16, ptr %193) #0
  %2493 = getelementptr inbounds %class.anon.404, ptr %193, i32 0, i32 0
  %2494 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %2494, ptr %2493, align 8, !tbaa !5
  %2495 = getelementptr inbounds %class.anon.404, ptr %193, i32 0, i32 1
  %2496 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2496, ptr %2495, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %192, ptr noundef nonnull align 8 dereferenceable(16) %193) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %191, ptr noundef %192)
          to label %2497 unwind label %2504

2497:                                             ; preds = %2492
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %193) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %191) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #0
  %2498 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2498, ptr noundef @.str.10)
          to label %2499 unwind label %2509

2499:                                             ; preds = %2497
  invoke void @__cxa_throw(ptr %2498, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %2484

2500:                                             ; preds = %2490
  %2501 = landingpad { ptr, i32 }
          cleanup
  %2502 = extractvalue { ptr, i32 } %2501, 0
  store ptr %2502, ptr %9, align 8
  %2503 = extractvalue { ptr, i32 } %2501, 1
  store i32 %2503, ptr %10, align 4
  br label %2508

2504:                                             ; preds = %2492
  %2505 = landingpad { ptr, i32 }
          cleanup
  %2506 = extractvalue { ptr, i32 } %2505, 0
  store ptr %2506, ptr %9, align 8
  %2507 = extractvalue { ptr, i32 } %2505, 1
  store i32 %2507, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %192) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %193) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %191) #0
  br label %2508

2508:                                             ; preds = %2504, %2500
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #0
  br label %2547

2509:                                             ; preds = %2497
  %2510 = landingpad { ptr, i32 }
          cleanup
  %2511 = extractvalue { ptr, i32 } %2510, 0
  store ptr %2511, ptr %9, align 8
  %2512 = extractvalue { ptr, i32 } %2510, 1
  store i32 %2512, ptr %10, align 4
  call void @__cxa_free_exception(ptr %2498) #0
  br label %2547

2513:                                             ; No predecessors!
  br label %2514

2514:                                             ; preds = %2513
  br label %2545

2515:                                             ; preds = %2483
  call void @llvm.lifetime.start.p0(i64 1, ptr %194) #0
  store i8 1, ptr %194, align 1, !tbaa !39
  br label %2516

2516:                                             ; preds = %2543, %2515
  %2517 = load i8, ptr %194, align 1, !tbaa !39, !range !40, !noundef !41
  %2518 = trunc i8 %2517 to i1
  br i1 %2518, label %2520, label %2519

2519:                                             ; preds = %2516
  store i32 274, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %194) #0
  br label %2544

2520:                                             ; preds = %2516
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #0
  %2521 = load ptr, ptr %190, align 8, !tbaa !5
  %2522 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %2521)
          to label %2523 unwind label %2529

2523:                                             ; preds = %2520
  store ptr %2522, ptr %195, align 8, !tbaa !5
  br label %2524

2524:                                             ; preds = %2536, %2523
  %2525 = load ptr, ptr %195, align 8, !tbaa !5
  %2526 = load i8, ptr %194, align 1, !tbaa !39, !range !40, !noundef !41
  %2527 = trunc i8 %2526 to i1
  br i1 %2527, label %2533, label %2528

2528:                                             ; preds = %2524
  store i32 277, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #0
  br label %2542

2529:                                             ; preds = %2533, %2520
  %2530 = landingpad { ptr, i32 }
          cleanup
  %2531 = extractvalue { ptr, i32 } %2530, 0
  store ptr %2531, ptr %9, align 8
  %2532 = extractvalue { ptr, i32 } %2530, 1
  store i32 %2532, ptr %10, align 4
  br label %2541

2533:                                             ; preds = %2524
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %196)
          to label %2534 unwind label %2529

2534:                                             ; preds = %2533
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %196)
          to label %2535 unwind label %2537

2535:                                             ; preds = %2534
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %196) #0
  br label %2536

2536:                                             ; preds = %2535
  store i8 0, ptr %194, align 1, !tbaa !39
  br label %2524, !llvm.loop !131

2537:                                             ; preds = %2534
  %2538 = landingpad { ptr, i32 }
          cleanup
  %2539 = extractvalue { ptr, i32 } %2538, 0
  store ptr %2539, ptr %9, align 8
  %2540 = extractvalue { ptr, i32 } %2538, 1
  store i32 %2540, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %196) #0
  br label %2541

2541:                                             ; preds = %2537, %2529
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %194) #0
  br label %2547

2542:                                             ; preds = %2528
  br label %2543

2543:                                             ; preds = %2542
  store i8 0, ptr %194, align 1, !tbaa !39
  br label %2516, !llvm.loop !132

2544:                                             ; preds = %2519
  br label %2545

2545:                                             ; preds = %2544, %2514
  br label %2546

2546:                                             ; preds = %2545
  store i8 0, ptr %189, align 1, !tbaa !39
  br label %2476, !llvm.loop !133

2547:                                             ; preds = %2541, %2509, %2508, %2484
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %189) #0
  br label %2552

2548:                                             ; preds = %2479
  br label %2549

2549:                                             ; preds = %2548
  store i8 0, ptr %189, align 1, !tbaa !39
  br label %2469, !llvm.loop !134

2550:                                             ; preds = %2472
  br label %2551

2551:                                             ; preds = %2550
  store i8 0, ptr %187, align 1, !tbaa !39
  br label %2459, !llvm.loop !135

2552:                                             ; preds = %2547, %2464
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %187) #0
  br label %3099

2553:                                             ; preds = %2463
  br label %2554

2554:                                             ; preds = %2553
  store i8 0, ptr %187, align 1, !tbaa !39
  br label %2451, !llvm.loop !136

2555:                                             ; preds = %2454
  br label %3097

2556:                                             ; preds = %1409
  call void @llvm.lifetime.start.p0(i64 1, ptr %198) #0
  store i8 1, ptr %198, align 1, !tbaa !39
  br label %2557

2557:                                             ; preds = %3095, %2556
  %2558 = load i8, ptr %198, align 1, !tbaa !39, !range !40, !noundef !41
  %2559 = trunc i8 %2558 to i1
  br i1 %2559, label %2561, label %2560

2560:                                             ; preds = %2557
  store i32 280, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %198) #0
  br label %3096

2561:                                             ; preds = %2557
  call void @llvm.lifetime.start.p0(i64 8, ptr %199) #0
  %2562 = load ptr, ptr %91, align 8, !tbaa !5
  %2563 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %2562)
          to label %2564 unwind label %2570

2564:                                             ; preds = %2561
  store ptr %2563, ptr %199, align 8, !tbaa !5
  br label %2565

2565:                                             ; preds = %3092, %2564
  %2566 = load ptr, ptr %199, align 8, !tbaa !5
  %2567 = load i8, ptr %198, align 1, !tbaa !39, !range !40, !noundef !41
  %2568 = trunc i8 %2567 to i1
  br i1 %2568, label %2574, label %2569

2569:                                             ; preds = %2565
  store i32 283, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #0
  br label %3094

2570:                                             ; preds = %2561
  %2571 = landingpad { ptr, i32 }
          cleanup
  %2572 = extractvalue { ptr, i32 } %2571, 0
  store ptr %2572, ptr %9, align 8
  %2573 = extractvalue { ptr, i32 } %2571, 1
  store i32 %2573, ptr %10, align 4
  br label %3093

2574:                                             ; preds = %2565
  call void @llvm.lifetime.start.p0(i64 1, ptr %200) #0
  store i8 1, ptr %200, align 1, !tbaa !39
  br label %2575

2575:                                             ; preds = %3090, %2574
  %2576 = load i8, ptr %200, align 1, !tbaa !39, !range !40, !noundef !41
  %2577 = trunc i8 %2576 to i1
  br i1 %2577, label %2579, label %2578

2578:                                             ; preds = %2575
  store i32 286, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #0
  br label %3091

2579:                                             ; preds = %2575
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #0
  %2580 = load ptr, ptr %7, align 8, !tbaa !5
  %2581 = getelementptr inbounds %"struct.HIR::Pattern", ptr %2580, i32 0, i32 1
  store ptr %2581, ptr %201, align 8, !tbaa !5
  br label %2582

2582:                                             ; preds = %3087, %2579
  %2583 = load i8, ptr %200, align 1, !tbaa !39, !range !40, !noundef !41
  %2584 = trunc i8 %2583 to i1
  br i1 %2584, label %2586, label %2585

2585:                                             ; preds = %2582
  store i32 289, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #0
  br label %3089

2586:                                             ; preds = %2582
  %2587 = load ptr, ptr %201, align 8, !tbaa !5
  %2588 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %2587)
          to label %2589 unwind label %2590

2589:                                             ; preds = %2586
  switch i32 %2588, label %2595 [
    i32 0, label %2594
    i32 1, label %2621
    i32 10, label %2651
    i32 6, label %2735
    i32 7, label %2786
    i32 8, label %2877
  ]

2590:                                             ; preds = %2605, %2586
  %2591 = landingpad { ptr, i32 }
          cleanup
  %2592 = extractvalue { ptr, i32 } %2591, 0
  store ptr %2592, ptr %9, align 8
  %2593 = extractvalue { ptr, i32 } %2591, 1
  store i32 %2593, ptr %10, align 4
  br label %3088

2594:                                             ; preds = %2589
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1655, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2595:                                             ; preds = %2589
  br label %2596

2596:                                             ; preds = %2595
  call void @llvm.lifetime.start.p0(i64 8, ptr %202) #0
  %2597 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %2597)
          to label %2598 unwind label %2606

2598:                                             ; preds = %2596
  call void @llvm.lifetime.start.p0(i64 16, ptr %204) #0
  %2599 = getelementptr inbounds %class.anon.405, ptr %204, i32 0, i32 0
  %2600 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %2600, ptr %2599, align 8, !tbaa !5
  %2601 = getelementptr inbounds %class.anon.405, ptr %204, i32 0, i32 1
  %2602 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2602, ptr %2601, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %203, ptr noundef nonnull align 8 dereferenceable(16) %204) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef %203)
          to label %2603 unwind label %2610

2603:                                             ; preds = %2598
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %204) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #0
  %2604 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2604, ptr noundef @.str.10)
          to label %2605 unwind label %2615

2605:                                             ; preds = %2603
  invoke void @__cxa_throw(ptr %2604, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %2590

2606:                                             ; preds = %2596
  %2607 = landingpad { ptr, i32 }
          cleanup
  %2608 = extractvalue { ptr, i32 } %2607, 0
  store ptr %2608, ptr %9, align 8
  %2609 = extractvalue { ptr, i32 } %2607, 1
  store i32 %2609, ptr %10, align 4
  br label %2614

2610:                                             ; preds = %2598
  %2611 = landingpad { ptr, i32 }
          cleanup
  %2612 = extractvalue { ptr, i32 } %2611, 0
  store ptr %2612, ptr %9, align 8
  %2613 = extractvalue { ptr, i32 } %2611, 1
  store i32 %2613, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %204) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %202) #0
  br label %2614

2614:                                             ; preds = %2610, %2606
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #0
  br label %3088

2615:                                             ; preds = %2603
  %2616 = landingpad { ptr, i32 }
          cleanup
  %2617 = extractvalue { ptr, i32 } %2616, 0
  store ptr %2617, ptr %9, align 8
  %2618 = extractvalue { ptr, i32 } %2616, 1
  store i32 %2618, ptr %10, align 4
  call void @__cxa_free_exception(ptr %2604) #0
  br label %3088

2619:                                             ; No predecessors!
  br label %2620

2620:                                             ; preds = %2619
  br label %3086

2621:                                             ; preds = %2589
  call void @llvm.lifetime.start.p0(i64 1, ptr %205) #0
  store i8 1, ptr %205, align 1, !tbaa !39
  br label %2622

2622:                                             ; preds = %2649, %2621
  %2623 = load i8, ptr %205, align 1, !tbaa !39, !range !40, !noundef !41
  %2624 = trunc i8 %2623 to i1
  br i1 %2624, label %2626, label %2625

2625:                                             ; preds = %2622
  store i32 295, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %205) #0
  br label %2650

2626:                                             ; preds = %2622
  call void @llvm.lifetime.start.p0(i64 8, ptr %206) #0
  %2627 = load ptr, ptr %201, align 8, !tbaa !5
  %2628 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %2627)
          to label %2629 unwind label %2635

2629:                                             ; preds = %2626
  store ptr %2628, ptr %206, align 8, !tbaa !5
  br label %2630

2630:                                             ; preds = %2642, %2629
  %2631 = load ptr, ptr %206, align 8, !tbaa !5
  %2632 = load i8, ptr %205, align 1, !tbaa !39, !range !40, !noundef !41
  %2633 = trunc i8 %2632 to i1
  br i1 %2633, label %2639, label %2634

2634:                                             ; preds = %2630
  store i32 298, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #0
  br label %2648

2635:                                             ; preds = %2639, %2626
  %2636 = landingpad { ptr, i32 }
          cleanup
  %2637 = extractvalue { ptr, i32 } %2636, 0
  store ptr %2637, ptr %9, align 8
  %2638 = extractvalue { ptr, i32 } %2636, 1
  store i32 %2638, ptr %10, align 4
  br label %2647

2639:                                             ; preds = %2630
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %207)
          to label %2640 unwind label %2635

2640:                                             ; preds = %2639
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %207)
          to label %2641 unwind label %2643

2641:                                             ; preds = %2640
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %207) #0
  br label %2642

2642:                                             ; preds = %2641
  store i8 0, ptr %205, align 1, !tbaa !39
  br label %2630, !llvm.loop !137

2643:                                             ; preds = %2640
  %2644 = landingpad { ptr, i32 }
          cleanup
  %2645 = extractvalue { ptr, i32 } %2644, 0
  store ptr %2645, ptr %9, align 8
  %2646 = extractvalue { ptr, i32 } %2644, 1
  store i32 %2646, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %207) #0
  br label %2647

2647:                                             ; preds = %2643, %2635
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %205) #0
  br label %3088

2648:                                             ; preds = %2634
  br label %2649

2649:                                             ; preds = %2648
  store i8 0, ptr %205, align 1, !tbaa !39
  br label %2622, !llvm.loop !138

2650:                                             ; preds = %2625
  br label %3086

2651:                                             ; preds = %2589
  call void @llvm.lifetime.start.p0(i64 1, ptr %209) #0
  store i8 1, ptr %209, align 1, !tbaa !39
  br label %2652

2652:                                             ; preds = %2733, %2651
  %2653 = load i8, ptr %209, align 1, !tbaa !39, !range !40, !noundef !41
  %2654 = trunc i8 %2653 to i1
  br i1 %2654, label %2656, label %2655

2655:                                             ; preds = %2652
  store i32 301, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %209) #0
  br label %2734

2656:                                             ; preds = %2652
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #0
  %2657 = load ptr, ptr %201, align 8, !tbaa !5
  %2658 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3HIR7Pattern4Data8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(184) %2657)
          to label %2659 unwind label %2665

2659:                                             ; preds = %2656
  store ptr %2658, ptr %210, align 8, !tbaa !5
  br label %2660

2660:                                             ; preds = %2730, %2659
  %2661 = load ptr, ptr %210, align 8, !tbaa !5
  %2662 = load i8, ptr %209, align 1, !tbaa !39, !range !40, !noundef !41
  %2663 = trunc i8 %2662 to i1
  br i1 %2663, label %2669, label %2664

2664:                                             ; preds = %2660
  store i32 304, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #0
  br label %2732

2665:                                             ; preds = %2684, %2669, %2656
  %2666 = landingpad { ptr, i32 }
          cleanup
  %2667 = extractvalue { ptr, i32 } %2666, 0
  store ptr %2667, ptr %9, align 8
  %2668 = extractvalue { ptr, i32 } %2666, 1
  store i32 %2668, ptr %10, align 4
  br label %2731

2669:                                             ; preds = %2660
  %2670 = load ptr, ptr %210, align 8, !tbaa !5
  %2671 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Value", ptr %2670, i32 0, i32 0
  %2672 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern5Value8is_NamedEv(ptr noundef nonnull align 8 dereferenceable(104) %2671)
          to label %2673 unwind label %2665

2673:                                             ; preds = %2669
  br i1 %2672, label %2700, label %2674

2674:                                             ; preds = %2673
  br label %2675

2675:                                             ; preds = %2674
  call void @llvm.lifetime.start.p0(i64 8, ptr %211) #0
  %2676 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull align 8 dereferenceable(8) %2676)
          to label %2677 unwind label %2685

2677:                                             ; preds = %2675
  call void @llvm.lifetime.start.p0(i64 16, ptr %213) #0
  %2678 = getelementptr inbounds %class.anon.406, ptr %213, i32 0, i32 0
  %2679 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %2679, ptr %2678, align 8, !tbaa !5
  %2680 = getelementptr inbounds %class.anon.406, ptr %213, i32 0, i32 1
  %2681 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2681, ptr %2680, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %212, ptr noundef nonnull align 8 dereferenceable(16) %213) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef %212)
          to label %2682 unwind label %2689

2682:                                             ; preds = %2677
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %213) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #0
  %2683 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2683, ptr noundef @.str.10)
          to label %2684 unwind label %2694

2684:                                             ; preds = %2682
  invoke void @__cxa_throw(ptr %2683, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %2665

2685:                                             ; preds = %2675
  %2686 = landingpad { ptr, i32 }
          cleanup
  %2687 = extractvalue { ptr, i32 } %2686, 0
  store ptr %2687, ptr %9, align 8
  %2688 = extractvalue { ptr, i32 } %2686, 1
  store i32 %2688, ptr %10, align 4
  br label %2693

2689:                                             ; preds = %2677
  %2690 = landingpad { ptr, i32 }
          cleanup
  %2691 = extractvalue { ptr, i32 } %2690, 0
  store ptr %2691, ptr %9, align 8
  %2692 = extractvalue { ptr, i32 } %2690, 1
  store i32 %2692, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %213) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #0
  br label %2693

2693:                                             ; preds = %2689, %2685
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #0
  br label %2731

2694:                                             ; preds = %2682
  %2695 = landingpad { ptr, i32 }
          cleanup
  %2696 = extractvalue { ptr, i32 } %2695, 0
  store ptr %2696, ptr %9, align 8
  %2697 = extractvalue { ptr, i32 } %2695, 1
  store i32 %2697, ptr %10, align 4
  call void @__cxa_free_exception(ptr %2683) #0
  br label %2731

2698:                                             ; No predecessors!
  br label %2699

2699:                                             ; preds = %2698
  br label %2700

2700:                                             ; preds = %2699, %2673
  br label %2701

2701:                                             ; preds = %2700
  call void @llvm.lifetime.start.p0(i64 8, ptr %214) #0
  store ptr @__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE, ptr %214, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %215) #0
  %2702 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull align 8 dereferenceable(8) %2702)
          to label %2703 unwind label %2710

2703:                                             ; preds = %2701
  call void @llvm.lifetime.start.p0(i64 16, ptr %217) #0
  %2704 = getelementptr inbounds %class.anon.407, ptr %217, i32 0, i32 0
  store ptr %214, ptr %2704, align 8, !tbaa !5
  %2705 = getelementptr inbounds %class.anon.407, ptr %217, i32 0, i32 1
  %2706 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2706, ptr %2705, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %216, ptr noundef nonnull align 8 dereferenceable(16) %217) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef %216)
          to label %2707 unwind label %2714

2707:                                             ; preds = %2703
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %217) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #0
  %2708 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2708, ptr noundef @.str.5)
          to label %2709 unwind label %2719

2709:                                             ; preds = %2707
  invoke void @__cxa_throw(ptr %2708, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %2723

2710:                                             ; preds = %2701
  %2711 = landingpad { ptr, i32 }
          cleanup
  %2712 = extractvalue { ptr, i32 } %2711, 0
  store ptr %2712, ptr %9, align 8
  %2713 = extractvalue { ptr, i32 } %2711, 1
  store i32 %2713, ptr %10, align 4
  br label %2718

2714:                                             ; preds = %2703
  %2715 = landingpad { ptr, i32 }
          cleanup
  %2716 = extractvalue { ptr, i32 } %2715, 0
  store ptr %2716, ptr %9, align 8
  %2717 = extractvalue { ptr, i32 } %2715, 1
  store i32 %2717, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %217) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #0
  br label %2718

2718:                                             ; preds = %2714, %2710
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #0
  br label %2727

2719:                                             ; preds = %2707
  %2720 = landingpad { ptr, i32 }
          cleanup
  %2721 = extractvalue { ptr, i32 } %2720, 0
  store ptr %2721, ptr %9, align 8
  %2722 = extractvalue { ptr, i32 } %2720, 1
  store i32 %2722, ptr %10, align 4
  call void @__cxa_free_exception(ptr %2708) #0
  br label %2727

2723:                                             ; preds = %2709
  %2724 = landingpad { ptr, i32 }
          cleanup
  %2725 = extractvalue { ptr, i32 } %2724, 0
  store ptr %2725, ptr %9, align 8
  %2726 = extractvalue { ptr, i32 } %2724, 1
  store i32 %2726, ptr %10, align 4
  br label %2727

2727:                                             ; preds = %2723, %2719, %2718
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #0
  br label %2731

2728:                                             ; No predecessors!
  br label %2729

2729:                                             ; preds = %2728
  br label %2730

2730:                                             ; preds = %2729
  store i8 0, ptr %209, align 1, !tbaa !39
  br label %2660, !llvm.loop !139

2731:                                             ; preds = %2727, %2694, %2693, %2665
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %209) #0
  br label %3088

2732:                                             ; preds = %2664
  br label %2733

2733:                                             ; preds = %2732
  store i8 0, ptr %209, align 1, !tbaa !39
  br label %2652, !llvm.loop !140

2734:                                             ; preds = %2655
  br label %3086

2735:                                             ; preds = %2589
  call void @llvm.lifetime.start.p0(i64 1, ptr %218) #0
  store i8 1, ptr %218, align 1, !tbaa !39
  br label %2736

2736:                                             ; preds = %2784, %2735
  %2737 = load i8, ptr %218, align 1, !tbaa !39, !range !40, !noundef !41
  %2738 = trunc i8 %2737 to i1
  br i1 %2738, label %2740, label %2739

2739:                                             ; preds = %2736
  store i32 311, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #0
  br label %2785

2740:                                             ; preds = %2736
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #0
  %2741 = load ptr, ptr %201, align 8, !tbaa !5
  %2742 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR7Pattern4Data12as_PathValueEv(ptr noundef nonnull align 8 dereferenceable(184) %2741)
          to label %2743 unwind label %2749

2743:                                             ; preds = %2740
  store ptr %2742, ptr %219, align 8, !tbaa !5
  br label %2744

2744:                                             ; preds = %2772, %2743
  %2745 = load ptr, ptr %219, align 8, !tbaa !5
  %2746 = load i8, ptr %218, align 1, !tbaa !39, !range !40, !noundef !41
  %2747 = trunc i8 %2746 to i1
  br i1 %2747, label %2753, label %2748

2748:                                             ; preds = %2744
  store i32 314, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #0
  br label %2783

2749:                                             ; preds = %2761, %2753, %2740
  %2750 = landingpad { ptr, i32 }
          cleanup
  %2751 = extractvalue { ptr, i32 } %2750, 0
  store ptr %2751, ptr %9, align 8
  %2752 = extractvalue { ptr, i32 } %2750, 1
  store i32 %2752, ptr %10, align 4
  br label %2782

2753:                                             ; preds = %2744
  %2754 = load ptr, ptr %219, align 8, !tbaa !5
  %2755 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathValue", ptr %2754, i32 0, i32 1
  %2756 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern11PathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %2755)
          to label %2757 unwind label %2749

2757:                                             ; preds = %2753
  br i1 %2756, label %2758, label %2759

2758:                                             ; preds = %2757
  br label %2761

2759:                                             ; preds = %2757
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.17, i32 noundef 1669, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2760:                                             ; No predecessors!
  br label %2761

2761:                                             ; preds = %2760, %2758
  %2762 = getelementptr inbounds %"struct.PatternRule::Data_Variant", ptr %221, i32 0, i32 0
  %2763 = load ptr, ptr %219, align 8, !tbaa !5
  %2764 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathValue", ptr %2763, i32 0, i32 1
  %2765 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR7Pattern11PathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %2764)
          to label %2766 unwind label %2749

2766:                                             ; preds = %2761
  %2767 = getelementptr inbounds %"struct.HIR::Pattern::PathBinding::Data_Enum", ptr %2765, i32 0, i32 1
  %2768 = load i32, ptr %2767, align 8, !tbaa !141
  store i32 %2768, ptr %2762, align 8, !tbaa !143
  %2769 = getelementptr inbounds %"struct.PatternRule::Data_Variant", ptr %221, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %2769, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorI11PatternRuleSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2769) #0
  invoke void @_ZN11PatternRule12make_VariantENS_12Data_VariantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %220, ptr noundef %221)
          to label %2770 unwind label %2773

2770:                                             ; preds = %2766
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %220)
          to label %2771 unwind label %2777

2771:                                             ; preds = %2770
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %220) #0
  call void @_ZN11PatternRule12Data_VariantD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #0
  br label %2772

2772:                                             ; preds = %2771
  store i8 0, ptr %218, align 1, !tbaa !39
  br label %2744, !llvm.loop !149

2773:                                             ; preds = %2766
  %2774 = landingpad { ptr, i32 }
          cleanup
  %2775 = extractvalue { ptr, i32 } %2774, 0
  store ptr %2775, ptr %9, align 8
  %2776 = extractvalue { ptr, i32 } %2774, 1
  store i32 %2776, ptr %10, align 4
  br label %2781

2777:                                             ; preds = %2770
  %2778 = landingpad { ptr, i32 }
          cleanup
  %2779 = extractvalue { ptr, i32 } %2778, 0
  store ptr %2779, ptr %9, align 8
  %2780 = extractvalue { ptr, i32 } %2778, 1
  store i32 %2780, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %220) #0
  br label %2781

2781:                                             ; preds = %2777, %2773
  call void @_ZN11PatternRule12Data_VariantD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #0
  br label %2782

2782:                                             ; preds = %2781, %2749
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %218) #0
  br label %3088

2783:                                             ; preds = %2748
  br label %2784

2784:                                             ; preds = %2783
  store i8 0, ptr %218, align 1, !tbaa !39
  br label %2736, !llvm.loop !150

2785:                                             ; preds = %2739
  br label %3086

2786:                                             ; preds = %2589
  call void @llvm.lifetime.start.p0(i64 1, ptr %222) #0
  store i8 1, ptr %222, align 1, !tbaa !39
  br label %2787

2787:                                             ; preds = %2875, %2786
  %2788 = load i8, ptr %222, align 1, !tbaa !39, !range !40, !noundef !41
  %2789 = trunc i8 %2788 to i1
  br i1 %2789, label %2791, label %2790

2790:                                             ; preds = %2787
  store i32 317, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %222) #0
  br label %2876

2791:                                             ; preds = %2787
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #0
  %2792 = load ptr, ptr %201, align 8, !tbaa !5
  %2793 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR7Pattern4Data12as_PathTupleEv(ptr noundef nonnull align 8 dereferenceable(184) %2792)
          to label %2794 unwind label %2800

2794:                                             ; preds = %2791
  store ptr %2793, ptr %223, align 8, !tbaa !5
  br label %2795

2795:                                             ; preds = %2844, %2794
  %2796 = load ptr, ptr %223, align 8, !tbaa !5
  %2797 = load i8, ptr %222, align 1, !tbaa !39, !range !40, !noundef !41
  %2798 = trunc i8 %2797 to i1
  br i1 %2798, label %2804, label %2799

2799:                                             ; preds = %2795
  store i32 320, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #0
  br label %2874

2800:                                             ; preds = %2804, %2791
  %2801 = landingpad { ptr, i32 }
          cleanup
  %2802 = extractvalue { ptr, i32 } %2801, 0
  store ptr %2802, ptr %9, align 8
  %2803 = extractvalue { ptr, i32 } %2801, 1
  store i32 %2803, ptr %10, align 4
  br label %2873

2804:                                             ; preds = %2795
  %2805 = load ptr, ptr %223, align 8, !tbaa !5
  %2806 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathTuple", ptr %2805, i32 0, i32 1
  %2807 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern11PathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %2806)
          to label %2808 unwind label %2800

2808:                                             ; preds = %2804
  br i1 %2807, label %2809, label %2810

2809:                                             ; preds = %2808
  br label %2812

2810:                                             ; preds = %2808
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.17, i32 noundef 1673, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2811:                                             ; No predecessors!
  br label %2812

2812:                                             ; preds = %2811, %2809
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #0
  %2813 = load ptr, ptr %223, align 8, !tbaa !5
  %2814 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathTuple", ptr %2813, i32 0, i32 1
  %2815 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR7Pattern11PathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %2814)
          to label %2816 unwind label %2845

2816:                                             ; preds = %2812
  store ptr %2815, ptr %224, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 80, ptr %225) #0
  %2817 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 0
  %2818 = load ptr, ptr %2817, align 8, !tbaa !151
  invoke void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80) %225, ptr noundef nonnull align 8 dereferenceable(424) %2818)
          to label %2819 unwind label %2849

2819:                                             ; preds = %2816
  %2820 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %2821 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %225, i32 0, i32 5
  %2822 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12field_path_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %2821, ptr noundef nonnull align 8 dereferenceable(24) %2820)
          to label %2823 unwind label %2853

2823:                                             ; preds = %2819
  %2824 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %225, i32 0, i32 5
  %2825 = load ptr, ptr %224, align 8, !tbaa !5
  %2826 = getelementptr inbounds %"struct.HIR::Pattern::PathBinding::Data_Enum", ptr %2825, i32 0, i32 1
  %2827 = load i32, ptr %2826, align 8, !tbaa !141
  %2828 = trunc i32 %2827 to i8
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %2824, i8 noundef zeroext %2828)
          to label %2829 unwind label %2853

2829:                                             ; preds = %2823
  %2830 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %225, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %2830, i8 noundef zeroext 0)
          to label %2831 unwind label %2853

2831:                                             ; preds = %2829
  %2832 = load ptr, ptr %6, align 8, !tbaa !5
  %2833 = load ptr, ptr %223, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFRKN3HIR7TypeRefES3_EEC2IRZN21PatternRulesetBuilder11append_fromERK4SpanRKNS0_7PatternES3_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %226, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %2834 unwind label %2853

2834:                                             ; preds = %2831
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH18push_pattern_tupleERS_S2_RKNS4_4Data14Data_PathTupleESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80) %225, ptr noundef nonnull align 8 dereferenceable(8) %2832, ptr noundef nonnull align 8 dereferenceable(172) %2833, ptr noundef %226)
          to label %2835 unwind label %2857

2835:                                             ; preds = %2834
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #0
  %2836 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %225, i32 0, i32 2
  %2837 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2836) #0
  call void @llvm.lifetime.start.p0(i64 24, ptr %228) #0
  %2838 = getelementptr inbounds %class.anon.408, ptr %228, i32 0, i32 0
  store ptr %225, ptr %2838, align 8, !tbaa !5
  %2839 = getelementptr inbounds %class.anon.408, ptr %228, i32 0, i32 1
  store ptr %419, ptr %2839, align 8, !tbaa !152
  %2840 = getelementptr inbounds %class.anon.408, ptr %228, i32 0, i32 2
  %2841 = load ptr, ptr %224, align 8, !tbaa !5
  store ptr %2841, ptr %2840, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvmEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS7_7TypeRefEE4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %227, ptr noundef nonnull align 8 dereferenceable(24) %228)
          to label %2842 unwind label %2861

2842:                                             ; preds = %2835
  invoke void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80) %419, i64 noundef %2837, ptr noundef %227)
          to label %2843 unwind label %2865

2843:                                             ; preds = %2842
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %228) #0
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %225) #0
  call void @llvm.lifetime.end.p0(i64 80, ptr %225) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #0
  br label %2844

2844:                                             ; preds = %2843
  store i8 0, ptr %222, align 1, !tbaa !39
  br label %2795, !llvm.loop !154

2845:                                             ; preds = %2812
  %2846 = landingpad { ptr, i32 }
          cleanup
  %2847 = extractvalue { ptr, i32 } %2846, 0
  store ptr %2847, ptr %9, align 8
  %2848 = extractvalue { ptr, i32 } %2846, 1
  store i32 %2848, ptr %10, align 4
  br label %2872

2849:                                             ; preds = %2816
  %2850 = landingpad { ptr, i32 }
          cleanup
  %2851 = extractvalue { ptr, i32 } %2850, 0
  store ptr %2851, ptr %9, align 8
  %2852 = extractvalue { ptr, i32 } %2850, 1
  store i32 %2852, ptr %10, align 4
  br label %2871

2853:                                             ; preds = %2831, %2829, %2823, %2819
  %2854 = landingpad { ptr, i32 }
          cleanup
  %2855 = extractvalue { ptr, i32 } %2854, 0
  store ptr %2855, ptr %9, align 8
  %2856 = extractvalue { ptr, i32 } %2854, 1
  store i32 %2856, ptr %10, align 4
  br label %2870

2857:                                             ; preds = %2834
  %2858 = landingpad { ptr, i32 }
          cleanup
  %2859 = extractvalue { ptr, i32 } %2858, 0
  store ptr %2859, ptr %9, align 8
  %2860 = extractvalue { ptr, i32 } %2858, 1
  store i32 %2860, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #0
  br label %2870

2861:                                             ; preds = %2835
  %2862 = landingpad { ptr, i32 }
          cleanup
  %2863 = extractvalue { ptr, i32 } %2862, 0
  store ptr %2863, ptr %9, align 8
  %2864 = extractvalue { ptr, i32 } %2862, 1
  store i32 %2864, ptr %10, align 4
  br label %2869

2865:                                             ; preds = %2842
  %2866 = landingpad { ptr, i32 }
          cleanup
  %2867 = extractvalue { ptr, i32 } %2866, 0
  store ptr %2867, ptr %9, align 8
  %2868 = extractvalue { ptr, i32 } %2866, 1
  store i32 %2868, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %227) #0
  br label %2869

2869:                                             ; preds = %2865, %2861
  call void @llvm.lifetime.end.p0(i64 24, ptr %228) #0
  br label %2870

2870:                                             ; preds = %2869, %2857, %2853
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %225) #0
  br label %2871

2871:                                             ; preds = %2870, %2849
  call void @llvm.lifetime.end.p0(i64 80, ptr %225) #0
  br label %2872

2872:                                             ; preds = %2871, %2845
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #0
  br label %2873

2873:                                             ; preds = %2872, %2800
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %222) #0
  br label %3088

2874:                                             ; preds = %2799
  br label %2875

2875:                                             ; preds = %2874
  store i8 0, ptr %222, align 1, !tbaa !39
  br label %2787, !llvm.loop !155

2876:                                             ; preds = %2790
  br label %3086

2877:                                             ; preds = %2589
  call void @llvm.lifetime.start.p0(i64 1, ptr %229) #0
  store i8 1, ptr %229, align 1, !tbaa !39
  br label %2878

2878:                                             ; preds = %3084, %2877
  %2879 = load i8, ptr %229, align 1, !tbaa !39, !range !40, !noundef !41
  %2880 = trunc i8 %2879 to i1
  br i1 %2880, label %2882, label %2881

2881:                                             ; preds = %2878
  store i32 323, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #0
  br label %3085

2882:                                             ; preds = %2878
  call void @llvm.lifetime.start.p0(i64 8, ptr %230) #0
  %2883 = load ptr, ptr %201, align 8, !tbaa !5
  %2884 = invoke noundef nonnull align 8 dereferenceable(137) ptr @_ZNK3HIR7Pattern4Data12as_PathNamedEv(ptr noundef nonnull align 8 dereferenceable(184) %2883)
          to label %2885 unwind label %2891

2885:                                             ; preds = %2882
  store ptr %2884, ptr %230, align 8, !tbaa !5
  br label %2886

2886:                                             ; preds = %3069, %2885
  %2887 = load ptr, ptr %230, align 8, !tbaa !5
  %2888 = load i8, ptr %229, align 1, !tbaa !39, !range !40, !noundef !41
  %2889 = trunc i8 %2888 to i1
  br i1 %2889, label %2895, label %2890

2890:                                             ; preds = %2886
  store i32 326, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #0
  br label %3083

2891:                                             ; preds = %2895, %2882
  %2892 = landingpad { ptr, i32 }
          cleanup
  %2893 = extractvalue { ptr, i32 } %2892, 0
  store ptr %2893, ptr %9, align 8
  %2894 = extractvalue { ptr, i32 } %2892, 1
  store i32 %2894, ptr %10, align 4
  br label %3082

2895:                                             ; preds = %2886
  %2896 = load ptr, ptr %230, align 8, !tbaa !5
  %2897 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathNamed", ptr %2896, i32 0, i32 1
  %2898 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern11PathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %2897)
          to label %2899 unwind label %2891

2899:                                             ; preds = %2895
  br i1 %2898, label %2900, label %2901

2900:                                             ; preds = %2899
  br label %2903

2901:                                             ; preds = %2899
  call void @__assert_fail(ptr noundef @.str.66, ptr noundef @.str.17, i32 noundef 1692, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2902:                                             ; No predecessors!
  br label %2903

2903:                                             ; preds = %2902, %2900
  call void @llvm.lifetime.start.p0(i64 8, ptr %231) #0
  %2904 = load ptr, ptr %230, align 8, !tbaa !5
  %2905 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathNamed", ptr %2904, i32 0, i32 1
  %2906 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR7Pattern11PathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %2905)
          to label %2907 unwind label %2934

2907:                                             ; preds = %2903
  store ptr %2906, ptr %231, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 80, ptr %232) #0
  %2908 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 0
  %2909 = load ptr, ptr %2908, align 8, !tbaa !151
  invoke void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80) %232, ptr noundef nonnull align 8 dereferenceable(424) %2909)
          to label %2910 unwind label %2938

2910:                                             ; preds = %2907
  %2911 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %2912 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %232, i32 0, i32 5
  %2913 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12field_path_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %2912, ptr noundef nonnull align 8 dereferenceable(24) %2911)
          to label %2914 unwind label %2942

2914:                                             ; preds = %2910
  %2915 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %232, i32 0, i32 5
  %2916 = load ptr, ptr %231, align 8, !tbaa !5
  %2917 = getelementptr inbounds %"struct.HIR::Pattern::PathBinding::Data_Enum", ptr %2916, i32 0, i32 1
  %2918 = load i32, ptr %2917, align 8, !tbaa !141
  %2919 = trunc i32 %2918 to i8
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %2915, i8 noundef zeroext %2919)
          to label %2920 unwind label %2942

2920:                                             ; preds = %2914
  %2921 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %232, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %2921, i8 noundef zeroext 0)
          to label %2922 unwind label %2942

2922:                                             ; preds = %2920
  %2923 = load ptr, ptr %231, align 8, !tbaa !5
  %2924 = getelementptr inbounds %"struct.HIR::Pattern::PathBinding::Data_Enum", ptr %2923, i32 0, i32 0
  %2925 = load ptr, ptr %2924, align 8, !tbaa !156
  %2926 = invoke noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200) %2925)
          to label %2927 unwind label %2942

2927:                                             ; preds = %2922
  br i1 %2926, label %2928, label %2948

2928:                                             ; preds = %2927
  %2929 = load ptr, ptr %230, align 8, !tbaa !5
  %2930 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathNamed", ptr %2929, i32 0, i32 2
  %2931 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairI8RcStringN3HIR7PatternEESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %2930) #0
  br i1 %2931, label %2932, label %2933

2932:                                             ; preds = %2928
  br label %2947

2933:                                             ; preds = %2928
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.17, i32 noundef 1702, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2934:                                             ; preds = %2903
  %2935 = landingpad { ptr, i32 }
          cleanup
  %2936 = extractvalue { ptr, i32 } %2935, 0
  store ptr %2936, ptr %9, align 8
  %2937 = extractvalue { ptr, i32 } %2935, 1
  store i32 %2937, ptr %10, align 4
  br label %3081

2938:                                             ; preds = %2907
  %2939 = landingpad { ptr, i32 }
          cleanup
  %2940 = extractvalue { ptr, i32 } %2939, 0
  store ptr %2940, ptr %9, align 8
  %2941 = extractvalue { ptr, i32 } %2939, 1
  store i32 %2941, ptr %10, align 4
  br label %3080

2942:                                             ; preds = %3049, %2988, %2982, %2954, %2948, %2922, %2920, %2914, %2910
  %2943 = landingpad { ptr, i32 }
          cleanup
  %2944 = extractvalue { ptr, i32 } %2943, 0
  store ptr %2944, ptr %9, align 8
  %2945 = extractvalue { ptr, i32 } %2943, 1
  store i32 %2945, ptr %10, align 4
  br label %3079

2946:                                             ; No predecessors!
  br label %2947

2947:                                             ; preds = %2946, %2932
  br label %3060

2948:                                             ; preds = %2927
  %2949 = load ptr, ptr %231, align 8, !tbaa !5
  %2950 = getelementptr inbounds %"struct.HIR::Pattern::PathBinding::Data_Enum", ptr %2949, i32 0, i32 0
  %2951 = load ptr, ptr %2950, align 8, !tbaa !156
  %2952 = getelementptr inbounds %"class.HIR::Enum", ptr %2951, i32 0, i32 3
  %2953 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %2952)
          to label %2954 unwind label %2942

2954:                                             ; preds = %2948
  %2955 = load ptr, ptr %231, align 8, !tbaa !5
  %2956 = getelementptr inbounds %"struct.HIR::Pattern::PathBinding::Data_Enum", ptr %2955, i32 0, i32 1
  %2957 = load i32, ptr %2956, align 8, !tbaa !141
  %2958 = zext i32 %2957 to i64
  %2959 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2953, i64 noundef %2958)
          to label %2960 unwind label %2942

2960:                                             ; preds = %2954
  %2961 = getelementptr inbounds %"struct.HIR::Enum::DataVariant", ptr %2959, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %233) #0
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %233)
          to label %2962 unwind label %2971

2962:                                             ; preds = %2960
  %2963 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2961, ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %2964 unwind label %2975

2964:                                             ; preds = %2962
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #0
  br i1 %2963, label %2965, label %2982

2965:                                             ; preds = %2964
  %2966 = load ptr, ptr %230, align 8, !tbaa !5
  %2967 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathNamed", ptr %2966, i32 0, i32 2
  %2968 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairI8RcStringN3HIR7PatternEESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %2967) #0
  br i1 %2968, label %2969, label %2970

2969:                                             ; preds = %2965
  br label %2981

2970:                                             ; preds = %2965
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.17, i32 noundef 1705, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

2971:                                             ; preds = %2960
  %2972 = landingpad { ptr, i32 }
          cleanup
  %2973 = extractvalue { ptr, i32 } %2972, 0
  store ptr %2973, ptr %9, align 8
  %2974 = extractvalue { ptr, i32 } %2972, 1
  store i32 %2974, ptr %10, align 4
  br label %2979

2975:                                             ; preds = %2962
  %2976 = landingpad { ptr, i32 }
          cleanup
  %2977 = extractvalue { ptr, i32 } %2976, 0
  store ptr %2977, ptr %9, align 8
  %2978 = extractvalue { ptr, i32 } %2976, 1
  store i32 %2978, ptr %10, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #0
  br label %2979

2979:                                             ; preds = %2975, %2971
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #0
  br label %3079

2980:                                             ; No predecessors!
  br label %2981

2981:                                             ; preds = %2980, %2969
  br label %3059

2982:                                             ; preds = %2964
  %2983 = load ptr, ptr %231, align 8, !tbaa !5
  %2984 = getelementptr inbounds %"struct.HIR::Pattern::PathBinding::Data_Enum", ptr %2983, i32 0, i32 0
  %2985 = load ptr, ptr %2984, align 8, !tbaa !156
  %2986 = getelementptr inbounds %"class.HIR::Enum", ptr %2985, i32 0, i32 3
  %2987 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %2986)
          to label %2988 unwind label %2942

2988:                                             ; preds = %2982
  %2989 = load ptr, ptr %231, align 8, !tbaa !5
  %2990 = getelementptr inbounds %"struct.HIR::Pattern::PathBinding::Data_Enum", ptr %2989, i32 0, i32 1
  %2991 = load i32, ptr %2990, align 8, !tbaa !141
  %2992 = zext i32 %2991 to i64
  %2993 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %2987, i64 noundef %2992)
          to label %2994 unwind label %2942

2994:                                             ; preds = %2988
  %2995 = getelementptr inbounds %"struct.HIR::Enum::DataVariant", ptr %2993, i32 0, i32 1
  %2996 = load i8, ptr %2995, align 8, !tbaa !157, !range !40, !noundef !41
  %2997 = trunc i8 %2996 to i1
  br i1 %2997, label %3049, label %2998

2998:                                             ; preds = %2994
  %2999 = load ptr, ptr %230, align 8, !tbaa !5
  %3000 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathNamed", ptr %2999, i32 0, i32 2
  %3001 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairI8RcStringN3HIR7PatternEESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %3000) #0
  br i1 %3001, label %3002, label %3003

3002:                                             ; preds = %2998
  br label %3005

3003:                                             ; preds = %2998
  call void @__assert_fail(ptr noundef @.str.67, ptr noundef @.str.17, i32 noundef 1708, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

3004:                                             ; No predecessors!
  br label %3005

3005:                                             ; preds = %3004, %3002
  call void @llvm.lifetime.start.p0(i64 8, ptr %234) #0
  %3006 = load ptr, ptr %6, align 8, !tbaa !5
  %3007 = load ptr, ptr %230, align 8, !tbaa !5
  %3008 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathNamed", ptr %3007, i32 0, i32 0
  %3009 = load ptr, ptr %230, align 8, !tbaa !5
  %3010 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_PathNamed", ptr %3009, i32 0, i32 1
  %3011 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR17pattern_get_tupleERK4SpanRKNS_4PathERKNS_7Pattern11PathBindingE(ptr noundef nonnull align 8 dereferenceable(8) %3006, ptr noundef nonnull align 8 dereferenceable(88) %3008, ptr noundef nonnull align 8 dereferenceable(24) %3010)
          to label %3012 unwind label %3020

3012:                                             ; preds = %3005
  store ptr %3011, ptr %234, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %235) #0
  store i32 0, ptr %235, align 4, !tbaa !69
  br label %3013

3013:                                             ; preds = %3040, %3012
  %3014 = load i32, ptr %235, align 4, !tbaa !69
  %3015 = zext i32 %3014 to i64
  %3016 = load ptr, ptr %234, align 8, !tbaa !5
  %3017 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3016) #0
  %3018 = icmp ult i64 %3015, %3017
  br i1 %3018, label %3024, label %3019

3019:                                             ; preds = %3013
  store i32 329, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %235) #0
  br label %3047

3020:                                             ; preds = %3005
  %3021 = landingpad { ptr, i32 }
          cleanup
  %3022 = extractvalue { ptr, i32 } %3021, 0
  store ptr %3022, ptr %9, align 8
  %3023 = extractvalue { ptr, i32 } %3021, 1
  store i32 %3023, ptr %10, align 4
  br label %3048

3024:                                             ; preds = %3013
  call void @llvm.lifetime.start.p0(i64 8, ptr %236) #0
  %3025 = load ptr, ptr %234, align 8, !tbaa !5
  %3026 = load i32, ptr %235, align 4, !tbaa !69
  %3027 = zext i32 %3026 to i64
  %3028 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3025, i64 noundef %3027) #0
  store ptr %3028, ptr %236, align 8, !tbaa !5
  %3029 = load ptr, ptr %6, align 8, !tbaa !5
  %3030 = load ptr, ptr %236, align 8, !tbaa !5
  %3031 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %3030, i32 0, i32 1
  %3032 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEENK4$_13clIS7_EES9_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(8) %3031)
          to label %3033 unwind label %3043

3033:                                             ; preds = %3024
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %232, ptr noundef nonnull align 8 dereferenceable(8) %3029, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %3032)
          to label %3034 unwind label %3043

3034:                                             ; preds = %3033
  %3035 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %232, i32 0, i32 5
  %3036 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %3035)
          to label %3037 unwind label %3043

3037:                                             ; preds = %3034
  %3038 = load i8, ptr %3036, align 1, !tbaa !68
  %3039 = add i8 %3038, 1
  store i8 %3039, ptr %3036, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #0
  br label %3040

3040:                                             ; preds = %3037
  %3041 = load i32, ptr %235, align 4, !tbaa !69
  %3042 = add i32 %3041, 1
  store i32 %3042, ptr %235, align 4, !tbaa !69
  br label %3013, !llvm.loop !160

3043:                                             ; preds = %3034, %3033, %3024
  %3044 = landingpad { ptr, i32 }
          cleanup
  %3045 = extractvalue { ptr, i32 } %3044, 0
  store ptr %3045, ptr %9, align 8
  %3046 = extractvalue { ptr, i32 } %3044, 1
  store i32 %3046, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %235) #0
  br label %3048

3047:                                             ; preds = %3019
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #0
  br label %3058

3048:                                             ; preds = %3043, %3020
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #0
  br label %3079

3049:                                             ; preds = %2994
  %3050 = load ptr, ptr %6, align 8, !tbaa !5
  %3051 = load ptr, ptr %230, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFRKN3HIR7TypeRefES3_EEC2IRZN21PatternRulesetBuilder11append_fromERK4SpanRKNS0_7PatternES3_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %237, ptr noundef nonnull align 8 dereferenceable(32) %89)
          to label %3052 unwind label %2942

3052:                                             ; preds = %3049
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH19push_pattern_structERS_S2_RKNS4_4Data14Data_PathNamedESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80) %232, ptr noundef nonnull align 8 dereferenceable(8) %3050, ptr noundef nonnull align 8 dereferenceable(137) %3051, ptr noundef %237)
          to label %3053 unwind label %3054

3053:                                             ; preds = %3052
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #0
  br label %3058

3054:                                             ; preds = %3052
  %3055 = landingpad { ptr, i32 }
          cleanup
  %3056 = extractvalue { ptr, i32 } %3055, 0
  store ptr %3056, ptr %9, align 8
  %3057 = extractvalue { ptr, i32 } %3055, 1
  store i32 %3057, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #0
  br label %3079

3058:                                             ; preds = %3053, %3047
  br label %3059

3059:                                             ; preds = %3058, %2981
  br label %3060

3060:                                             ; preds = %3059, %2947
  %3061 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %232, i32 0, i32 2
  %3062 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3061) #0
  call void @llvm.lifetime.start.p0(i64 24, ptr %239) #0
  %3063 = getelementptr inbounds %class.anon.419, ptr %239, i32 0, i32 0
  store ptr %232, ptr %3063, align 8, !tbaa !5
  %3064 = getelementptr inbounds %class.anon.419, ptr %239, i32 0, i32 1
  store ptr %419, ptr %3064, align 8, !tbaa !161
  %3065 = getelementptr inbounds %class.anon.419, ptr %239, i32 0, i32 2
  %3066 = load ptr, ptr %231, align 8, !tbaa !5
  store ptr %3066, ptr %3065, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvmEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS7_7TypeRefEE4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %238, ptr noundef nonnull align 8 dereferenceable(24) %239)
          to label %3067 unwind label %3070

3067:                                             ; preds = %3060
  invoke void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80) %419, i64 noundef %3062, ptr noundef %238)
          to label %3068 unwind label %3074

3068:                                             ; preds = %3067
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %239) #0
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %232) #0
  call void @llvm.lifetime.end.p0(i64 80, ptr %232) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #0
  br label %3069

3069:                                             ; preds = %3068
  store i8 0, ptr %229, align 1, !tbaa !39
  br label %2886, !llvm.loop !163

3070:                                             ; preds = %3060
  %3071 = landingpad { ptr, i32 }
          cleanup
  %3072 = extractvalue { ptr, i32 } %3071, 0
  store ptr %3072, ptr %9, align 8
  %3073 = extractvalue { ptr, i32 } %3071, 1
  store i32 %3073, ptr %10, align 4
  br label %3078

3074:                                             ; preds = %3067
  %3075 = landingpad { ptr, i32 }
          cleanup
  %3076 = extractvalue { ptr, i32 } %3075, 0
  store ptr %3076, ptr %9, align 8
  %3077 = extractvalue { ptr, i32 } %3075, 1
  store i32 %3077, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %238) #0
  br label %3078

3078:                                             ; preds = %3074, %3070
  call void @llvm.lifetime.end.p0(i64 24, ptr %239) #0
  br label %3079

3079:                                             ; preds = %3078, %3054, %3048, %2979, %2942
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %232) #0
  br label %3080

3080:                                             ; preds = %3079, %2938
  call void @llvm.lifetime.end.p0(i64 80, ptr %232) #0
  br label %3081

3081:                                             ; preds = %3080, %2934
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #0
  br label %3082

3082:                                             ; preds = %3081, %2891
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %229) #0
  br label %3088

3083:                                             ; preds = %2890
  br label %3084

3084:                                             ; preds = %3083
  store i8 0, ptr %229, align 1, !tbaa !39
  br label %2878, !llvm.loop !164

3085:                                             ; preds = %2881
  br label %3086

3086:                                             ; preds = %3085, %2876, %2785, %2734, %2650, %2620
  br label %3087

3087:                                             ; preds = %3086
  store i8 0, ptr %200, align 1, !tbaa !39
  br label %2582, !llvm.loop !165

3088:                                             ; preds = %3082, %2873, %2782, %2731, %2647, %2615, %2614, %2590
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #0
  br label %3093

3089:                                             ; preds = %2585
  br label %3090

3090:                                             ; preds = %3089
  store i8 0, ptr %200, align 1, !tbaa !39
  br label %2575, !llvm.loop !166

3091:                                             ; preds = %2578
  br label %3092

3092:                                             ; preds = %3091
  store i8 0, ptr %198, align 1, !tbaa !39
  br label %2565, !llvm.loop !167

3093:                                             ; preds = %3088, %2570
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %198) #0
  br label %3099

3094:                                             ; preds = %2569
  br label %3095

3095:                                             ; preds = %3094
  store i8 0, ptr %198, align 1, !tbaa !39
  br label %2557, !llvm.loop !168

3096:                                             ; preds = %2560
  br label %3097

3097:                                             ; preds = %3096, %2555, %2449, %2331, %1532, %1461, %1409
  br label %3098

3098:                                             ; preds = %3097
  store i8 0, ptr %90, align 1, !tbaa !39
  br label %1402, !llvm.loop !169

3099:                                             ; preds = %3093, %2552, %2446, %2328, %1529, %1458, %1410
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #0
  br label %3104

3100:                                             ; preds = %1405
  br label %3101

3101:                                             ; preds = %3100
  store i8 0, ptr %90, align 1, !tbaa !39
  br label %1391, !llvm.loop !170

3102:                                             ; preds = %1394
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #0
  br label %3103

3103:                                             ; preds = %3102
  store i8 0, ptr %86, align 1, !tbaa !39
  br label %1374, !llvm.loop !171

3104:                                             ; preds = %3099, %1395
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #0
  br label %3105

3105:                                             ; preds = %3104, %1379
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #0
  br label %4877

3106:                                             ; preds = %1378
  br label %3107

3107:                                             ; preds = %3106
  store i8 0, ptr %86, align 1, !tbaa !39
  br label %1366, !llvm.loop !172

3108:                                             ; preds = %1369
  br label %4875

3109:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %240) #0
  store i8 1, ptr %240, align 1, !tbaa !39
  br label %3110

3110:                                             ; preds = %3180, %3109
  %3111 = load i8, ptr %240, align 1, !tbaa !39, !range !40, !noundef !41
  %3112 = trunc i8 %3111 to i1
  br i1 %3112, label %3114, label %3113

3113:                                             ; preds = %3110
  store i32 332, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #0
  br label %3181

3114:                                             ; preds = %3110
  call void @llvm.lifetime.start.p0(i64 8, ptr %241) #0
  %3115 = load ptr, ptr %41, align 8, !tbaa !5
  %3116 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %3115)
          to label %3117 unwind label %3123

3117:                                             ; preds = %3114
  store ptr %3116, ptr %241, align 8, !tbaa !5
  br label %3118

3118:                                             ; preds = %3177, %3117
  %3119 = load ptr, ptr %241, align 8, !tbaa !5
  %3120 = load i8, ptr %240, align 1, !tbaa !39, !range !40, !noundef !41
  %3121 = trunc i8 %3120 to i1
  br i1 %3121, label %3127, label %3122

3122:                                             ; preds = %3118
  store i32 335, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #0
  br label %3179

3123:                                             ; preds = %3160, %3127, %3114
  %3124 = landingpad { ptr, i32 }
          cleanup
  %3125 = extractvalue { ptr, i32 } %3124, 0
  store ptr %3125, ptr %9, align 8
  %3126 = extractvalue { ptr, i32 } %3124, 1
  store i32 %3126, ptr %10, align 4
  br label %3178

3127:                                             ; preds = %3118
  %3128 = load ptr, ptr %7, align 8, !tbaa !5
  %3129 = getelementptr inbounds %"struct.HIR::Pattern", ptr %3128, i32 0, i32 1
  %3130 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %3129)
          to label %3131 unwind label %3123

3131:                                             ; preds = %3127
  switch i32 %3130, label %3150 [
    i32 0, label %3132
    i32 1, label %3133
  ]

3132:                                             ; preds = %3131
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1740, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

3133:                                             ; preds = %3131
  call void @llvm.lifetime.start.p0(i64 8, ptr %242) #0
  %3134 = load ptr, ptr %7, align 8, !tbaa !5
  %3135 = getelementptr inbounds %"struct.HIR::Pattern", ptr %3134, i32 0, i32 1
  %3136 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %3135)
          to label %3137 unwind label %3141

3137:                                             ; preds = %3133
  store ptr %3136, ptr %242, align 8, !tbaa !5
  %3138 = load ptr, ptr %242, align 8, !tbaa !5
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %243)
          to label %3139 unwind label %3141

3139:                                             ; preds = %3137
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %243)
          to label %3140 unwind label %3145

3140:                                             ; preds = %3139
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %243) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #0
  br label %3176

3141:                                             ; preds = %3137, %3133
  %3142 = landingpad { ptr, i32 }
          cleanup
  %3143 = extractvalue { ptr, i32 } %3142, 0
  store ptr %3143, ptr %9, align 8
  %3144 = extractvalue { ptr, i32 } %3142, 1
  store i32 %3144, ptr %10, align 4
  br label %3149

3145:                                             ; preds = %3139
  %3146 = landingpad { ptr, i32 }
          cleanup
  %3147 = extractvalue { ptr, i32 } %3146, 0
  store ptr %3147, ptr %9, align 8
  %3148 = extractvalue { ptr, i32 } %3146, 1
  store i32 %3148, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %243) #0
  br label %3149

3149:                                             ; preds = %3145, %3141
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #0
  br label %3178

3150:                                             ; preds = %3131
  br label %3151

3151:                                             ; preds = %3150
  call void @llvm.lifetime.start.p0(i64 8, ptr %245) #0
  %3152 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %245, ptr noundef nonnull align 8 dereferenceable(8) %3152)
          to label %3153 unwind label %3161

3153:                                             ; preds = %3151
  call void @llvm.lifetime.start.p0(i64 16, ptr %247) #0
  %3154 = getelementptr inbounds %class.anon.420, ptr %247, i32 0, i32 0
  %3155 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %3155, ptr %3154, align 8, !tbaa !5
  %3156 = getelementptr inbounds %class.anon.420, ptr %247, i32 0, i32 1
  %3157 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %3157, ptr %3156, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_23vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %246, ptr noundef nonnull align 8 dereferenceable(16) %247) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %245, ptr noundef %246)
          to label %3158 unwind label %3165

3158:                                             ; preds = %3153
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %246) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %247) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #0
  %3159 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3159, ptr noundef @.str.10)
          to label %3160 unwind label %3170

3160:                                             ; preds = %3158
  invoke void @__cxa_throw(ptr %3159, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3123

3161:                                             ; preds = %3151
  %3162 = landingpad { ptr, i32 }
          cleanup
  %3163 = extractvalue { ptr, i32 } %3162, 0
  store ptr %3163, ptr %9, align 8
  %3164 = extractvalue { ptr, i32 } %3162, 1
  store i32 %3164, ptr %10, align 4
  br label %3169

3165:                                             ; preds = %3153
  %3166 = landingpad { ptr, i32 }
          cleanup
  %3167 = extractvalue { ptr, i32 } %3166, 0
  store ptr %3167, ptr %9, align 8
  %3168 = extractvalue { ptr, i32 } %3166, 1
  store i32 %3168, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %246) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %247) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %245) #0
  br label %3169

3169:                                             ; preds = %3165, %3161
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #0
  br label %3178

3170:                                             ; preds = %3158
  %3171 = landingpad { ptr, i32 }
          cleanup
  %3172 = extractvalue { ptr, i32 } %3171, 0
  store ptr %3172, ptr %9, align 8
  %3173 = extractvalue { ptr, i32 } %3171, 1
  store i32 %3173, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3159) #0
  br label %3178

3174:                                             ; No predecessors!
  br label %3175

3175:                                             ; preds = %3174
  br label %3176

3176:                                             ; preds = %3175, %3140
  br label %3177

3177:                                             ; preds = %3176
  store i8 0, ptr %240, align 1, !tbaa !39
  br label %3118, !llvm.loop !173

3178:                                             ; preds = %3170, %3169, %3149, %3123
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #0
  br label %4877

3179:                                             ; preds = %3122
  br label %3180

3180:                                             ; preds = %3179
  store i8 0, ptr %240, align 1, !tbaa !39
  br label %3110, !llvm.loop !174

3181:                                             ; preds = %3113
  br label %4875

3182:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %248) #0
  store i8 1, ptr %248, align 1, !tbaa !39
  br label %3183

3183:                                             ; preds = %3232, %3182
  %3184 = load i8, ptr %248, align 1, !tbaa !39, !range !40, !noundef !41
  %3185 = trunc i8 %3184 to i1
  br i1 %3185, label %3187, label %3186

3186:                                             ; preds = %3183
  store i32 341, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #0
  br label %3233

3187:                                             ; preds = %3183
  call void @llvm.lifetime.start.p0(i64 8, ptr %249) #0
  %3188 = load ptr, ptr %41, align 8, !tbaa !5
  %3189 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %3188)
          to label %3190 unwind label %3196

3190:                                             ; preds = %3187
  store ptr %3189, ptr %249, align 8, !tbaa !5
  br label %3191

3191:                                             ; preds = %3229, %3190
  %3192 = load ptr, ptr %249, align 8, !tbaa !5
  %3193 = load i8, ptr %248, align 1, !tbaa !39, !range !40, !noundef !41
  %3194 = trunc i8 %3193 to i1
  br i1 %3194, label %3200, label %3195

3195:                                             ; preds = %3191
  store i32 344, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #0
  br label %3231

3196:                                             ; preds = %3212, %3200, %3187
  %3197 = landingpad { ptr, i32 }
          cleanup
  %3198 = extractvalue { ptr, i32 } %3197, 0
  store ptr %3198, ptr %9, align 8
  %3199 = extractvalue { ptr, i32 } %3197, 1
  store i32 %3199, ptr %10, align 4
  br label %3230

3200:                                             ; preds = %3191
  %3201 = load ptr, ptr %7, align 8, !tbaa !5
  %3202 = getelementptr inbounds %"struct.HIR::Pattern", ptr %3201, i32 0, i32 1
  %3203 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %3202)
          to label %3204 unwind label %3196

3204:                                             ; preds = %3200
  br i1 %3203, label %3205, label %3206

3205:                                             ; preds = %3204
  br label %3228

3206:                                             ; preds = %3204
  br label %3207

3207:                                             ; preds = %3206
  call void @llvm.lifetime.start.p0(i64 8, ptr %250) #0
  %3208 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef nonnull align 8 dereferenceable(8) %3208)
          to label %3209 unwind label %3213

3209:                                             ; preds = %3207
  call void @llvm.lifetime.start.p0(i64 1, ptr %252) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_24vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %251, ptr noundef nonnull align 1 dereferenceable(1) %252) #0
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %250, i32 noundef 0, ptr noundef %251)
          to label %3210 unwind label %3217

3210:                                             ; preds = %3209
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %252) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %250) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #0
  %3211 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3211, ptr noundef @.str.59)
          to label %3212 unwind label %3222

3212:                                             ; preds = %3210
  invoke void @__cxa_throw(ptr %3211, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3196

3213:                                             ; preds = %3207
  %3214 = landingpad { ptr, i32 }
          cleanup
  %3215 = extractvalue { ptr, i32 } %3214, 0
  store ptr %3215, ptr %9, align 8
  %3216 = extractvalue { ptr, i32 } %3214, 1
  store i32 %3216, ptr %10, align 4
  br label %3221

3217:                                             ; preds = %3209
  %3218 = landingpad { ptr, i32 }
          cleanup
  %3219 = extractvalue { ptr, i32 } %3218, 0
  store ptr %3219, ptr %9, align 8
  %3220 = extractvalue { ptr, i32 } %3218, 1
  store i32 %3220, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %252) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %250) #0
  br label %3221

3221:                                             ; preds = %3217, %3213
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #0
  br label %3230

3222:                                             ; preds = %3210
  %3223 = landingpad { ptr, i32 }
          cleanup
  %3224 = extractvalue { ptr, i32 } %3223, 0
  store ptr %3224, ptr %9, align 8
  %3225 = extractvalue { ptr, i32 } %3223, 1
  store i32 %3225, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3211) #0
  br label %3230

3226:                                             ; No predecessors!
  br label %3227

3227:                                             ; preds = %3226
  br label %3228

3228:                                             ; preds = %3227, %3205
  br label %3229

3229:                                             ; preds = %3228
  store i8 0, ptr %248, align 1, !tbaa !39
  br label %3191, !llvm.loop !175

3230:                                             ; preds = %3222, %3221, %3196
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #0
  br label %4877

3231:                                             ; preds = %3195
  br label %3232

3232:                                             ; preds = %3231
  store i8 0, ptr %248, align 1, !tbaa !39
  br label %3183, !llvm.loop !176

3233:                                             ; preds = %3186
  br label %4875

3234:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %253) #0
  store i8 1, ptr %253, align 1, !tbaa !39
  br label %3235

3235:                                             ; preds = %3284, %3234
  %3236 = load i8, ptr %253, align 1, !tbaa !39, !range !40, !noundef !41
  %3237 = trunc i8 %3236 to i1
  br i1 %3237, label %3239, label %3238

3238:                                             ; preds = %3235
  store i32 349, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %253) #0
  br label %3285

3239:                                             ; preds = %3235
  call void @llvm.lifetime.start.p0(i64 8, ptr %254) #0
  %3240 = load ptr, ptr %41, align 8, !tbaa !5
  %3241 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %3240)
          to label %3242 unwind label %3248

3242:                                             ; preds = %3239
  store ptr %3241, ptr %254, align 8, !tbaa !5
  br label %3243

3243:                                             ; preds = %3281, %3242
  %3244 = load ptr, ptr %254, align 8, !tbaa !5
  %3245 = load i8, ptr %253, align 1, !tbaa !39, !range !40, !noundef !41
  %3246 = trunc i8 %3245 to i1
  br i1 %3246, label %3252, label %3247

3247:                                             ; preds = %3243
  store i32 352, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #0
  br label %3283

3248:                                             ; preds = %3264, %3252, %3239
  %3249 = landingpad { ptr, i32 }
          cleanup
  %3250 = extractvalue { ptr, i32 } %3249, 0
  store ptr %3250, ptr %9, align 8
  %3251 = extractvalue { ptr, i32 } %3249, 1
  store i32 %3251, ptr %10, align 4
  br label %3282

3252:                                             ; preds = %3243
  %3253 = load ptr, ptr %7, align 8, !tbaa !5
  %3254 = getelementptr inbounds %"struct.HIR::Pattern", ptr %3253, i32 0, i32 1
  %3255 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %3254)
          to label %3256 unwind label %3248

3256:                                             ; preds = %3252
  br i1 %3255, label %3257, label %3258

3257:                                             ; preds = %3256
  br label %3280

3258:                                             ; preds = %3256
  br label %3259

3259:                                             ; preds = %3258
  call void @llvm.lifetime.start.p0(i64 8, ptr %255) #0
  %3260 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull align 8 dereferenceable(8) %3260)
          to label %3261 unwind label %3265

3261:                                             ; preds = %3259
  call void @llvm.lifetime.start.p0(i64 1, ptr %257) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_25vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %256, ptr noundef nonnull align 1 dereferenceable(1) %257) #0
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %255, i32 noundef 0, ptr noundef %256)
          to label %3262 unwind label %3269

3262:                                             ; preds = %3261
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %257) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #0
  %3263 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3263, ptr noundef @.str.59)
          to label %3264 unwind label %3274

3264:                                             ; preds = %3262
  invoke void @__cxa_throw(ptr %3263, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3248

3265:                                             ; preds = %3259
  %3266 = landingpad { ptr, i32 }
          cleanup
  %3267 = extractvalue { ptr, i32 } %3266, 0
  store ptr %3267, ptr %9, align 8
  %3268 = extractvalue { ptr, i32 } %3266, 1
  store i32 %3268, ptr %10, align 4
  br label %3273

3269:                                             ; preds = %3261
  %3270 = landingpad { ptr, i32 }
          cleanup
  %3271 = extractvalue { ptr, i32 } %3270, 0
  store ptr %3271, ptr %9, align 8
  %3272 = extractvalue { ptr, i32 } %3270, 1
  store i32 %3272, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %256) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %257) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #0
  br label %3273

3273:                                             ; preds = %3269, %3265
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #0
  br label %3282

3274:                                             ; preds = %3262
  %3275 = landingpad { ptr, i32 }
          cleanup
  %3276 = extractvalue { ptr, i32 } %3275, 0
  store ptr %3276, ptr %9, align 8
  %3277 = extractvalue { ptr, i32 } %3275, 1
  store i32 %3277, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3263) #0
  br label %3282

3278:                                             ; No predecessors!
  br label %3279

3279:                                             ; preds = %3278
  br label %3280

3280:                                             ; preds = %3279, %3257
  br label %3281

3281:                                             ; preds = %3280
  store i8 0, ptr %253, align 1, !tbaa !39
  br label %3243, !llvm.loop !177

3282:                                             ; preds = %3274, %3273, %3248
  call void @llvm.lifetime.end.p0(i64 8, ptr %254) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %253) #0
  br label %4877

3283:                                             ; preds = %3247
  br label %3284

3284:                                             ; preds = %3283
  store i8 0, ptr %253, align 1, !tbaa !39
  br label %3235, !llvm.loop !178

3285:                                             ; preds = %3238
  br label %4875

3286:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %258) #0
  store i8 1, ptr %258, align 1, !tbaa !39
  br label %3287

3287:                                             ; preds = %3842, %3286
  %3288 = load i8, ptr %258, align 1, !tbaa !39, !range !40, !noundef !41
  %3289 = trunc i8 %3288 to i1
  br i1 %3289, label %3291, label %3290

3290:                                             ; preds = %3287
  store i32 357, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %258) #0
  br label %3843

3291:                                             ; preds = %3287
  call void @llvm.lifetime.start.p0(i64 8, ptr %259) #0
  %3292 = load ptr, ptr %41, align 8, !tbaa !5
  %3293 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %3292)
          to label %3294 unwind label %3300

3294:                                             ; preds = %3291
  store ptr %3293, ptr %259, align 8, !tbaa !5
  br label %3295

3295:                                             ; preds = %3838, %3294
  %3296 = load ptr, ptr %259, align 8, !tbaa !5
  %3297 = load i8, ptr %258, align 1, !tbaa !39, !range !40, !noundef !41
  %3298 = trunc i8 %3297 to i1
  br i1 %3298, label %3304, label %3299

3299:                                             ; preds = %3295
  store i32 360, ptr %17, align 4
  br label %3839

3300:                                             ; preds = %3835, %3365, %3358, %3342, %3330, %3324, %3322, %3318, %3316, %3313, %3310, %3304, %3291
  %3301 = landingpad { ptr, i32 }
          cleanup
  %3302 = extractvalue { ptr, i32 } %3301, 0
  store ptr %3302, ptr %9, align 8
  %3303 = extractvalue { ptr, i32 } %3301, 1
  store i32 %3303, ptr %10, align 4
  br label %3840

3304:                                             ; preds = %3295
  %3305 = load ptr, ptr %259, align 8, !tbaa !5
  %3306 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3305, i32 0, i32 1
  %3307 = invoke noundef zeroext i1 @_ZNK3HIR9ArraySize8is_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %3306)
          to label %3308 unwind label %3300

3308:                                             ; preds = %3304
  br i1 %3307, label %3365, label %3309

3309:                                             ; preds = %3308
  br label %3310

3310:                                             ; preds = %3309
  %3311 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3312 unwind label %3300

3312:                                             ; preds = %3310
  br i1 %3311, label %3313, label %3327

3313:                                             ; preds = %3312
  %3314 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !69
  %3315 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %3314, ptr noundef @__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE)
          to label %3316 unwind label %3300

3316:                                             ; preds = %3313
  %3317 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3315, ptr noundef @.str.68)
          to label %3318 unwind label %3300

3318:                                             ; preds = %3316
  %3319 = load ptr, ptr %259, align 8, !tbaa !5
  %3320 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3319, i32 0, i32 1
  %3321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8) %3317, ptr noundef nonnull align 8 dereferenceable(32) %3320)
          to label %3322 unwind label %3300

3322:                                             ; preds = %3318
  %3323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %3321, ptr noundef @_ZSt3decRSt8ios_base)
          to label %3324 unwind label %3300

3324:                                             ; preds = %3322
  %3325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %3323, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %3326 unwind label %3300

3326:                                             ; preds = %3324
  br label %3327

3327:                                             ; preds = %3326, %3312
  br label %3328

3328:                                             ; preds = %3327
  br label %3329

3329:                                             ; preds = %3328
  br label %3330

3330:                                             ; preds = %3329
  %3331 = load ptr, ptr %7, align 8, !tbaa !5
  %3332 = getelementptr inbounds %"struct.HIR::Pattern", ptr %3331, i32 0, i32 1
  %3333 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %3332)
          to label %3334 unwind label %3300

3334:                                             ; preds = %3330
  br i1 %3333, label %3356, label %3335

3335:                                             ; preds = %3334
  call void @llvm.lifetime.start.p0(i64 8, ptr %260) #0
  %3336 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef nonnull align 8 dereferenceable(8) %3336)
          to label %3337 unwind label %3343

3337:                                             ; preds = %3335
  call void @llvm.lifetime.start.p0(i64 8, ptr %262) #0
  %3338 = getelementptr inbounds %class.anon.425, ptr %262, i32 0, i32 0
  %3339 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %3339, ptr %3338, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_26vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %261, ptr noundef nonnull align 8 dereferenceable(8) %262) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef %261)
          to label %3340 unwind label %3347

3340:                                             ; preds = %3337
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %262) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #0
  %3341 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3341, ptr noundef @.str.10)
          to label %3342 unwind label %3352

3342:                                             ; preds = %3340
  invoke void @__cxa_throw(ptr %3341, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3300

3343:                                             ; preds = %3335
  %3344 = landingpad { ptr, i32 }
          cleanup
  %3345 = extractvalue { ptr, i32 } %3344, 0
  store ptr %3345, ptr %9, align 8
  %3346 = extractvalue { ptr, i32 } %3344, 1
  store i32 %3346, ptr %10, align 4
  br label %3351

3347:                                             ; preds = %3337
  %3348 = landingpad { ptr, i32 }
          cleanup
  %3349 = extractvalue { ptr, i32 } %3348, 0
  store ptr %3349, ptr %9, align 8
  %3350 = extractvalue { ptr, i32 } %3348, 1
  store i32 %3350, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %262) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #0
  br label %3351

3351:                                             ; preds = %3347, %3343
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #0
  br label %3840

3352:                                             ; preds = %3340
  %3353 = landingpad { ptr, i32 }
          cleanup
  %3354 = extractvalue { ptr, i32 } %3353, 0
  store ptr %3354, ptr %9, align 8
  %3355 = extractvalue { ptr, i32 } %3353, 1
  store i32 %3355, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3341) #0
  br label %3840

3356:                                             ; preds = %3334
  br label %3357

3357:                                             ; preds = %3356
  br label %3358

3358:                                             ; preds = %3357
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %263)
          to label %3359 unwind label %3300

3359:                                             ; preds = %3358
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %263)
          to label %3360 unwind label %3361

3360:                                             ; preds = %3359
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %263) #0
  store i32 360, ptr %17, align 4
  br label %3839

3361:                                             ; preds = %3359
  %3362 = landingpad { ptr, i32 }
          cleanup
  %3363 = extractvalue { ptr, i32 } %3362, 0
  store ptr %3363, ptr %9, align 8
  %3364 = extractvalue { ptr, i32 } %3362, 1
  store i32 %3364, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %263) #0
  br label %3840

3365:                                             ; preds = %3308
  %3366 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %3366, i8 noundef zeroext 0)
          to label %3367 unwind label %3300

3367:                                             ; preds = %3365
  call void @llvm.lifetime.start.p0(i64 1, ptr %265) #0
  store i8 1, ptr %265, align 1, !tbaa !39
  br label %3368

3368:                                             ; preds = %3834, %3367
  %3369 = load i8, ptr %265, align 1, !tbaa !39, !range !40, !noundef !41
  %3370 = trunc i8 %3369 to i1
  br i1 %3370, label %3372, label %3371

3371:                                             ; preds = %3368
  store i32 367, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %265) #0
  br label %3835

3372:                                             ; preds = %3368
  call void @llvm.lifetime.start.p0(i64 8, ptr %266) #0
  %3373 = load ptr, ptr %7, align 8, !tbaa !5
  %3374 = getelementptr inbounds %"struct.HIR::Pattern", ptr %3373, i32 0, i32 1
  store ptr %3374, ptr %266, align 8, !tbaa !5
  br label %3375

3375:                                             ; preds = %3831, %3372
  %3376 = load i8, ptr %265, align 1, !tbaa !39, !range !40, !noundef !41
  %3377 = trunc i8 %3376 to i1
  br i1 %3377, label %3379, label %3378

3378:                                             ; preds = %3375
  store i32 370, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #0
  br label %3833

3379:                                             ; preds = %3375
  %3380 = load ptr, ptr %266, align 8, !tbaa !5
  %3381 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %3380)
          to label %3382 unwind label %3383

3382:                                             ; preds = %3379
  switch i32 %3381, label %3388 [
    i32 0, label %3387
    i32 1, label %3412
    i32 12, label %3464
    i32 13, label %3550
  ]

3383:                                             ; preds = %3396, %3379
  %3384 = landingpad { ptr, i32 }
          cleanup
  %3385 = extractvalue { ptr, i32 } %3384, 0
  store ptr %3385, ptr %9, align 8
  %3386 = extractvalue { ptr, i32 } %3384, 1
  store i32 %3386, ptr %10, align 4
  br label %3832

3387:                                             ; preds = %3382
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1767, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

3388:                                             ; preds = %3382
  br label %3389

3389:                                             ; preds = %3388
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #0
  %3390 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef nonnull align 8 dereferenceable(8) %3390)
          to label %3391 unwind label %3397

3391:                                             ; preds = %3389
  call void @llvm.lifetime.start.p0(i64 8, ptr %269) #0
  %3392 = getelementptr inbounds %class.anon.426, ptr %269, i32 0, i32 0
  %3393 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %3393, ptr %3392, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_27vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %268, ptr noundef nonnull align 8 dereferenceable(8) %269) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef %268)
          to label %3394 unwind label %3401

3394:                                             ; preds = %3391
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %267) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #0
  %3395 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3395, ptr noundef @.str.10)
          to label %3396 unwind label %3406

3396:                                             ; preds = %3394
  invoke void @__cxa_throw(ptr %3395, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3383

3397:                                             ; preds = %3389
  %3398 = landingpad { ptr, i32 }
          cleanup
  %3399 = extractvalue { ptr, i32 } %3398, 0
  store ptr %3399, ptr %9, align 8
  %3400 = extractvalue { ptr, i32 } %3398, 1
  store i32 %3400, ptr %10, align 4
  br label %3405

3401:                                             ; preds = %3391
  %3402 = landingpad { ptr, i32 }
          cleanup
  %3403 = extractvalue { ptr, i32 } %3402, 0
  store ptr %3403, ptr %9, align 8
  %3404 = extractvalue { ptr, i32 } %3402, 1
  store i32 %3404, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %267) #0
  br label %3405

3405:                                             ; preds = %3401, %3397
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #0
  br label %3832

3406:                                             ; preds = %3394
  %3407 = landingpad { ptr, i32 }
          cleanup
  %3408 = extractvalue { ptr, i32 } %3407, 0
  store ptr %3408, ptr %9, align 8
  %3409 = extractvalue { ptr, i32 } %3407, 1
  store i32 %3409, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3395) #0
  br label %3832

3410:                                             ; No predecessors!
  br label %3411

3411:                                             ; preds = %3410
  br label %3830

3412:                                             ; preds = %3382
  call void @llvm.lifetime.start.p0(i64 1, ptr %270) #0
  store i8 1, ptr %270, align 1, !tbaa !39
  br label %3413

3413:                                             ; preds = %3462, %3412
  %3414 = load i8, ptr %270, align 1, !tbaa !39, !range !40, !noundef !41
  %3415 = trunc i8 %3414 to i1
  br i1 %3415, label %3417, label %3416

3416:                                             ; preds = %3413
  store i32 376, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %270) #0
  br label %3463

3417:                                             ; preds = %3413
  call void @llvm.lifetime.start.p0(i64 8, ptr %271) #0
  %3418 = load ptr, ptr %266, align 8, !tbaa !5
  %3419 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %3418)
          to label %3420 unwind label %3426

3420:                                             ; preds = %3417
  store ptr %3419, ptr %271, align 8, !tbaa !5
  br label %3421

3421:                                             ; preds = %3459, %3420
  %3422 = load ptr, ptr %271, align 8, !tbaa !5
  %3423 = load i8, ptr %270, align 1, !tbaa !39, !range !40, !noundef !41
  %3424 = trunc i8 %3423 to i1
  br i1 %3424, label %3430, label %3425

3425:                                             ; preds = %3421
  store i32 379, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %271) #0
  br label %3461

3426:                                             ; preds = %3417
  %3427 = landingpad { ptr, i32 }
          cleanup
  %3428 = extractvalue { ptr, i32 } %3427, 0
  store ptr %3428, ptr %9, align 8
  %3429 = extractvalue { ptr, i32 } %3427, 1
  store i32 %3429, ptr %10, align 4
  br label %3460

3430:                                             ; preds = %3421
  call void @llvm.lifetime.start.p0(i64 4, ptr %272) #0
  store i32 0, ptr %272, align 4, !tbaa !69
  br label %3431

3431:                                             ; preds = %3455, %3430
  %3432 = load i32, ptr %272, align 4, !tbaa !69
  %3433 = zext i32 %3432 to i64
  %3434 = load ptr, ptr %259, align 8, !tbaa !5
  %3435 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3434, i32 0, i32 1
  %3436 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %3435)
          to label %3437 unwind label %3441

3437:                                             ; preds = %3431
  %3438 = load i64, ptr %3436, align 8, !tbaa !12
  %3439 = icmp ult i64 %3433, %3438
  br i1 %3439, label %3445, label %3440

3440:                                             ; preds = %3437
  store i32 382, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %272) #0
  br label %3458

3441:                                             ; preds = %3449, %3445, %3431
  %3442 = landingpad { ptr, i32 }
          cleanup
  %3443 = extractvalue { ptr, i32 } %3442, 0
  store ptr %3443, ptr %9, align 8
  %3444 = extractvalue { ptr, i32 } %3442, 1
  store i32 %3444, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %272) #0
  br label %3460

3445:                                             ; preds = %3437
  %3446 = load ptr, ptr %6, align 8, !tbaa !5
  %3447 = load ptr, ptr %259, align 8, !tbaa !5
  %3448 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3447, i32 0, i32 0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %3446, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %3448)
          to label %3449 unwind label %3441

3449:                                             ; preds = %3445
  %3450 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %3451 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %3450)
          to label %3452 unwind label %3441

3452:                                             ; preds = %3449
  %3453 = load i8, ptr %3451, align 1, !tbaa !68
  %3454 = add i8 %3453, 1
  store i8 %3454, ptr %3451, align 1, !tbaa !68
  br label %3455

3455:                                             ; preds = %3452
  %3456 = load i32, ptr %272, align 4, !tbaa !69
  %3457 = add i32 %3456, 1
  store i32 %3457, ptr %272, align 4, !tbaa !69
  br label %3431, !llvm.loop !179

3458:                                             ; preds = %3440
  br label %3459

3459:                                             ; preds = %3458
  store i8 0, ptr %270, align 1, !tbaa !39
  br label %3421, !llvm.loop !180

3460:                                             ; preds = %3441, %3426
  call void @llvm.lifetime.end.p0(i64 8, ptr %271) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %270) #0
  br label %3832

3461:                                             ; preds = %3425
  br label %3462

3462:                                             ; preds = %3461
  store i8 0, ptr %270, align 1, !tbaa !39
  br label %3413, !llvm.loop !181

3463:                                             ; preds = %3416
  br label %3830

3464:                                             ; preds = %3382
  call void @llvm.lifetime.start.p0(i64 1, ptr %273) #0
  store i8 1, ptr %273, align 1, !tbaa !39
  br label %3465

3465:                                             ; preds = %3548, %3464
  %3466 = load i8, ptr %273, align 1, !tbaa !39, !range !40, !noundef !41
  %3467 = trunc i8 %3466 to i1
  br i1 %3467, label %3469, label %3468

3468:                                             ; preds = %3465
  store i32 385, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %273) #0
  br label %3549

3469:                                             ; preds = %3465
  call void @llvm.lifetime.start.p0(i64 8, ptr %274) #0
  %3470 = load ptr, ptr %266, align 8, !tbaa !5
  %3471 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR7Pattern4Data8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %3470)
          to label %3472 unwind label %3478

3472:                                             ; preds = %3469
  store ptr %3471, ptr %274, align 8, !tbaa !5
  br label %3473

3473:                                             ; preds = %3545, %3472
  %3474 = load ptr, ptr %274, align 8, !tbaa !5
  %3475 = load i8, ptr %273, align 1, !tbaa !39, !range !40, !noundef !41
  %3476 = trunc i8 %3475 to i1
  br i1 %3476, label %3482, label %3477

3477:                                             ; preds = %3473
  store i32 388, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %274) #0
  br label %3547

3478:                                             ; preds = %3498, %3483, %3469
  %3479 = landingpad { ptr, i32 }
          cleanup
  %3480 = extractvalue { ptr, i32 } %3479, 0
  store ptr %3480, ptr %9, align 8
  %3481 = extractvalue { ptr, i32 } %3479, 1
  store i32 %3481, ptr %10, align 4
  br label %3546

3482:                                             ; preds = %3473
  br label %3483

3483:                                             ; preds = %3482
  %3484 = load ptr, ptr %259, align 8, !tbaa !5
  %3485 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3484, i32 0, i32 1
  %3486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %3485)
          to label %3487 unwind label %3478

3487:                                             ; preds = %3483
  %3488 = load i64, ptr %3486, align 8, !tbaa !12
  %3489 = load ptr, ptr %274, align 8, !tbaa !5
  %3490 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Slice", ptr %3489, i32 0, i32 0
  %3491 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3490) #0
  %3492 = icmp eq i64 %3488, %3491
  br i1 %3492, label %3512, label %3493

3493:                                             ; preds = %3487
  call void @llvm.lifetime.start.p0(i64 8, ptr %275) #0
  %3494 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %275, ptr noundef nonnull align 8 dereferenceable(8) %3494)
          to label %3495 unwind label %3499

3495:                                             ; preds = %3493
  call void @llvm.lifetime.start.p0(i64 1, ptr %277) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %276, ptr noundef nonnull align 1 dereferenceable(1) %277) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %275, ptr noundef %276)
          to label %3496 unwind label %3503

3496:                                             ; preds = %3495
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %276) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %277) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %275) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #0
  %3497 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3497, ptr noundef @.str.10)
          to label %3498 unwind label %3508

3498:                                             ; preds = %3496
  invoke void @__cxa_throw(ptr %3497, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3478

3499:                                             ; preds = %3493
  %3500 = landingpad { ptr, i32 }
          cleanup
  %3501 = extractvalue { ptr, i32 } %3500, 0
  store ptr %3501, ptr %9, align 8
  %3502 = extractvalue { ptr, i32 } %3500, 1
  store i32 %3502, ptr %10, align 4
  br label %3507

3503:                                             ; preds = %3495
  %3504 = landingpad { ptr, i32 }
          cleanup
  %3505 = extractvalue { ptr, i32 } %3504, 0
  store ptr %3505, ptr %9, align 8
  %3506 = extractvalue { ptr, i32 } %3504, 1
  store i32 %3506, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %276) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %277) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %275) #0
  br label %3507

3507:                                             ; preds = %3503, %3499
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #0
  br label %3546

3508:                                             ; preds = %3496
  %3509 = landingpad { ptr, i32 }
          cleanup
  %3510 = extractvalue { ptr, i32 } %3509, 0
  store ptr %3510, ptr %9, align 8
  %3511 = extractvalue { ptr, i32 } %3509, 1
  store i32 %3511, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3497) #0
  br label %3546

3512:                                             ; preds = %3487
  br label %3513

3513:                                             ; preds = %3512
  br label %3514

3514:                                             ; preds = %3513
  call void @llvm.lifetime.start.p0(i64 8, ptr %278) #0
  %3515 = load ptr, ptr %274, align 8, !tbaa !5
  %3516 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Slice", ptr %3515, i32 0, i32 0
  store ptr %3516, ptr %278, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %279) #0
  %3517 = load ptr, ptr %278, align 8, !tbaa !5
  %3518 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3517) #0
  %3519 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %279, i32 0, i32 0
  store ptr %3518, ptr %3519, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %280) #0
  %3520 = load ptr, ptr %278, align 8, !tbaa !5
  %3521 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3520) #0
  %3522 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %280, i32 0, i32 0
  store ptr %3521, ptr %3522, align 8
  br label %3523

3523:                                             ; preds = %3538, %3514
  %3524 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(8) %280) #0
  br i1 %3524, label %3526, label %3525

3525:                                             ; preds = %3523
  store i32 393, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %280) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %278) #0
  br label %3544

3526:                                             ; preds = %3523
  call void @llvm.lifetime.start.p0(i64 8, ptr %281) #0
  %3527 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %279) #0
  store ptr %3527, ptr %281, align 8, !tbaa !5
  %3528 = load ptr, ptr %6, align 8, !tbaa !5
  %3529 = load ptr, ptr %281, align 8, !tbaa !5
  %3530 = load ptr, ptr %259, align 8, !tbaa !5
  %3531 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3530, i32 0, i32 0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %3528, ptr noundef nonnull align 8 dereferenceable(212) %3529, ptr noundef nonnull align 8 dereferenceable(8) %3531)
          to label %3532 unwind label %3540

3532:                                             ; preds = %3526
  %3533 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %3534 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %3533)
          to label %3535 unwind label %3540

3535:                                             ; preds = %3532
  %3536 = load i8, ptr %3534, align 1, !tbaa !68
  %3537 = add i8 %3536, 1
  store i8 %3537, ptr %3534, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %281) #0
  br label %3538

3538:                                             ; preds = %3535
  %3539 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %279) #0
  br label %3523

3540:                                             ; preds = %3532, %3526
  %3541 = landingpad { ptr, i32 }
          cleanup
  %3542 = extractvalue { ptr, i32 } %3541, 0
  store ptr %3542, ptr %9, align 8
  %3543 = extractvalue { ptr, i32 } %3541, 1
  store i32 %3543, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %281) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %280) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %278) #0
  br label %3546

3544:                                             ; preds = %3525
  br label %3545

3545:                                             ; preds = %3544
  store i8 0, ptr %273, align 1, !tbaa !39
  br label %3473, !llvm.loop !182

3546:                                             ; preds = %3540, %3508, %3507, %3478
  call void @llvm.lifetime.end.p0(i64 8, ptr %274) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %273) #0
  br label %3832

3547:                                             ; preds = %3477
  br label %3548

3548:                                             ; preds = %3547
  store i8 0, ptr %273, align 1, !tbaa !39
  br label %3465, !llvm.loop !183

3549:                                             ; preds = %3468
  br label %3830

3550:                                             ; preds = %3382
  call void @llvm.lifetime.start.p0(i64 1, ptr %282) #0
  store i8 1, ptr %282, align 1, !tbaa !39
  br label %3551

3551:                                             ; preds = %3828, %3550
  %3552 = load i8, ptr %282, align 1, !tbaa !39, !range !40, !noundef !41
  %3553 = trunc i8 %3552 to i1
  br i1 %3553, label %3555, label %3554

3554:                                             ; preds = %3551
  store i32 395, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %282) #0
  br label %3829

3555:                                             ; preds = %3551
  call void @llvm.lifetime.start.p0(i64 8, ptr %283) #0
  %3556 = load ptr, ptr %266, align 8, !tbaa !5
  %3557 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZNK3HIR7Pattern4Data13as_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(184) %3556)
          to label %3558 unwind label %3564

3558:                                             ; preds = %3555
  store ptr %3557, ptr %283, align 8, !tbaa !5
  br label %3559

3559:                                             ; preds = %3825, %3558
  %3560 = load ptr, ptr %283, align 8, !tbaa !5
  %3561 = load i8, ptr %282, align 1, !tbaa !39, !range !40, !noundef !41
  %3562 = trunc i8 %3561 to i1
  br i1 %3562, label %3568, label %3563

3563:                                             ; preds = %3559
  store i32 398, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #0
  br label %3827

3564:                                             ; preds = %3763, %3746, %3710, %3706, %3693, %3690, %3643, %3628, %3611, %3596, %3579, %3555
  %3565 = landingpad { ptr, i32 }
          cleanup
  %3566 = extractvalue { ptr, i32 } %3565, 0
  store ptr %3566, ptr %9, align 8
  %3567 = extractvalue { ptr, i32 } %3565, 1
  store i32 %3567, ptr %10, align 4
  br label %3826

3568:                                             ; preds = %3559
  br label %3569

3569:                                             ; preds = %3568
  %3570 = load ptr, ptr %283, align 8, !tbaa !5
  %3571 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3570, i32 0, i32 0
  %3572 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3571) #0
  %3573 = icmp ult i64 %3572, 128
  br i1 %3573, label %3593, label %3574

3574:                                             ; preds = %3569
  call void @llvm.lifetime.start.p0(i64 8, ptr %284) #0
  %3575 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef nonnull align 8 dereferenceable(8) %3575)
          to label %3576 unwind label %3580

3576:                                             ; preds = %3574
  call void @llvm.lifetime.start.p0(i64 1, ptr %286) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %285, ptr noundef nonnull align 1 dereferenceable(1) %286) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef %285)
          to label %3577 unwind label %3584

3577:                                             ; preds = %3576
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %285) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %286) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #0
  %3578 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3578, ptr noundef @.str.10)
          to label %3579 unwind label %3589

3579:                                             ; preds = %3577
  invoke void @__cxa_throw(ptr %3578, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3564

3580:                                             ; preds = %3574
  %3581 = landingpad { ptr, i32 }
          cleanup
  %3582 = extractvalue { ptr, i32 } %3581, 0
  store ptr %3582, ptr %9, align 8
  %3583 = extractvalue { ptr, i32 } %3581, 1
  store i32 %3583, ptr %10, align 4
  br label %3588

3584:                                             ; preds = %3576
  %3585 = landingpad { ptr, i32 }
          cleanup
  %3586 = extractvalue { ptr, i32 } %3585, 0
  store ptr %3586, ptr %9, align 8
  %3587 = extractvalue { ptr, i32 } %3585, 1
  store i32 %3587, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %285) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %286) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #0
  br label %3588

3588:                                             ; preds = %3584, %3580
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #0
  br label %3826

3589:                                             ; preds = %3577
  %3590 = landingpad { ptr, i32 }
          cleanup
  %3591 = extractvalue { ptr, i32 } %3590, 0
  store ptr %3591, ptr %9, align 8
  %3592 = extractvalue { ptr, i32 } %3590, 1
  store i32 %3592, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3578) #0
  br label %3826

3593:                                             ; preds = %3569
  br label %3594

3594:                                             ; preds = %3593
  br label %3595

3595:                                             ; preds = %3594
  br label %3596

3596:                                             ; preds = %3595
  %3597 = load ptr, ptr %283, align 8, !tbaa !5
  %3598 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3597, i32 0, i32 0
  %3599 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3598) #0
  %3600 = load ptr, ptr %259, align 8, !tbaa !5
  %3601 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3600, i32 0, i32 1
  %3602 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %3601)
          to label %3603 unwind label %3564

3603:                                             ; preds = %3596
  %3604 = load i64, ptr %3602, align 8, !tbaa !12
  %3605 = icmp ult i64 %3599, %3604
  br i1 %3605, label %3625, label %3606

3606:                                             ; preds = %3603
  call void @llvm.lifetime.start.p0(i64 8, ptr %287) #0
  %3607 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %287, ptr noundef nonnull align 8 dereferenceable(8) %3607)
          to label %3608 unwind label %3612

3608:                                             ; preds = %3606
  call void @llvm.lifetime.start.p0(i64 1, ptr %289) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_30vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %288, ptr noundef nonnull align 1 dereferenceable(1) %289) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %287, ptr noundef %288)
          to label %3609 unwind label %3616

3609:                                             ; preds = %3608
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %288) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %289) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %287) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %287) #0
  %3610 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3610, ptr noundef @.str.10)
          to label %3611 unwind label %3621

3611:                                             ; preds = %3609
  invoke void @__cxa_throw(ptr %3610, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3564

3612:                                             ; preds = %3606
  %3613 = landingpad { ptr, i32 }
          cleanup
  %3614 = extractvalue { ptr, i32 } %3613, 0
  store ptr %3614, ptr %9, align 8
  %3615 = extractvalue { ptr, i32 } %3613, 1
  store i32 %3615, ptr %10, align 4
  br label %3620

3616:                                             ; preds = %3608
  %3617 = landingpad { ptr, i32 }
          cleanup
  %3618 = extractvalue { ptr, i32 } %3617, 0
  store ptr %3618, ptr %9, align 8
  %3619 = extractvalue { ptr, i32 } %3617, 1
  store i32 %3619, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %288) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %289) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %287) #0
  br label %3620

3620:                                             ; preds = %3616, %3612
  call void @llvm.lifetime.end.p0(i64 8, ptr %287) #0
  br label %3826

3621:                                             ; preds = %3609
  %3622 = landingpad { ptr, i32 }
          cleanup
  %3623 = extractvalue { ptr, i32 } %3622, 0
  store ptr %3623, ptr %9, align 8
  %3624 = extractvalue { ptr, i32 } %3622, 1
  store i32 %3624, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3610) #0
  br label %3826

3625:                                             ; preds = %3603
  br label %3626

3626:                                             ; preds = %3625
  br label %3627

3627:                                             ; preds = %3626
  br label %3628

3628:                                             ; preds = %3627
  %3629 = load ptr, ptr %283, align 8, !tbaa !5
  %3630 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3629, i32 0, i32 2
  %3631 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3630) #0
  %3632 = load ptr, ptr %259, align 8, !tbaa !5
  %3633 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3632, i32 0, i32 1
  %3634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %3633)
          to label %3635 unwind label %3564

3635:                                             ; preds = %3628
  %3636 = load i64, ptr %3634, align 8, !tbaa !12
  %3637 = icmp ult i64 %3631, %3636
  br i1 %3637, label %3657, label %3638

3638:                                             ; preds = %3635
  call void @llvm.lifetime.start.p0(i64 8, ptr %290) #0
  %3639 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef nonnull align 8 dereferenceable(8) %3639)
          to label %3640 unwind label %3644

3640:                                             ; preds = %3638
  call void @llvm.lifetime.start.p0(i64 1, ptr %292) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %291, ptr noundef nonnull align 1 dereferenceable(1) %292) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %290, ptr noundef %291)
          to label %3641 unwind label %3648

3641:                                             ; preds = %3640
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %291) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %292) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %290) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #0
  %3642 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3642, ptr noundef @.str.10)
          to label %3643 unwind label %3653

3643:                                             ; preds = %3641
  invoke void @__cxa_throw(ptr %3642, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3564

3644:                                             ; preds = %3638
  %3645 = landingpad { ptr, i32 }
          cleanup
  %3646 = extractvalue { ptr, i32 } %3645, 0
  store ptr %3646, ptr %9, align 8
  %3647 = extractvalue { ptr, i32 } %3645, 1
  store i32 %3647, ptr %10, align 4
  br label %3652

3648:                                             ; preds = %3640
  %3649 = landingpad { ptr, i32 }
          cleanup
  %3650 = extractvalue { ptr, i32 } %3649, 0
  store ptr %3650, ptr %9, align 8
  %3651 = extractvalue { ptr, i32 } %3649, 1
  store i32 %3651, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %291) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %292) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %290) #0
  br label %3652

3652:                                             ; preds = %3648, %3644
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #0
  br label %3826

3653:                                             ; preds = %3641
  %3654 = landingpad { ptr, i32 }
          cleanup
  %3655 = extractvalue { ptr, i32 } %3654, 0
  store ptr %3655, ptr %9, align 8
  %3656 = extractvalue { ptr, i32 } %3654, 1
  store i32 %3656, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3642) #0
  br label %3826

3657:                                             ; preds = %3635
  br label %3658

3658:                                             ; preds = %3657
  br label %3659

3659:                                             ; preds = %3658
  call void @llvm.lifetime.start.p0(i64 8, ptr %293) #0
  %3660 = load ptr, ptr %283, align 8, !tbaa !5
  %3661 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3660, i32 0, i32 0
  store ptr %3661, ptr %293, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %294) #0
  %3662 = load ptr, ptr %293, align 8, !tbaa !5
  %3663 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3662) #0
  %3664 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %294, i32 0, i32 0
  store ptr %3663, ptr %3664, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %295) #0
  %3665 = load ptr, ptr %293, align 8, !tbaa !5
  %3666 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3665) #0
  %3667 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %295, i32 0, i32 0
  store ptr %3666, ptr %3667, align 8
  br label %3668

3668:                                             ; preds = %3683, %3659
  %3669 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull align 8 dereferenceable(8) %295) #0
  br i1 %3669, label %3671, label %3670

3670:                                             ; preds = %3668
  store i32 407, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #0
  br label %3689

3671:                                             ; preds = %3668
  call void @llvm.lifetime.start.p0(i64 8, ptr %296) #0
  %3672 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %294) #0
  store ptr %3672, ptr %296, align 8, !tbaa !5
  %3673 = load ptr, ptr %6, align 8, !tbaa !5
  %3674 = load ptr, ptr %296, align 8, !tbaa !5
  %3675 = load ptr, ptr %259, align 8, !tbaa !5
  %3676 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3675, i32 0, i32 0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %3673, ptr noundef nonnull align 8 dereferenceable(212) %3674, ptr noundef nonnull align 8 dereferenceable(8) %3676)
          to label %3677 unwind label %3685

3677:                                             ; preds = %3671
  %3678 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %3679 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %3678)
          to label %3680 unwind label %3685

3680:                                             ; preds = %3677
  %3681 = load i8, ptr %3679, align 1, !tbaa !68
  %3682 = add i8 %3681, 1
  store i8 %3682, ptr %3679, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #0
  br label %3683

3683:                                             ; preds = %3680
  %3684 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %294) #0
  br label %3668

3685:                                             ; preds = %3677, %3671
  %3686 = landingpad { ptr, i32 }
          cleanup
  %3687 = extractvalue { ptr, i32 } %3686, 0
  store ptr %3687, ptr %9, align 8
  %3688 = extractvalue { ptr, i32 } %3686, 1
  store i32 %3688, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #0
  br label %3826

3689:                                             ; preds = %3670
  br label %3690

3690:                                             ; preds = %3713, %3689
  %3691 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %3692 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %3691)
          to label %3693 unwind label %3564

3693:                                             ; preds = %3690
  %3694 = load i8, ptr %3692, align 1, !tbaa !68
  %3695 = zext i8 %3694 to i64
  %3696 = load ptr, ptr %259, align 8, !tbaa !5
  %3697 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3696, i32 0, i32 1
  %3698 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %3697)
          to label %3699 unwind label %3564

3699:                                             ; preds = %3693
  %3700 = load i64, ptr %3698, align 8, !tbaa !12
  %3701 = load ptr, ptr %283, align 8, !tbaa !5
  %3702 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3701, i32 0, i32 2
  %3703 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3702) #0
  %3704 = sub i64 %3700, %3703
  %3705 = icmp ult i64 %3695, %3704
  br i1 %3705, label %3706, label %3716

3706:                                             ; preds = %3699
  %3707 = load ptr, ptr %6, align 8, !tbaa !5
  %3708 = load ptr, ptr %259, align 8, !tbaa !5
  %3709 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3708, i32 0, i32 0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %3707, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %3709)
          to label %3710 unwind label %3564

3710:                                             ; preds = %3706
  %3711 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %3712 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %3711)
          to label %3713 unwind label %3564

3713:                                             ; preds = %3710
  %3714 = load i8, ptr %3712, align 1, !tbaa !68
  %3715 = add i8 %3714, 1
  store i8 %3715, ptr %3712, align 1, !tbaa !68
  br label %3690, !llvm.loop !184

3716:                                             ; preds = %3699
  call void @llvm.lifetime.start.p0(i64 8, ptr %297) #0
  %3717 = load ptr, ptr %283, align 8, !tbaa !5
  %3718 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3717, i32 0, i32 2
  store ptr %3718, ptr %297, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %298) #0
  %3719 = load ptr, ptr %297, align 8, !tbaa !5
  %3720 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3719) #0
  %3721 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %298, i32 0, i32 0
  store ptr %3720, ptr %3721, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %299) #0
  %3722 = load ptr, ptr %297, align 8, !tbaa !5
  %3723 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3722) #0
  %3724 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %299, i32 0, i32 0
  store ptr %3723, ptr %3724, align 8
  br label %3725

3725:                                             ; preds = %3740, %3716
  %3726 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %298, ptr noundef nonnull align 8 dereferenceable(8) %299) #0
  br i1 %3726, label %3728, label %3727

3727:                                             ; preds = %3725
  store i32 411, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %299) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %298) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #0
  br label %3746

3728:                                             ; preds = %3725
  call void @llvm.lifetime.start.p0(i64 8, ptr %300) #0
  %3729 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %298) #0
  store ptr %3729, ptr %300, align 8, !tbaa !5
  %3730 = load ptr, ptr %6, align 8, !tbaa !5
  %3731 = load ptr, ptr %300, align 8, !tbaa !5
  %3732 = load ptr, ptr %259, align 8, !tbaa !5
  %3733 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %3732, i32 0, i32 0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %3730, ptr noundef nonnull align 8 dereferenceable(212) %3731, ptr noundef nonnull align 8 dereferenceable(8) %3733)
          to label %3734 unwind label %3742

3734:                                             ; preds = %3728
  %3735 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %3736 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %3735)
          to label %3737 unwind label %3742

3737:                                             ; preds = %3734
  %3738 = load i8, ptr %3736, align 1, !tbaa !68
  %3739 = add i8 %3738, 1
  store i8 %3739, ptr %3736, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %300) #0
  br label %3740

3740:                                             ; preds = %3737
  %3741 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %298) #0
  br label %3725

3742:                                             ; preds = %3734, %3728
  %3743 = landingpad { ptr, i32 }
          cleanup
  %3744 = extractvalue { ptr, i32 } %3743, 0
  store ptr %3744, ptr %9, align 8
  %3745 = extractvalue { ptr, i32 } %3743, 1
  store i32 %3745, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %300) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %299) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %298) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #0
  br label %3826

3746:                                             ; preds = %3727
  %3747 = load ptr, ptr %283, align 8, !tbaa !5
  %3748 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3747, i32 0, i32 1
  %3749 = invoke noundef zeroext i1 @_ZNK3HIR14PatternBinding8is_validEv(ptr noundef nonnull align 8 dereferenceable(24) %3748)
          to label %3750 unwind label %3564

3750:                                             ; preds = %3746
  br i1 %3749, label %3751, label %3824

3751:                                             ; preds = %3750
  br label %3752

3752:                                             ; preds = %3751
  %3753 = load ptr, ptr %283, align 8, !tbaa !5
  %3754 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3753, i32 0, i32 1
  %3755 = getelementptr inbounds %"struct.HIR::PatternBinding", ptr %3754, i32 0, i32 4
  %3756 = load i32, ptr %3755, align 4, !tbaa !185
  %3757 = icmp eq i32 %3756, 0
  br i1 %3757, label %3777, label %3758

3758:                                             ; preds = %3752
  call void @llvm.lifetime.start.p0(i64 8, ptr %301) #0
  %3759 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef nonnull align 8 dereferenceable(8) %3759)
          to label %3760 unwind label %3764

3760:                                             ; preds = %3758
  call void @llvm.lifetime.start.p0(i64 1, ptr %303) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_32vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %302, ptr noundef nonnull align 1 dereferenceable(1) %303) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef %302)
          to label %3761 unwind label %3768

3761:                                             ; preds = %3760
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %302) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %303) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %301) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %301) #0
  %3762 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3762, ptr noundef @.str.10)
          to label %3763 unwind label %3773

3763:                                             ; preds = %3761
  invoke void @__cxa_throw(ptr %3762, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3564

3764:                                             ; preds = %3758
  %3765 = landingpad { ptr, i32 }
          cleanup
  %3766 = extractvalue { ptr, i32 } %3765, 0
  store ptr %3766, ptr %9, align 8
  %3767 = extractvalue { ptr, i32 } %3765, 1
  store i32 %3767, ptr %10, align 4
  br label %3772

3768:                                             ; preds = %3760
  %3769 = landingpad { ptr, i32 }
          cleanup
  %3770 = extractvalue { ptr, i32 } %3769, 0
  store ptr %3770, ptr %9, align 8
  %3771 = extractvalue { ptr, i32 } %3769, 1
  store i32 %3771, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %302) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %303) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %301) #0
  br label %3772

3772:                                             ; preds = %3768, %3764
  call void @llvm.lifetime.end.p0(i64 8, ptr %301) #0
  br label %3826

3773:                                             ; preds = %3761
  %3774 = landingpad { ptr, i32 }
          cleanup
  %3775 = extractvalue { ptr, i32 } %3774, 0
  store ptr %3775, ptr %9, align 8
  %3776 = extractvalue { ptr, i32 } %3774, 1
  store i32 %3776, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3762) #0
  br label %3826

3777:                                             ; preds = %3752
  br label %3778

3778:                                             ; preds = %3777
  br label %3779

3779:                                             ; preds = %3778
  call void @llvm.lifetime.start.p0(i64 48, ptr %304) #0
  %3780 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_tC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %305, ptr noundef nonnull align 8 dereferenceable(24) %3780)
          to label %3781 unwind label %3802

3781:                                             ; preds = %3779
  %3782 = load ptr, ptr %283, align 8, !tbaa !5
  %3783 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3782, i32 0, i32 1
  invoke void @_ZN14PatternBindingC2E12field_path_tRKN3HIR14PatternBindingE(ptr noundef nonnull align 8 dereferenceable(48) %304, ptr noundef %305, ptr noundef nonnull align 8 dereferenceable(24) %3783)
          to label %3784 unwind label %3806

3784:                                             ; preds = %3781
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %305) #0
  %3785 = getelementptr inbounds %struct.PatternBinding, ptr %304, i32 0, i32 0
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %3785)
          to label %3786 unwind label %3810

3786:                                             ; preds = %3784
  call void @llvm.lifetime.start.p0(i64 16, ptr %306) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %307) #0
  %3787 = load ptr, ptr %283, align 8, !tbaa !5
  %3788 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3787, i32 0, i32 0
  %3789 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3788) #0
  store i64 %3789, ptr %307, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr %308) #0
  %3790 = load ptr, ptr %283, align 8, !tbaa !5
  %3791 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %3790, i32 0, i32 2
  %3792 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3791) #0
  store i64 %3792, ptr %308, align 8, !tbaa !12
  %3793 = invoke { i64, i64 } @_ZSt9make_pairImmESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 8 dereferenceable(8) %307, ptr noundef nonnull align 8 dereferenceable(8) %308)
          to label %3794 unwind label %3814

3794:                                             ; preds = %3786
  %3795 = getelementptr inbounds { i64, i64 }, ptr %306, i32 0, i32 0
  %3796 = extractvalue { i64, i64 } %3793, 0
  store i64 %3796, ptr %3795, align 8
  %3797 = getelementptr inbounds { i64, i64 }, ptr %306, i32 0, i32 1
  %3798 = extractvalue { i64, i64 } %3793, 1
  store i64 %3798, ptr %3797, align 8
  %3799 = getelementptr inbounds %struct.PatternBinding, ptr %304, i32 0, i32 2
  %3800 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt4pairImmEaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %3799, ptr noundef nonnull align 8 dereferenceable(16) %306) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %306) #0
  call void @_ZN14PatternBindingC2EOS_(ptr noundef nonnull align 8 dereferenceable(48) %309, ptr noundef nonnull align 8 dereferenceable(48) %304) #0
  invoke void @_ZN21PatternRulesetBuilder12push_bindingE14PatternBinding(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %309)
          to label %3801 unwind label %3818

3801:                                             ; preds = %3794
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %309) #0
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %304) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %304) #0
  br label %3824

3802:                                             ; preds = %3779
  %3803 = landingpad { ptr, i32 }
          cleanup
  %3804 = extractvalue { ptr, i32 } %3803, 0
  store ptr %3804, ptr %9, align 8
  %3805 = extractvalue { ptr, i32 } %3803, 1
  store i32 %3805, ptr %10, align 4
  br label %3823

3806:                                             ; preds = %3781
  %3807 = landingpad { ptr, i32 }
          cleanup
  %3808 = extractvalue { ptr, i32 } %3807, 0
  store ptr %3808, ptr %9, align 8
  %3809 = extractvalue { ptr, i32 } %3807, 1
  store i32 %3809, ptr %10, align 4
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %305) #0
  br label %3823

3810:                                             ; preds = %3784
  %3811 = landingpad { ptr, i32 }
          cleanup
  %3812 = extractvalue { ptr, i32 } %3811, 0
  store ptr %3812, ptr %9, align 8
  %3813 = extractvalue { ptr, i32 } %3811, 1
  store i32 %3813, ptr %10, align 4
  br label %3822

3814:                                             ; preds = %3786
  %3815 = landingpad { ptr, i32 }
          cleanup
  %3816 = extractvalue { ptr, i32 } %3815, 0
  store ptr %3816, ptr %9, align 8
  %3817 = extractvalue { ptr, i32 } %3815, 1
  store i32 %3817, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %306) #0
  br label %3822

3818:                                             ; preds = %3794
  %3819 = landingpad { ptr, i32 }
          cleanup
  %3820 = extractvalue { ptr, i32 } %3819, 0
  store ptr %3820, ptr %9, align 8
  %3821 = extractvalue { ptr, i32 } %3819, 1
  store i32 %3821, ptr %10, align 4
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %309) #0
  br label %3822

3822:                                             ; preds = %3818, %3814, %3810
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %304) #0
  br label %3823

3823:                                             ; preds = %3822, %3806, %3802
  call void @llvm.lifetime.end.p0(i64 48, ptr %304) #0
  br label %3826

3824:                                             ; preds = %3801, %3750
  br label %3825

3825:                                             ; preds = %3824
  store i8 0, ptr %282, align 1, !tbaa !39
  br label %3559, !llvm.loop !191

3826:                                             ; preds = %3823, %3773, %3772, %3742, %3685, %3653, %3652, %3621, %3620, %3589, %3588, %3564
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %282) #0
  br label %3832

3827:                                             ; preds = %3563
  br label %3828

3828:                                             ; preds = %3827
  store i8 0, ptr %282, align 1, !tbaa !39
  br label %3551, !llvm.loop !192

3829:                                             ; preds = %3554
  br label %3830

3830:                                             ; preds = %3829, %3549, %3463, %3411
  br label %3831

3831:                                             ; preds = %3830
  store i8 0, ptr %265, align 1, !tbaa !39
  br label %3375, !llvm.loop !193

3832:                                             ; preds = %3826, %3546, %3460, %3406, %3405, %3383
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %265) #0
  br label %3840

3833:                                             ; preds = %3378
  br label %3834

3834:                                             ; preds = %3833
  store i8 0, ptr %265, align 1, !tbaa !39
  br label %3368, !llvm.loop !194

3835:                                             ; preds = %3371
  %3836 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %3836)
          to label %3837 unwind label %3300

3837:                                             ; preds = %3835
  br label %3838

3838:                                             ; preds = %3837
  store i8 0, ptr %258, align 1, !tbaa !39
  br label %3295, !llvm.loop !195

3839:                                             ; preds = %3360, %3299
  call void @llvm.lifetime.end.p0(i64 8, ptr %259) #0
  br label %3841

3840:                                             ; preds = %3832, %3361, %3352, %3351, %3300
  call void @llvm.lifetime.end.p0(i64 8, ptr %259) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %258) #0
  br label %4877

3841:                                             ; preds = %3839
  br label %3842

3842:                                             ; preds = %3841
  store i8 0, ptr %258, align 1, !tbaa !39
  br label %3287, !llvm.loop !196

3843:                                             ; preds = %3290
  br label %4875

3844:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %310) #0
  store i8 1, ptr %310, align 1, !tbaa !39
  br label %3845

3845:                                             ; preds = %4341, %3844
  %3846 = load i8, ptr %310, align 1, !tbaa !39, !range !40, !noundef !41
  %3847 = trunc i8 %3846 to i1
  br i1 %3847, label %3849, label %3848

3848:                                             ; preds = %3845
  store i32 415, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %310) #0
  br label %4342

3849:                                             ; preds = %3845
  call void @llvm.lifetime.start.p0(i64 8, ptr %311) #0
  %3850 = load ptr, ptr %41, align 8, !tbaa !5
  %3851 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %3850)
          to label %3852 unwind label %3858

3852:                                             ; preds = %3849
  store ptr %3851, ptr %311, align 8, !tbaa !5
  br label %3853

3853:                                             ; preds = %4338, %3852
  %3854 = load ptr, ptr %311, align 8, !tbaa !5
  %3855 = load i8, ptr %310, align 1, !tbaa !39, !range !40, !noundef !41
  %3856 = trunc i8 %3855 to i1
  br i1 %3856, label %3862, label %3857

3857:                                             ; preds = %3853
  store i32 418, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %311) #0
  br label %4340

3858:                                             ; preds = %3849
  %3859 = landingpad { ptr, i32 }
          cleanup
  %3860 = extractvalue { ptr, i32 } %3859, 0
  store ptr %3860, ptr %9, align 8
  %3861 = extractvalue { ptr, i32 } %3859, 1
  store i32 %3861, ptr %10, align 4
  br label %4339

3862:                                             ; preds = %3853
  call void @llvm.lifetime.start.p0(i64 1, ptr %312) #0
  store i8 1, ptr %312, align 1, !tbaa !39
  br label %3863

3863:                                             ; preds = %4336, %3862
  %3864 = load i8, ptr %312, align 1, !tbaa !39, !range !40, !noundef !41
  %3865 = trunc i8 %3864 to i1
  br i1 %3865, label %3867, label %3866

3866:                                             ; preds = %3863
  store i32 421, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %312) #0
  br label %4337

3867:                                             ; preds = %3863
  call void @llvm.lifetime.start.p0(i64 8, ptr %313) #0
  %3868 = load ptr, ptr %7, align 8, !tbaa !5
  %3869 = getelementptr inbounds %"struct.HIR::Pattern", ptr %3868, i32 0, i32 1
  store ptr %3869, ptr %313, align 8, !tbaa !5
  br label %3870

3870:                                             ; preds = %4333, %3867
  %3871 = load i8, ptr %312, align 1, !tbaa !39, !range !40, !noundef !41
  %3872 = trunc i8 %3871 to i1
  br i1 %3872, label %3874, label %3873

3873:                                             ; preds = %3870
  store i32 424, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %313) #0
  br label %4335

3874:                                             ; preds = %3870
  %3875 = load ptr, ptr %313, align 8, !tbaa !5
  %3876 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %3875)
          to label %3877 unwind label %3878

3877:                                             ; preds = %3874
  switch i32 %3876, label %3883 [
    i32 0, label %3882
    i32 1, label %3907
    i32 12, label %3937
    i32 13, label %4054
  ]

3878:                                             ; preds = %3891, %3874
  %3879 = landingpad { ptr, i32 }
          cleanup
  %3880 = extractvalue { ptr, i32 } %3879, 0
  store ptr %3880, ptr %9, align 8
  %3881 = extractvalue { ptr, i32 } %3879, 1
  store i32 %3881, ptr %10, align 4
  br label %4334

3882:                                             ; preds = %3877
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1816, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

3883:                                             ; preds = %3877
  br label %3884

3884:                                             ; preds = %3883
  call void @llvm.lifetime.start.p0(i64 8, ptr %314) #0
  %3885 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull align 8 dereferenceable(8) %3885)
          to label %3886 unwind label %3892

3886:                                             ; preds = %3884
  call void @llvm.lifetime.start.p0(i64 8, ptr %316) #0
  %3887 = getelementptr inbounds %class.anon.438, ptr %316, i32 0, i32 0
  %3888 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %3888, ptr %3887, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %315, ptr noundef nonnull align 8 dereferenceable(8) %316) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef %315)
          to label %3889 unwind label %3896

3889:                                             ; preds = %3886
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %315) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #0
  %3890 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3890, ptr noundef @.str.10)
          to label %3891 unwind label %3901

3891:                                             ; preds = %3889
  invoke void @__cxa_throw(ptr %3890, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3878

3892:                                             ; preds = %3884
  %3893 = landingpad { ptr, i32 }
          cleanup
  %3894 = extractvalue { ptr, i32 } %3893, 0
  store ptr %3894, ptr %9, align 8
  %3895 = extractvalue { ptr, i32 } %3893, 1
  store i32 %3895, ptr %10, align 4
  br label %3900

3896:                                             ; preds = %3886
  %3897 = landingpad { ptr, i32 }
          cleanup
  %3898 = extractvalue { ptr, i32 } %3897, 0
  store ptr %3898, ptr %9, align 8
  %3899 = extractvalue { ptr, i32 } %3897, 1
  store i32 %3899, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %315) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #0
  br label %3900

3900:                                             ; preds = %3896, %3892
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #0
  br label %4334

3901:                                             ; preds = %3889
  %3902 = landingpad { ptr, i32 }
          cleanup
  %3903 = extractvalue { ptr, i32 } %3902, 0
  store ptr %3903, ptr %9, align 8
  %3904 = extractvalue { ptr, i32 } %3902, 1
  store i32 %3904, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3890) #0
  br label %4334

3905:                                             ; No predecessors!
  br label %3906

3906:                                             ; preds = %3905
  br label %4332

3907:                                             ; preds = %3877
  call void @llvm.lifetime.start.p0(i64 1, ptr %317) #0
  store i8 1, ptr %317, align 1, !tbaa !39
  br label %3908

3908:                                             ; preds = %3935, %3907
  %3909 = load i8, ptr %317, align 1, !tbaa !39, !range !40, !noundef !41
  %3910 = trunc i8 %3909 to i1
  br i1 %3910, label %3912, label %3911

3911:                                             ; preds = %3908
  store i32 430, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %317) #0
  br label %3936

3912:                                             ; preds = %3908
  call void @llvm.lifetime.start.p0(i64 8, ptr %318) #0
  %3913 = load ptr, ptr %313, align 8, !tbaa !5
  %3914 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %3913)
          to label %3915 unwind label %3921

3915:                                             ; preds = %3912
  store ptr %3914, ptr %318, align 8, !tbaa !5
  br label %3916

3916:                                             ; preds = %3928, %3915
  %3917 = load ptr, ptr %318, align 8, !tbaa !5
  %3918 = load i8, ptr %317, align 1, !tbaa !39, !range !40, !noundef !41
  %3919 = trunc i8 %3918 to i1
  br i1 %3919, label %3925, label %3920

3920:                                             ; preds = %3916
  store i32 433, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %318) #0
  br label %3934

3921:                                             ; preds = %3925, %3912
  %3922 = landingpad { ptr, i32 }
          cleanup
  %3923 = extractvalue { ptr, i32 } %3922, 0
  store ptr %3923, ptr %9, align 8
  %3924 = extractvalue { ptr, i32 } %3922, 1
  store i32 %3924, ptr %10, align 4
  br label %3933

3925:                                             ; preds = %3916
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %319)
          to label %3926 unwind label %3921

3926:                                             ; preds = %3925
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %319)
          to label %3927 unwind label %3929

3927:                                             ; preds = %3926
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %319) #0
  br label %3928

3928:                                             ; preds = %3927
  store i8 0, ptr %317, align 1, !tbaa !39
  br label %3916, !llvm.loop !197

3929:                                             ; preds = %3926
  %3930 = landingpad { ptr, i32 }
          cleanup
  %3931 = extractvalue { ptr, i32 } %3930, 0
  store ptr %3931, ptr %9, align 8
  %3932 = extractvalue { ptr, i32 } %3930, 1
  store i32 %3932, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %319) #0
  br label %3933

3933:                                             ; preds = %3929, %3921
  call void @llvm.lifetime.end.p0(i64 8, ptr %318) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %317) #0
  br label %4334

3934:                                             ; preds = %3920
  br label %3935

3935:                                             ; preds = %3934
  store i8 0, ptr %317, align 1, !tbaa !39
  br label %3908, !llvm.loop !198

3936:                                             ; preds = %3911
  br label %4332

3937:                                             ; preds = %3877
  call void @llvm.lifetime.start.p0(i64 1, ptr %321) #0
  store i8 1, ptr %321, align 1, !tbaa !39
  br label %3938

3938:                                             ; preds = %4052, %3937
  %3939 = load i8, ptr %321, align 1, !tbaa !39, !range !40, !noundef !41
  %3940 = trunc i8 %3939 to i1
  br i1 %3940, label %3942, label %3941

3941:                                             ; preds = %3938
  store i32 436, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %321) #0
  br label %4053

3942:                                             ; preds = %3938
  call void @llvm.lifetime.start.p0(i64 8, ptr %322) #0
  %3943 = load ptr, ptr %313, align 8, !tbaa !5
  %3944 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR7Pattern4Data8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %3943)
          to label %3945 unwind label %3951

3945:                                             ; preds = %3942
  store ptr %3944, ptr %322, align 8, !tbaa !5
  br label %3946

3946:                                             ; preds = %4038, %3945
  %3947 = load ptr, ptr %322, align 8, !tbaa !5
  %3948 = load i8, ptr %321, align 1, !tbaa !39, !range !40, !noundef !41
  %3949 = trunc i8 %3948 to i1
  br i1 %3949, label %3955, label %3950

3950:                                             ; preds = %3946
  store i32 439, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %322) #0
  br label %4051

3951:                                             ; preds = %3942
  %3952 = landingpad { ptr, i32 }
          cleanup
  %3953 = extractvalue { ptr, i32 } %3952, 0
  store ptr %3953, ptr %9, align 8
  %3954 = extractvalue { ptr, i32 } %3952, 1
  store i32 %3954, ptr %10, align 4
  br label %4050

3955:                                             ; preds = %3946
  call void @llvm.lifetime.start.p0(i64 80, ptr %323) #0
  %3956 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 0
  %3957 = load ptr, ptr %3956, align 8, !tbaa !151
  invoke void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80) %323, ptr noundef nonnull align 8 dereferenceable(424) %3957)
          to label %3958 unwind label %3976

3958:                                             ; preds = %3955
  %3959 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %3960 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %323, i32 0, i32 5
  %3961 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12field_path_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %3960, ptr noundef nonnull align 8 dereferenceable(24) %3959)
          to label %3962 unwind label %3980

3962:                                             ; preds = %3958
  %3963 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %323, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %3963, i8 noundef zeroext 0)
          to label %3964 unwind label %3980

3964:                                             ; preds = %3962
  br label %3965

3965:                                             ; preds = %3964
  %3966 = load ptr, ptr %322, align 8, !tbaa !5
  %3967 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Slice", ptr %3966, i32 0, i32 0
  %3968 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3967) #0
  %3969 = icmp ult i64 %3968, 128
  br i1 %3969, label %3997, label %3970

3970:                                             ; preds = %3965
  call void @llvm.lifetime.start.p0(i64 8, ptr %324) #0
  %3971 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %324, ptr noundef nonnull align 8 dereferenceable(8) %3971)
          to label %3972 unwind label %3984

3972:                                             ; preds = %3970
  call void @llvm.lifetime.start.p0(i64 1, ptr %326) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_34vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %325, ptr noundef nonnull align 1 dereferenceable(1) %326) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %324, ptr noundef %325)
          to label %3973 unwind label %3988

3973:                                             ; preds = %3972
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %325) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %326) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %324) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %324) #0
  %3974 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3974, ptr noundef @.str.10)
          to label %3975 unwind label %3993

3975:                                             ; preds = %3973
  invoke void @__cxa_throw(ptr %3974, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %3980

3976:                                             ; preds = %3955
  %3977 = landingpad { ptr, i32 }
          cleanup
  %3978 = extractvalue { ptr, i32 } %3977, 0
  store ptr %3978, ptr %9, align 8
  %3979 = extractvalue { ptr, i32 } %3977, 1
  store i32 %3979, ptr %10, align 4
  br label %4049

3980:                                             ; preds = %3975, %3962, %3958
  %3981 = landingpad { ptr, i32 }
          cleanup
  %3982 = extractvalue { ptr, i32 } %3981, 0
  store ptr %3982, ptr %9, align 8
  %3983 = extractvalue { ptr, i32 } %3981, 1
  store i32 %3983, ptr %10, align 4
  br label %4048

3984:                                             ; preds = %3970
  %3985 = landingpad { ptr, i32 }
          cleanup
  %3986 = extractvalue { ptr, i32 } %3985, 0
  store ptr %3986, ptr %9, align 8
  %3987 = extractvalue { ptr, i32 } %3985, 1
  store i32 %3987, ptr %10, align 4
  br label %3992

3988:                                             ; preds = %3972
  %3989 = landingpad { ptr, i32 }
          cleanup
  %3990 = extractvalue { ptr, i32 } %3989, 0
  store ptr %3990, ptr %9, align 8
  %3991 = extractvalue { ptr, i32 } %3989, 1
  store i32 %3991, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %325) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %326) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %324) #0
  br label %3992

3992:                                             ; preds = %3988, %3984
  call void @llvm.lifetime.end.p0(i64 8, ptr %324) #0
  br label %4048

3993:                                             ; preds = %3973
  %3994 = landingpad { ptr, i32 }
          cleanup
  %3995 = extractvalue { ptr, i32 } %3994, 0
  store ptr %3995, ptr %9, align 8
  %3996 = extractvalue { ptr, i32 } %3994, 1
  store i32 %3996, ptr %10, align 4
  call void @__cxa_free_exception(ptr %3974) #0
  br label %4048

3997:                                             ; preds = %3965
  br label %3998

3998:                                             ; preds = %3997
  br label %3999

3999:                                             ; preds = %3998
  call void @llvm.lifetime.start.p0(i64 8, ptr %327) #0
  %4000 = load ptr, ptr %322, align 8, !tbaa !5
  %4001 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Slice", ptr %4000, i32 0, i32 0
  store ptr %4001, ptr %327, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %328) #0
  %4002 = load ptr, ptr %327, align 8, !tbaa !5
  %4003 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4002) #0
  %4004 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %328, i32 0, i32 0
  store ptr %4003, ptr %4004, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %329) #0
  %4005 = load ptr, ptr %327, align 8, !tbaa !5
  %4006 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4005) #0
  %4007 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %329, i32 0, i32 0
  store ptr %4006, ptr %4007, align 8
  br label %4008

4008:                                             ; preds = %4023, %3999
  %4009 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %328, ptr noundef nonnull align 8 dereferenceable(8) %329) #0
  br i1 %4009, label %4011, label %4010

4010:                                             ; preds = %4008
  store i32 444, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %329) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %328) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #0
  br label %4029

4011:                                             ; preds = %4008
  call void @llvm.lifetime.start.p0(i64 8, ptr %330) #0
  %4012 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %328) #0
  store ptr %4012, ptr %330, align 8, !tbaa !5
  %4013 = load ptr, ptr %6, align 8, !tbaa !5
  %4014 = load ptr, ptr %330, align 8, !tbaa !5
  %4015 = load ptr, ptr %311, align 8, !tbaa !5
  %4016 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %4015, i32 0, i32 0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %323, ptr noundef nonnull align 8 dereferenceable(8) %4013, ptr noundef nonnull align 8 dereferenceable(212) %4014, ptr noundef nonnull align 8 dereferenceable(8) %4016)
          to label %4017 unwind label %4025

4017:                                             ; preds = %4011
  %4018 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %323, i32 0, i32 5
  %4019 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %4018)
          to label %4020 unwind label %4025

4020:                                             ; preds = %4017
  %4021 = load i8, ptr %4019, align 1, !tbaa !68
  %4022 = add i8 %4021, 1
  store i8 %4022, ptr %4019, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %330) #0
  br label %4023

4023:                                             ; preds = %4020
  %4024 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %328) #0
  br label %4008

4025:                                             ; preds = %4017, %4011
  %4026 = landingpad { ptr, i32 }
          cleanup
  %4027 = extractvalue { ptr, i32 } %4026, 0
  store ptr %4027, ptr %9, align 8
  %4028 = extractvalue { ptr, i32 } %4026, 1
  store i32 %4028, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %330) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %329) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %328) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %327) #0
  br label %4048

4029:                                             ; preds = %4010
  %4030 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %323, i32 0, i32 2
  %4031 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4030) #0
  call void @llvm.lifetime.start.p0(i64 24, ptr %332) #0
  %4032 = getelementptr inbounds %class.anon.441, ptr %332, i32 0, i32 0
  store ptr %323, ptr %4032, align 8, !tbaa !5
  %4033 = getelementptr inbounds %class.anon.441, ptr %332, i32 0, i32 1
  store ptr %419, ptr %4033, align 8, !tbaa !199
  %4034 = getelementptr inbounds %class.anon.441, ptr %332, i32 0, i32 2
  %4035 = load ptr, ptr %322, align 8, !tbaa !5
  store ptr %4035, ptr %4034, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvmEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS7_7TypeRefEE4$_35vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %331, ptr noundef nonnull align 8 dereferenceable(24) %332)
          to label %4036 unwind label %4039

4036:                                             ; preds = %4029
  invoke void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80) %419, i64 noundef %4031, ptr noundef %331)
          to label %4037 unwind label %4043

4037:                                             ; preds = %4036
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %331) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %332) #0
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %323) #0
  call void @llvm.lifetime.end.p0(i64 80, ptr %323) #0
  br label %4038

4038:                                             ; preds = %4037
  store i8 0, ptr %321, align 1, !tbaa !39
  br label %3946, !llvm.loop !201

4039:                                             ; preds = %4029
  %4040 = landingpad { ptr, i32 }
          cleanup
  %4041 = extractvalue { ptr, i32 } %4040, 0
  store ptr %4041, ptr %9, align 8
  %4042 = extractvalue { ptr, i32 } %4040, 1
  store i32 %4042, ptr %10, align 4
  br label %4047

4043:                                             ; preds = %4036
  %4044 = landingpad { ptr, i32 }
          cleanup
  %4045 = extractvalue { ptr, i32 } %4044, 0
  store ptr %4045, ptr %9, align 8
  %4046 = extractvalue { ptr, i32 } %4044, 1
  store i32 %4046, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %331) #0
  br label %4047

4047:                                             ; preds = %4043, %4039
  call void @llvm.lifetime.end.p0(i64 24, ptr %332) #0
  br label %4048

4048:                                             ; preds = %4047, %4025, %3993, %3992, %3980
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %323) #0
  br label %4049

4049:                                             ; preds = %4048, %3976
  call void @llvm.lifetime.end.p0(i64 80, ptr %323) #0
  br label %4050

4050:                                             ; preds = %4049, %3951
  call void @llvm.lifetime.end.p0(i64 8, ptr %322) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %321) #0
  br label %4334

4051:                                             ; preds = %3950
  br label %4052

4052:                                             ; preds = %4051
  store i8 0, ptr %321, align 1, !tbaa !39
  br label %3938, !llvm.loop !202

4053:                                             ; preds = %3941
  br label %4332

4054:                                             ; preds = %3877
  call void @llvm.lifetime.start.p0(i64 1, ptr %333) #0
  store i8 1, ptr %333, align 1, !tbaa !39
  br label %4055

4055:                                             ; preds = %4330, %4054
  %4056 = load i8, ptr %333, align 1, !tbaa !39, !range !40, !noundef !41
  %4057 = trunc i8 %4056 to i1
  br i1 %4057, label %4059, label %4058

4058:                                             ; preds = %4055
  store i32 446, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %333) #0
  br label %4331

4059:                                             ; preds = %4055
  call void @llvm.lifetime.start.p0(i64 8, ptr %334) #0
  %4060 = load ptr, ptr %313, align 8, !tbaa !5
  %4061 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZNK3HIR7Pattern4Data13as_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(184) %4060)
          to label %4062 unwind label %4068

4062:                                             ; preds = %4059
  store ptr %4061, ptr %334, align 8, !tbaa !5
  br label %4063

4063:                                             ; preds = %4314, %4062
  %4064 = load ptr, ptr %334, align 8, !tbaa !5
  %4065 = load i8, ptr %333, align 1, !tbaa !39, !range !40, !noundef !41
  %4066 = trunc i8 %4065 to i1
  br i1 %4066, label %4072, label %4067

4067:                                             ; preds = %4063
  store i32 449, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #0
  br label %4329

4068:                                             ; preds = %4059
  %4069 = landingpad { ptr, i32 }
          cleanup
  %4070 = extractvalue { ptr, i32 } %4069, 0
  store ptr %4070, ptr %9, align 8
  %4071 = extractvalue { ptr, i32 } %4069, 1
  store i32 %4071, ptr %10, align 4
  br label %4328

4072:                                             ; preds = %4063
  call void @llvm.lifetime.start.p0(i64 80, ptr %335) #0
  %4073 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 0
  %4074 = load ptr, ptr %4073, align 8, !tbaa !151
  invoke void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80) %335, ptr noundef nonnull align 8 dereferenceable(424) %4074)
          to label %4075 unwind label %4091

4075:                                             ; preds = %4072
  %4076 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  %4077 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %335, i32 0, i32 5
  %4078 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12field_path_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %4077, ptr noundef nonnull align 8 dereferenceable(24) %4076)
          to label %4079 unwind label %4095

4079:                                             ; preds = %4075
  br label %4080

4080:                                             ; preds = %4079
  %4081 = load ptr, ptr %334, align 8, !tbaa !5
  %4082 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4081, i32 0, i32 0
  %4083 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4082) #0
  %4084 = icmp ult i64 %4083, 128
  br i1 %4084, label %4112, label %4085

4085:                                             ; preds = %4080
  call void @llvm.lifetime.start.p0(i64 8, ptr %336) #0
  %4086 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull align 8 dereferenceable(8) %4086)
          to label %4087 unwind label %4099

4087:                                             ; preds = %4085
  call void @llvm.lifetime.start.p0(i64 1, ptr %338) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_36vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %337, ptr noundef nonnull align 1 dereferenceable(1) %338) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef %337)
          to label %4088 unwind label %4103

4088:                                             ; preds = %4087
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %337) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %338) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %336) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %336) #0
  %4089 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4089, ptr noundef @.str.10)
          to label %4090 unwind label %4108

4090:                                             ; preds = %4088
  invoke void @__cxa_throw(ptr %4089, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %4095

4091:                                             ; preds = %4072
  %4092 = landingpad { ptr, i32 }
          cleanup
  %4093 = extractvalue { ptr, i32 } %4092, 0
  store ptr %4093, ptr %9, align 8
  %4094 = extractvalue { ptr, i32 } %4092, 1
  store i32 %4094, ptr %10, align 4
  br label %4327

4095:                                             ; preds = %4114, %4090, %4075
  %4096 = landingpad { ptr, i32 }
          cleanup
  %4097 = extractvalue { ptr, i32 } %4096, 0
  store ptr %4097, ptr %9, align 8
  %4098 = extractvalue { ptr, i32 } %4096, 1
  store i32 %4098, ptr %10, align 4
  br label %4326

4099:                                             ; preds = %4085
  %4100 = landingpad { ptr, i32 }
          cleanup
  %4101 = extractvalue { ptr, i32 } %4100, 0
  store ptr %4101, ptr %9, align 8
  %4102 = extractvalue { ptr, i32 } %4100, 1
  store i32 %4102, ptr %10, align 4
  br label %4107

4103:                                             ; preds = %4087
  %4104 = landingpad { ptr, i32 }
          cleanup
  %4105 = extractvalue { ptr, i32 } %4104, 0
  store ptr %4105, ptr %9, align 8
  %4106 = extractvalue { ptr, i32 } %4104, 1
  store i32 %4106, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %337) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %338) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %336) #0
  br label %4107

4107:                                             ; preds = %4103, %4099
  call void @llvm.lifetime.end.p0(i64 8, ptr %336) #0
  br label %4326

4108:                                             ; preds = %4088
  %4109 = landingpad { ptr, i32 }
          cleanup
  %4110 = extractvalue { ptr, i32 } %4109, 0
  store ptr %4110, ptr %9, align 8
  %4111 = extractvalue { ptr, i32 } %4109, 1
  store i32 %4111, ptr %10, align 4
  call void @__cxa_free_exception(ptr %4089) #0
  br label %4326

4112:                                             ; preds = %4080
  br label %4113

4113:                                             ; preds = %4112
  br label %4114

4114:                                             ; preds = %4113
  %4115 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %335, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %4115, i8 noundef zeroext 0)
          to label %4116 unwind label %4095

4116:                                             ; preds = %4114
  call void @llvm.lifetime.start.p0(i64 8, ptr %339) #0
  %4117 = load ptr, ptr %334, align 8, !tbaa !5
  %4118 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4117, i32 0, i32 0
  store ptr %4118, ptr %339, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %340) #0
  %4119 = load ptr, ptr %339, align 8, !tbaa !5
  %4120 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4119) #0
  %4121 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %340, i32 0, i32 0
  store ptr %4120, ptr %4121, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %341) #0
  %4122 = load ptr, ptr %339, align 8, !tbaa !5
  %4123 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4122) #0
  %4124 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %341, i32 0, i32 0
  store ptr %4123, ptr %4124, align 8
  br label %4125

4125:                                             ; preds = %4140, %4116
  %4126 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %340, ptr noundef nonnull align 8 dereferenceable(8) %341) #0
  br i1 %4126, label %4128, label %4127

4127:                                             ; preds = %4125
  store i32 454, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %341) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %340) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #0
  br label %4146

4128:                                             ; preds = %4125
  call void @llvm.lifetime.start.p0(i64 8, ptr %342) #0
  %4129 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %340) #0
  store ptr %4129, ptr %342, align 8, !tbaa !5
  %4130 = load ptr, ptr %6, align 8, !tbaa !5
  %4131 = load ptr, ptr %342, align 8, !tbaa !5
  %4132 = load ptr, ptr %311, align 8, !tbaa !5
  %4133 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %4132, i32 0, i32 0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %335, ptr noundef nonnull align 8 dereferenceable(8) %4130, ptr noundef nonnull align 8 dereferenceable(212) %4131, ptr noundef nonnull align 8 dereferenceable(8) %4133)
          to label %4134 unwind label %4142

4134:                                             ; preds = %4128
  %4135 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %335, i32 0, i32 5
  %4136 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %4135)
          to label %4137 unwind label %4142

4137:                                             ; preds = %4134
  %4138 = load i8, ptr %4136, align 1, !tbaa !68
  %4139 = add i8 %4138, 1
  store i8 %4139, ptr %4136, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %342) #0
  br label %4140

4140:                                             ; preds = %4137
  %4141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %340) #0
  br label %4125

4142:                                             ; preds = %4134, %4128
  %4143 = landingpad { ptr, i32 }
          cleanup
  %4144 = extractvalue { ptr, i32 } %4143, 0
  store ptr %4144, ptr %9, align 8
  %4145 = extractvalue { ptr, i32 } %4143, 1
  store i32 %4145, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %342) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %341) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %340) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #0
  br label %4326

4146:                                             ; preds = %4127
  call void @llvm.lifetime.start.p0(i64 24, ptr %343) #0
  %4147 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %335, i32 0, i32 2
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %343, ptr noundef nonnull align 8 dereferenceable(24) %4147) #0
  %4148 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %335, i32 0, i32 2
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %4148) #0
  %4149 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %335, i32 0, i32 2
  invoke void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %4149, i64 noundef 1)
          to label %4150 unwind label %4167

4150:                                             ; preds = %4146
  %4151 = load ptr, ptr %334, align 8, !tbaa !5
  %4152 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4151, i32 0, i32 2
  %4153 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4152) #0
  %4154 = icmp ne i64 %4153, 0
  br i1 %4154, label %4155, label %4226

4155:                                             ; preds = %4150
  br label %4156

4156:                                             ; preds = %4155
  %4157 = load ptr, ptr %334, align 8, !tbaa !5
  %4158 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4157, i32 0, i32 2
  %4159 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4158) #0
  %4160 = icmp ult i64 %4159, 128
  br i1 %4160, label %4184, label %4161

4161:                                             ; preds = %4156
  call void @llvm.lifetime.start.p0(i64 8, ptr %344) #0
  %4162 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %344, ptr noundef nonnull align 8 dereferenceable(8) %4162)
          to label %4163 unwind label %4171

4163:                                             ; preds = %4161
  call void @llvm.lifetime.start.p0(i64 1, ptr %346) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_37vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %345, ptr noundef nonnull align 1 dereferenceable(1) %346) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %344, ptr noundef %345)
          to label %4164 unwind label %4175

4164:                                             ; preds = %4163
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %345) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %346) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %344) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %344) #0
  %4165 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4165, ptr noundef @.str.10)
          to label %4166 unwind label %4180

4166:                                             ; preds = %4164
  invoke void @__cxa_throw(ptr %4165, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %4167

4167:                                             ; preds = %4186, %4166, %4146
  %4168 = landingpad { ptr, i32 }
          cleanup
  %4169 = extractvalue { ptr, i32 } %4168, 0
  store ptr %4169, ptr %9, align 8
  %4170 = extractvalue { ptr, i32 } %4168, 1
  store i32 %4170, ptr %10, align 4
  br label %4325

4171:                                             ; preds = %4161
  %4172 = landingpad { ptr, i32 }
          cleanup
  %4173 = extractvalue { ptr, i32 } %4172, 0
  store ptr %4173, ptr %9, align 8
  %4174 = extractvalue { ptr, i32 } %4172, 1
  store i32 %4174, ptr %10, align 4
  br label %4179

4175:                                             ; preds = %4163
  %4176 = landingpad { ptr, i32 }
          cleanup
  %4177 = extractvalue { ptr, i32 } %4176, 0
  store ptr %4177, ptr %9, align 8
  %4178 = extractvalue { ptr, i32 } %4176, 1
  store i32 %4178, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %345) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %346) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %344) #0
  br label %4179

4179:                                             ; preds = %4175, %4171
  call void @llvm.lifetime.end.p0(i64 8, ptr %344) #0
  br label %4325

4180:                                             ; preds = %4164
  %4181 = landingpad { ptr, i32 }
          cleanup
  %4182 = extractvalue { ptr, i32 } %4181, 0
  store ptr %4182, ptr %9, align 8
  %4183 = extractvalue { ptr, i32 } %4181, 1
  store i32 %4183, ptr %10, align 4
  call void @__cxa_free_exception(ptr %4165) #0
  br label %4325

4184:                                             ; preds = %4156
  br label %4185

4185:                                             ; preds = %4184
  br label %4186

4186:                                             ; preds = %4185
  %4187 = load ptr, ptr %334, align 8, !tbaa !5
  %4188 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4187, i32 0, i32 2
  %4189 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4188) #0
  %4190 = sub i64 128, %4189
  %4191 = add i64 128, %4190
  %4192 = trunc i64 %4191 to i8
  %4193 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %335, i32 0, i32 5
  %4194 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %4193)
          to label %4195 unwind label %4167

4195:                                             ; preds = %4186
  store i8 %4192, ptr %4194, align 1, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 8, ptr %347) #0
  %4196 = load ptr, ptr %334, align 8, !tbaa !5
  %4197 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4196, i32 0, i32 2
  store ptr %4197, ptr %347, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %348) #0
  %4198 = load ptr, ptr %347, align 8, !tbaa !5
  %4199 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4198) #0
  %4200 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %348, i32 0, i32 0
  store ptr %4199, ptr %4200, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %349) #0
  %4201 = load ptr, ptr %347, align 8, !tbaa !5
  %4202 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4201) #0
  %4203 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %349, i32 0, i32 0
  store ptr %4202, ptr %4203, align 8
  br label %4204

4204:                                             ; preds = %4219, %4195
  %4205 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef nonnull align 8 dereferenceable(8) %349) #0
  br i1 %4205, label %4207, label %4206

4206:                                             ; preds = %4204
  store i32 458, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %349) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %348) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %347) #0
  br label %4225

4207:                                             ; preds = %4204
  call void @llvm.lifetime.start.p0(i64 8, ptr %350) #0
  %4208 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %348) #0
  store ptr %4208, ptr %350, align 8, !tbaa !5
  %4209 = load ptr, ptr %6, align 8, !tbaa !5
  %4210 = load ptr, ptr %350, align 8, !tbaa !5
  %4211 = load ptr, ptr %311, align 8, !tbaa !5
  %4212 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %4211, i32 0, i32 0
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %335, ptr noundef nonnull align 8 dereferenceable(8) %4209, ptr noundef nonnull align 8 dereferenceable(212) %4210, ptr noundef nonnull align 8 dereferenceable(8) %4212)
          to label %4213 unwind label %4221

4213:                                             ; preds = %4207
  %4214 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %335, i32 0, i32 5
  %4215 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %4214)
          to label %4216 unwind label %4221

4216:                                             ; preds = %4213
  %4217 = load i8, ptr %4215, align 1, !tbaa !68
  %4218 = add i8 %4217, 1
  store i8 %4218, ptr %4215, align 1, !tbaa !68
  call void @llvm.lifetime.end.p0(i64 8, ptr %350) #0
  br label %4219

4219:                                             ; preds = %4216
  %4220 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %348) #0
  br label %4204

4221:                                             ; preds = %4213, %4207
  %4222 = landingpad { ptr, i32 }
          cleanup
  %4223 = extractvalue { ptr, i32 } %4222, 0
  store ptr %4223, ptr %9, align 8
  %4224 = extractvalue { ptr, i32 } %4222, 1
  store i32 %4224, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %350) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %349) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %348) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %347) #0
  br label %4325

4225:                                             ; preds = %4206
  br label %4226

4226:                                             ; preds = %4225, %4150
  call void @llvm.lifetime.start.p0(i64 24, ptr %351) #0
  %4227 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %335, i32 0, i32 2
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %351, ptr noundef nonnull align 8 dereferenceable(24) %4227) #0
  %4228 = load ptr, ptr %334, align 8, !tbaa !5
  %4229 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4228, i32 0, i32 1
  %4230 = invoke noundef zeroext i1 @_ZNK3HIR14PatternBinding8is_validEv(ptr noundef nonnull align 8 dereferenceable(24) %4229)
          to label %4231 unwind label %4245

4231:                                             ; preds = %4226
  br i1 %4230, label %4232, label %4303

4232:                                             ; preds = %4231
  br label %4233

4233:                                             ; preds = %4232
  %4234 = load ptr, ptr %334, align 8, !tbaa !5
  %4235 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4234, i32 0, i32 1
  %4236 = getelementptr inbounds %"struct.HIR::PatternBinding", ptr %4235, i32 0, i32 4
  %4237 = load i32, ptr %4236, align 4, !tbaa !185
  %4238 = icmp eq i32 %4237, 0
  br i1 %4238, label %4262, label %4239

4239:                                             ; preds = %4233
  call void @llvm.lifetime.start.p0(i64 8, ptr %352) #0
  %4240 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %352, ptr noundef nonnull align 8 dereferenceable(8) %4240)
          to label %4241 unwind label %4249

4241:                                             ; preds = %4239
  call void @llvm.lifetime.start.p0(i64 1, ptr %354) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_38vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %353, ptr noundef nonnull align 1 dereferenceable(1) %354) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %352, ptr noundef %353)
          to label %4242 unwind label %4253

4242:                                             ; preds = %4241
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %353) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %354) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %352) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %352) #0
  %4243 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4243, ptr noundef @.str.10)
          to label %4244 unwind label %4258

4244:                                             ; preds = %4242
  invoke void @__cxa_throw(ptr %4243, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %4245

4245:                                             ; preds = %4244, %4226
  %4246 = landingpad { ptr, i32 }
          cleanup
  %4247 = extractvalue { ptr, i32 } %4246, 0
  store ptr %4247, ptr %9, align 8
  %4248 = extractvalue { ptr, i32 } %4246, 1
  store i32 %4248, ptr %10, align 4
  br label %4324

4249:                                             ; preds = %4239
  %4250 = landingpad { ptr, i32 }
          cleanup
  %4251 = extractvalue { ptr, i32 } %4250, 0
  store ptr %4251, ptr %9, align 8
  %4252 = extractvalue { ptr, i32 } %4250, 1
  store i32 %4252, ptr %10, align 4
  br label %4257

4253:                                             ; preds = %4241
  %4254 = landingpad { ptr, i32 }
          cleanup
  %4255 = extractvalue { ptr, i32 } %4254, 0
  store ptr %4255, ptr %9, align 8
  %4256 = extractvalue { ptr, i32 } %4254, 1
  store i32 %4256, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %353) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %354) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %352) #0
  br label %4257

4257:                                             ; preds = %4253, %4249
  call void @llvm.lifetime.end.p0(i64 8, ptr %352) #0
  br label %4324

4258:                                             ; preds = %4242
  %4259 = landingpad { ptr, i32 }
          cleanup
  %4260 = extractvalue { ptr, i32 } %4259, 0
  store ptr %4260, ptr %9, align 8
  %4261 = extractvalue { ptr, i32 } %4259, 1
  store i32 %4261, ptr %10, align 4
  call void @__cxa_free_exception(ptr %4243) #0
  br label %4324

4262:                                             ; preds = %4233
  br label %4263

4263:                                             ; preds = %4262
  br label %4264

4264:                                             ; preds = %4263
  call void @llvm.lifetime.start.p0(i64 48, ptr %355) #0
  %4265 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_tC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %356, ptr noundef nonnull align 8 dereferenceable(24) %4265)
          to label %4266 unwind label %4285

4266:                                             ; preds = %4264
  %4267 = load ptr, ptr %334, align 8, !tbaa !5
  %4268 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4267, i32 0, i32 1
  invoke void @_ZN14PatternBindingC2E12field_path_tRKN3HIR14PatternBindingE(ptr noundef nonnull align 8 dereferenceable(48) %355, ptr noundef %356, ptr noundef nonnull align 8 dereferenceable(24) %4268)
          to label %4269 unwind label %4289

4269:                                             ; preds = %4266
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %356) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %357) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %358) #0
  %4270 = load ptr, ptr %334, align 8, !tbaa !5
  %4271 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4270, i32 0, i32 0
  %4272 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4271) #0
  store i64 %4272, ptr %358, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr %359) #0
  %4273 = load ptr, ptr %334, align 8, !tbaa !5
  %4274 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_SplitSlice", ptr %4273, i32 0, i32 2
  %4275 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4274) #0
  store i64 %4275, ptr %359, align 8, !tbaa !12
  %4276 = invoke { i64, i64 } @_ZSt9make_pairImmESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 8 dereferenceable(8) %358, ptr noundef nonnull align 8 dereferenceable(8) %359)
          to label %4277 unwind label %4293

4277:                                             ; preds = %4269
  %4278 = getelementptr inbounds { i64, i64 }, ptr %357, i32 0, i32 0
  %4279 = extractvalue { i64, i64 } %4276, 0
  store i64 %4279, ptr %4278, align 8
  %4280 = getelementptr inbounds { i64, i64 }, ptr %357, i32 0, i32 1
  %4281 = extractvalue { i64, i64 } %4276, 1
  store i64 %4281, ptr %4280, align 8
  %4282 = getelementptr inbounds %struct.PatternBinding, ptr %355, i32 0, i32 2
  %4283 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt4pairImmEaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %4282, ptr noundef nonnull align 8 dereferenceable(16) %357) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %359) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %358) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %357) #0
  call void @_ZN14PatternBindingC2EOS_(ptr noundef nonnull align 8 dereferenceable(48) %360, ptr noundef nonnull align 8 dereferenceable(48) %355) #0
  invoke void @_ZN21PatternRulesetBuilder12push_bindingE14PatternBinding(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %360)
          to label %4284 unwind label %4297

4284:                                             ; preds = %4277
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %360) #0
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %355) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %355) #0
  br label %4303

4285:                                             ; preds = %4264
  %4286 = landingpad { ptr, i32 }
          cleanup
  %4287 = extractvalue { ptr, i32 } %4286, 0
  store ptr %4287, ptr %9, align 8
  %4288 = extractvalue { ptr, i32 } %4286, 1
  store i32 %4288, ptr %10, align 4
  br label %4302

4289:                                             ; preds = %4266
  %4290 = landingpad { ptr, i32 }
          cleanup
  %4291 = extractvalue { ptr, i32 } %4290, 0
  store ptr %4291, ptr %9, align 8
  %4292 = extractvalue { ptr, i32 } %4290, 1
  store i32 %4292, ptr %10, align 4
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %356) #0
  br label %4302

4293:                                             ; preds = %4269
  %4294 = landingpad { ptr, i32 }
          cleanup
  %4295 = extractvalue { ptr, i32 } %4294, 0
  store ptr %4295, ptr %9, align 8
  %4296 = extractvalue { ptr, i32 } %4294, 1
  store i32 %4296, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %359) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %358) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %357) #0
  br label %4301

4297:                                             ; preds = %4277
  %4298 = landingpad { ptr, i32 }
          cleanup
  %4299 = extractvalue { ptr, i32 } %4298, 0
  store ptr %4299, ptr %9, align 8
  %4300 = extractvalue { ptr, i32 } %4298, 1
  store i32 %4300, ptr %10, align 4
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %360) #0
  br label %4301

4301:                                             ; preds = %4297, %4293
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %355) #0
  br label %4302

4302:                                             ; preds = %4301, %4289, %4285
  call void @llvm.lifetime.end.p0(i64 48, ptr %355) #0
  br label %4324

4303:                                             ; preds = %4284, %4231
  %4304 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %343) #0
  %4305 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %351) #0
  %4306 = mul i64 %4304, %4305
  call void @llvm.lifetime.start.p0(i64 32, ptr %362) #0
  %4307 = getelementptr inbounds %class.anon.448, ptr %362, i32 0, i32 0
  store ptr %343, ptr %4307, align 8, !tbaa !5
  %4308 = getelementptr inbounds %class.anon.448, ptr %362, i32 0, i32 1
  store ptr %351, ptr %4308, align 8, !tbaa !5
  %4309 = getelementptr inbounds %class.anon.448, ptr %362, i32 0, i32 2
  store ptr %419, ptr %4309, align 8, !tbaa !203
  %4310 = getelementptr inbounds %class.anon.448, ptr %362, i32 0, i32 3
  %4311 = load ptr, ptr %334, align 8, !tbaa !5
  store ptr %4311, ptr %4310, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvmEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS7_7TypeRefEE4$_39vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %361, ptr noundef nonnull align 8 dereferenceable(32) %362)
          to label %4312 unwind label %4315

4312:                                             ; preds = %4303
  invoke void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80) %419, i64 noundef %4306, ptr noundef %361)
          to label %4313 unwind label %4319

4313:                                             ; preds = %4312
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %361) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %362) #0
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %351) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %351) #0
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %343) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %343) #0
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %335) #0
  call void @llvm.lifetime.end.p0(i64 80, ptr %335) #0
  br label %4314

4314:                                             ; preds = %4313
  store i8 0, ptr %333, align 1, !tbaa !39
  br label %4063, !llvm.loop !205

4315:                                             ; preds = %4303
  %4316 = landingpad { ptr, i32 }
          cleanup
  %4317 = extractvalue { ptr, i32 } %4316, 0
  store ptr %4317, ptr %9, align 8
  %4318 = extractvalue { ptr, i32 } %4316, 1
  store i32 %4318, ptr %10, align 4
  br label %4323

4319:                                             ; preds = %4312
  %4320 = landingpad { ptr, i32 }
          cleanup
  %4321 = extractvalue { ptr, i32 } %4320, 0
  store ptr %4321, ptr %9, align 8
  %4322 = extractvalue { ptr, i32 } %4320, 1
  store i32 %4322, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %361) #0
  br label %4323

4323:                                             ; preds = %4319, %4315
  call void @llvm.lifetime.end.p0(i64 32, ptr %362) #0
  br label %4324

4324:                                             ; preds = %4323, %4302, %4258, %4257, %4245
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %351) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %351) #0
  br label %4325

4325:                                             ; preds = %4324, %4221, %4180, %4179, %4167
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %343) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %343) #0
  br label %4326

4326:                                             ; preds = %4325, %4142, %4108, %4107, %4095
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %335) #0
  br label %4327

4327:                                             ; preds = %4326, %4091
  call void @llvm.lifetime.end.p0(i64 80, ptr %335) #0
  br label %4328

4328:                                             ; preds = %4327, %4068
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %333) #0
  br label %4334

4329:                                             ; preds = %4067
  br label %4330

4330:                                             ; preds = %4329
  store i8 0, ptr %333, align 1, !tbaa !39
  br label %4055, !llvm.loop !206

4331:                                             ; preds = %4058
  br label %4332

4332:                                             ; preds = %4331, %4053, %3936, %3906
  br label %4333

4333:                                             ; preds = %4332
  store i8 0, ptr %312, align 1, !tbaa !39
  br label %3870, !llvm.loop !207

4334:                                             ; preds = %4328, %4050, %3933, %3901, %3900, %3878
  call void @llvm.lifetime.end.p0(i64 8, ptr %313) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %312) #0
  br label %4339

4335:                                             ; preds = %3873
  br label %4336

4336:                                             ; preds = %4335
  store i8 0, ptr %312, align 1, !tbaa !39
  br label %3863, !llvm.loop !208

4337:                                             ; preds = %3866
  br label %4338

4338:                                             ; preds = %4337
  store i8 0, ptr %310, align 1, !tbaa !39
  br label %3853, !llvm.loop !209

4339:                                             ; preds = %4334, %3858
  call void @llvm.lifetime.end.p0(i64 8, ptr %311) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %310) #0
  br label %4877

4340:                                             ; preds = %3857
  br label %4341

4341:                                             ; preds = %4340
  store i8 0, ptr %310, align 1, !tbaa !39
  br label %3845, !llvm.loop !210

4342:                                             ; preds = %3848
  br label %4875

4343:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %363) #0
  store i8 1, ptr %363, align 1, !tbaa !39
  br label %4344

4344:                                             ; preds = %4607, %4343
  %4345 = load i8, ptr %363, align 1, !tbaa !39, !range !40, !noundef !41
  %4346 = trunc i8 %4345 to i1
  br i1 %4346, label %4348, label %4347

4347:                                             ; preds = %4344
  store i32 462, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %363) #0
  br label %4608

4348:                                             ; preds = %4344
  call void @llvm.lifetime.start.p0(i64 8, ptr %364) #0
  %4349 = load ptr, ptr %41, align 8, !tbaa !5
  %4350 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %4349)
          to label %4351 unwind label %4357

4351:                                             ; preds = %4348
  store ptr %4350, ptr %364, align 8, !tbaa !5
  br label %4352

4352:                                             ; preds = %4604, %4351
  %4353 = load ptr, ptr %364, align 8, !tbaa !5
  %4354 = load i8, ptr %363, align 1, !tbaa !39, !range !40, !noundef !41
  %4355 = trunc i8 %4354 to i1
  br i1 %4355, label %4361, label %4356

4356:                                             ; preds = %4352
  store i32 465, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %364) #0
  br label %4606

4357:                                             ; preds = %4601, %4379, %4363, %4361, %4348
  %4358 = landingpad { ptr, i32 }
          cleanup
  %4359 = extractvalue { ptr, i32 } %4358, 0
  store ptr %4359, ptr %9, align 8
  %4360 = extractvalue { ptr, i32 } %4358, 1
  store i32 %4360, ptr %10, align 4
  br label %4605

4361:                                             ; preds = %4352
  %4362 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %4362, i8 noundef zeroext -1)
          to label %4363 unwind label %4357

4363:                                             ; preds = %4361
  %4364 = load ptr, ptr %7, align 8, !tbaa !5
  %4365 = getelementptr inbounds %"struct.HIR::Pattern", ptr %4364, i32 0, i32 1
  %4366 = invoke noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %4365)
          to label %4367 unwind label %4357

4367:                                             ; preds = %4363
  switch i32 %4366, label %4369 [
    i32 0, label %4368
    i32 1, label %4395
    i32 3, label %4423
    i32 10, label %4454
  ]

4368:                                             ; preds = %4367
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 1900, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #11
  unreachable

4369:                                             ; preds = %4367
  br label %4370

4370:                                             ; preds = %4369
  call void @llvm.lifetime.start.p0(i64 8, ptr %365) #0
  %4371 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef nonnull align 8 dereferenceable(8) %4371)
          to label %4372 unwind label %4380

4372:                                             ; preds = %4370
  call void @llvm.lifetime.start.p0(i64 16, ptr %367) #0
  %4373 = getelementptr inbounds %class.anon.449, ptr %367, i32 0, i32 0
  %4374 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %4374, ptr %4373, align 8, !tbaa !5
  %4375 = getelementptr inbounds %class.anon.449, ptr %367, i32 0, i32 1
  %4376 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %4376, ptr %4375, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_40vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %366, ptr noundef nonnull align 8 dereferenceable(16) %367) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef %366)
          to label %4377 unwind label %4384

4377:                                             ; preds = %4372
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %366) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %367) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %365) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %365) #0
  %4378 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4378, ptr noundef @.str.10)
          to label %4379 unwind label %4389

4379:                                             ; preds = %4377
  invoke void @__cxa_throw(ptr %4378, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %4357

4380:                                             ; preds = %4370
  %4381 = landingpad { ptr, i32 }
          cleanup
  %4382 = extractvalue { ptr, i32 } %4381, 0
  store ptr %4382, ptr %9, align 8
  %4383 = extractvalue { ptr, i32 } %4381, 1
  store i32 %4383, ptr %10, align 4
  br label %4388

4384:                                             ; preds = %4372
  %4385 = landingpad { ptr, i32 }
          cleanup
  %4386 = extractvalue { ptr, i32 } %4385, 0
  store ptr %4386, ptr %9, align 8
  %4387 = extractvalue { ptr, i32 } %4385, 1
  store i32 %4387, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %366) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %367) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %365) #0
  br label %4388

4388:                                             ; preds = %4384, %4380
  call void @llvm.lifetime.end.p0(i64 8, ptr %365) #0
  br label %4605

4389:                                             ; preds = %4377
  %4390 = landingpad { ptr, i32 }
          cleanup
  %4391 = extractvalue { ptr, i32 } %4390, 0
  store ptr %4391, ptr %9, align 8
  %4392 = extractvalue { ptr, i32 } %4390, 1
  store i32 %4392, ptr %10, align 4
  call void @__cxa_free_exception(ptr %4378) #0
  br label %4605

4393:                                             ; No predecessors!
  br label %4394

4394:                                             ; preds = %4393
  br label %4601

4395:                                             ; preds = %4367
  call void @llvm.lifetime.start.p0(i64 1, ptr %368) #0
  store i8 1, ptr %368, align 1, !tbaa !39
  br label %4396

4396:                                             ; preds = %4421, %4395
  %4397 = load i8, ptr %368, align 1, !tbaa !39, !range !40, !noundef !41
  %4398 = trunc i8 %4397 to i1
  br i1 %4398, label %4400, label %4399

4399:                                             ; preds = %4396
  store i32 471, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %368) #0
  br label %4422

4400:                                             ; preds = %4396
  call void @llvm.lifetime.start.p0(i64 8, ptr %369) #0
  %4401 = load ptr, ptr %7, align 8, !tbaa !5
  %4402 = getelementptr inbounds %"struct.HIR::Pattern", ptr %4401, i32 0, i32 1
  %4403 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %4402)
          to label %4404 unwind label %4410

4404:                                             ; preds = %4400
  store ptr %4403, ptr %369, align 8, !tbaa !5
  br label %4405

4405:                                             ; preds = %4419, %4404
  %4406 = load ptr, ptr %369, align 8, !tbaa !5
  %4407 = load i8, ptr %368, align 1, !tbaa !39, !range !40, !noundef !41
  %4408 = trunc i8 %4407 to i1
  br i1 %4408, label %4414, label %4409

4409:                                             ; preds = %4405
  store i32 474, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %369) #0
  br label %4420

4410:                                             ; preds = %4414, %4400
  %4411 = landingpad { ptr, i32 }
          cleanup
  %4412 = extractvalue { ptr, i32 } %4411, 0
  store ptr %4412, ptr %9, align 8
  %4413 = extractvalue { ptr, i32 } %4411, 1
  store i32 %4413, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %369) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %368) #0
  br label %4605

4414:                                             ; preds = %4405
  %4415 = load ptr, ptr %6, align 8, !tbaa !5
  %4416 = load ptr, ptr %364, align 8, !tbaa !5
  %4417 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %4416, i32 0, i32 2
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %4415, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %4417)
          to label %4418 unwind label %4410

4418:                                             ; preds = %4414
  br label %4419

4419:                                             ; preds = %4418
  store i8 0, ptr %368, align 1, !tbaa !39
  br label %4405, !llvm.loop !211

4420:                                             ; preds = %4409
  br label %4421

4421:                                             ; preds = %4420
  store i8 0, ptr %368, align 1, !tbaa !39
  br label %4396, !llvm.loop !212

4422:                                             ; preds = %4399
  br label %4601

4423:                                             ; preds = %4367
  call void @llvm.lifetime.start.p0(i64 1, ptr %370) #0
  store i8 1, ptr %370, align 1, !tbaa !39
  br label %4424

4424:                                             ; preds = %4452, %4423
  %4425 = load i8, ptr %370, align 1, !tbaa !39, !range !40, !noundef !41
  %4426 = trunc i8 %4425 to i1
  br i1 %4426, label %4428, label %4427

4427:                                             ; preds = %4424
  store i32 477, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %370) #0
  br label %4453

4428:                                             ; preds = %4424
  call void @llvm.lifetime.start.p0(i64 8, ptr %371) #0
  %4429 = load ptr, ptr %7, align 8, !tbaa !5
  %4430 = getelementptr inbounds %"struct.HIR::Pattern", ptr %4429, i32 0, i32 1
  %4431 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR7Pattern4Data6as_RefEv(ptr noundef nonnull align 8 dereferenceable(184) %4430)
          to label %4432 unwind label %4438

4432:                                             ; preds = %4428
  store ptr %4431, ptr %371, align 8, !tbaa !5
  br label %4433

4433:                                             ; preds = %4450, %4432
  %4434 = load ptr, ptr %371, align 8, !tbaa !5
  %4435 = load i8, ptr %370, align 1, !tbaa !39, !range !40, !noundef !41
  %4436 = trunc i8 %4435 to i1
  br i1 %4436, label %4442, label %4437

4437:                                             ; preds = %4433
  store i32 480, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %371) #0
  br label %4451

4438:                                             ; preds = %4442, %4428
  %4439 = landingpad { ptr, i32 }
          cleanup
  %4440 = extractvalue { ptr, i32 } %4439, 0
  store ptr %4440, ptr %9, align 8
  %4441 = extractvalue { ptr, i32 } %4439, 1
  store i32 %4441, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %371) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %370) #0
  br label %4605

4442:                                             ; preds = %4433
  %4443 = load ptr, ptr %6, align 8, !tbaa !5
  %4444 = load ptr, ptr %371, align 8, !tbaa !5
  %4445 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Ref", ptr %4444, i32 0, i32 1
  %4446 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNKSt10unique_ptrIN3HIR7PatternESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4445) #0
  %4447 = load ptr, ptr %364, align 8, !tbaa !5
  %4448 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %4447, i32 0, i32 2
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef nonnull align 8 dereferenceable(8) %4443, ptr noundef nonnull align 8 dereferenceable(212) %4446, ptr noundef nonnull align 8 dereferenceable(8) %4448)
          to label %4449 unwind label %4438

4449:                                             ; preds = %4442
  br label %4450

4450:                                             ; preds = %4449
  store i8 0, ptr %370, align 1, !tbaa !39
  br label %4433, !llvm.loop !213

4451:                                             ; preds = %4437
  br label %4452

4452:                                             ; preds = %4451
  store i8 0, ptr %370, align 1, !tbaa !39
  br label %4424, !llvm.loop !214

4453:                                             ; preds = %4427
  br label %4601

4454:                                             ; preds = %4367
  call void @llvm.lifetime.start.p0(i64 1, ptr %372) #0
  store i8 1, ptr %372, align 1, !tbaa !39
  br label %4455

4455:                                             ; preds = %4599, %4454
  %4456 = load i8, ptr %372, align 1, !tbaa !39, !range !40, !noundef !41
  %4457 = trunc i8 %4456 to i1
  br i1 %4457, label %4459, label %4458

4458:                                             ; preds = %4455
  store i32 483, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %372) #0
  br label %4600

4459:                                             ; preds = %4455
  call void @llvm.lifetime.start.p0(i64 8, ptr %373) #0
  %4460 = load ptr, ptr %7, align 8, !tbaa !5
  %4461 = getelementptr inbounds %"struct.HIR::Pattern", ptr %4460, i32 0, i32 1
  %4462 = invoke noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3HIR7Pattern4Data8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(184) %4461)
          to label %4463 unwind label %4469

4463:                                             ; preds = %4459
  store ptr %4462, ptr %373, align 8, !tbaa !5
  br label %4464

4464:                                             ; preds = %4596, %4463
  %4465 = load ptr, ptr %373, align 8, !tbaa !5
  %4466 = load i8, ptr %372, align 1, !tbaa !39, !range !40, !noundef !41
  %4467 = trunc i8 %4466 to i1
  br i1 %4467, label %4473, label %4468

4468:                                             ; preds = %4464
  store i32 486, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %373) #0
  br label %4598

4469:                                             ; preds = %4578, %4507, %4473, %4459
  %4470 = landingpad { ptr, i32 }
          cleanup
  %4471 = extractvalue { ptr, i32 } %4470, 0
  store ptr %4471, ptr %9, align 8
  %4472 = extractvalue { ptr, i32 } %4470, 1
  store i32 %4472, ptr %10, align 4
  br label %4597

4473:                                             ; preds = %4464
  %4474 = load ptr, ptr %373, align 8, !tbaa !5
  %4475 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Value", ptr %4474, i32 0, i32 0
  %4476 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern5Value9is_StringEv(ptr noundef nonnull align 8 dereferenceable(104) %4475)
          to label %4477 unwind label %4469

4477:                                             ; preds = %4473
  br i1 %4476, label %4478, label %4507

4478:                                             ; preds = %4477
  call void @llvm.lifetime.start.p0(i64 8, ptr %374) #0
  %4479 = load ptr, ptr %373, align 8, !tbaa !5
  %4480 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Value", ptr %4479, i32 0, i32 0
  %4481 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR7Pattern5Value9as_StringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(104) %4480)
          to label %4482 unwind label %4488

4482:                                             ; preds = %4478
  store ptr %4481, ptr %374, align 8, !tbaa !5
  %4483 = load ptr, ptr %374, align 8, !tbaa !5
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %377, ptr noundef nonnull align 8 dereferenceable(32) %4483)
          to label %4484 unwind label %4488

4484:                                             ; preds = %4482
  invoke void @_ZN3MIR8ConstantC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %376, ptr noundef %377)
          to label %4485 unwind label %4492

4485:                                             ; preds = %4484
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %375, ptr noundef %376)
          to label %4486 unwind label %4496

4486:                                             ; preds = %4485
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %375)
          to label %4487 unwind label %4500

4487:                                             ; preds = %4486
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %375) #0
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %376) #0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %377) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #0
  br label %4595

4488:                                             ; preds = %4482, %4478
  %4489 = landingpad { ptr, i32 }
          cleanup
  %4490 = extractvalue { ptr, i32 } %4489, 0
  store ptr %4490, ptr %9, align 8
  %4491 = extractvalue { ptr, i32 } %4489, 1
  store i32 %4491, ptr %10, align 4
  br label %4506

4492:                                             ; preds = %4484
  %4493 = landingpad { ptr, i32 }
          cleanup
  %4494 = extractvalue { ptr, i32 } %4493, 0
  store ptr %4494, ptr %9, align 8
  %4495 = extractvalue { ptr, i32 } %4493, 1
  store i32 %4495, ptr %10, align 4
  br label %4505

4496:                                             ; preds = %4485
  %4497 = landingpad { ptr, i32 }
          cleanup
  %4498 = extractvalue { ptr, i32 } %4497, 0
  store ptr %4498, ptr %9, align 8
  %4499 = extractvalue { ptr, i32 } %4497, 1
  store i32 %4499, ptr %10, align 4
  br label %4504

4500:                                             ; preds = %4486
  %4501 = landingpad { ptr, i32 }
          cleanup
  %4502 = extractvalue { ptr, i32 } %4501, 0
  store ptr %4502, ptr %9, align 8
  %4503 = extractvalue { ptr, i32 } %4501, 1
  store i32 %4503, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %375) #0
  br label %4504

4504:                                             ; preds = %4500, %4496
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %376) #0
  br label %4505

4505:                                             ; preds = %4504, %4492
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %377) #0
  br label %4506

4506:                                             ; preds = %4505, %4488
  call void @llvm.lifetime.end.p0(i64 8, ptr %374) #0
  br label %4597

4507:                                             ; preds = %4477
  %4508 = load ptr, ptr %373, align 8, !tbaa !5
  %4509 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Value", ptr %4508, i32 0, i32 0
  %4510 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern5Value13is_ByteStringEv(ptr noundef nonnull align 8 dereferenceable(104) %4509)
          to label %4511 unwind label %4469

4511:                                             ; preds = %4507
  br i1 %4510, label %4512, label %4570

4512:                                             ; preds = %4511
  call void @llvm.lifetime.start.p0(i64 8, ptr %378) #0
  %4513 = load ptr, ptr %373, align 8, !tbaa !5
  %4514 = getelementptr inbounds %"struct.HIR::Pattern::Data::Data_Value", ptr %4513, i32 0, i32 0
  %4515 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR7Pattern5Value13as_ByteStringEv(ptr noundef nonnull align 8 dereferenceable(104) %4514)
          to label %4516 unwind label %4531

4516:                                             ; preds = %4512
  %4517 = getelementptr inbounds %"struct.HIR::Pattern::Value::Data_ByteString", ptr %4515, i32 0, i32 0
  store ptr %4517, ptr %378, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %379) #0
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %379) #0
  %4518 = load ptr, ptr %378, align 8, !tbaa !5
  %4519 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %4518) #0
  invoke void @_ZNSt6vectorIhSaIhEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %379, i64 noundef %4519)
          to label %4520 unwind label %4535

4520:                                             ; preds = %4516
  call void @llvm.lifetime.start.p0(i64 8, ptr %380) #0
  %4521 = load ptr, ptr %378, align 8, !tbaa !5
  store ptr %4521, ptr %380, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %381) #0
  %4522 = load ptr, ptr %380, align 8, !tbaa !5
  %4523 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %4522) #0
  %4524 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.450", ptr %381, i32 0, i32 0
  store ptr %4523, ptr %4524, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %382) #0
  %4525 = load ptr, ptr %380, align 8, !tbaa !5
  %4526 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %4525) #0
  %4527 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.450", ptr %382, i32 0, i32 0
  store ptr %4526, ptr %4527, align 8
  br label %4528

4528:                                             ; preds = %4544, %4520
  %4529 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef nonnull align 8 dereferenceable(8) %382) #0
  br i1 %4529, label %4539, label %4530

4530:                                             ; preds = %4528
  store i32 489, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %382) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %381) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %380) #0
  br label %4550

4531:                                             ; preds = %4512
  %4532 = landingpad { ptr, i32 }
          cleanup
  %4533 = extractvalue { ptr, i32 } %4532, 0
  store ptr %4533, ptr %9, align 8
  %4534 = extractvalue { ptr, i32 } %4532, 1
  store i32 %4534, ptr %10, align 4
  br label %4569

4535:                                             ; preds = %4516
  %4536 = landingpad { ptr, i32 }
          cleanup
  %4537 = extractvalue { ptr, i32 } %4536, 0
  store ptr %4537, ptr %9, align 8
  %4538 = extractvalue { ptr, i32 } %4536, 1
  store i32 %4538, ptr %10, align 4
  br label %4568

4539:                                             ; preds = %4528
  call void @llvm.lifetime.start.p0(i64 1, ptr %383) #0
  %4540 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %381) #0
  %4541 = load i8, ptr %4540, align 1, !tbaa !68
  store i8 %4541, ptr %383, align 1, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 1, ptr %384) #0
  %4542 = load i8, ptr %383, align 1, !tbaa !68
  store i8 %4542, ptr %384, align 1, !tbaa !68
  invoke void @_ZNSt6vectorIhSaIhEE9push_backEOh(ptr noundef nonnull align 8 dereferenceable(24) %379, ptr noundef nonnull align 1 dereferenceable(1) %384)
          to label %4543 unwind label %4546

4543:                                             ; preds = %4539
  call void @llvm.lifetime.end.p0(i64 1, ptr %384) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %383) #0
  br label %4544

4544:                                             ; preds = %4543
  %4545 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %381) #0
  br label %4528

4546:                                             ; preds = %4539
  %4547 = landingpad { ptr, i32 }
          cleanup
  %4548 = extractvalue { ptr, i32 } %4547, 0
  store ptr %4548, ptr %9, align 8
  %4549 = extractvalue { ptr, i32 } %4547, 1
  store i32 %4549, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %384) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %383) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %382) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %381) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %380) #0
  br label %4568

4550:                                             ; preds = %4530
  call void @_ZNSt6vectorIhSaIhEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %387, ptr noundef nonnull align 8 dereferenceable(24) %379) #0
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %386, ptr noundef %387)
          to label %4551 unwind label %4554

4551:                                             ; preds = %4550
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %385, ptr noundef %386)
          to label %4552 unwind label %4558

4552:                                             ; preds = %4551
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %385)
          to label %4553 unwind label %4562

4553:                                             ; preds = %4552
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %385) #0
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %386) #0
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %387) #0
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %379) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %379) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %378) #0
  br label %4594

4554:                                             ; preds = %4550
  %4555 = landingpad { ptr, i32 }
          cleanup
  %4556 = extractvalue { ptr, i32 } %4555, 0
  store ptr %4556, ptr %9, align 8
  %4557 = extractvalue { ptr, i32 } %4555, 1
  store i32 %4557, ptr %10, align 4
  br label %4567

4558:                                             ; preds = %4551
  %4559 = landingpad { ptr, i32 }
          cleanup
  %4560 = extractvalue { ptr, i32 } %4559, 0
  store ptr %4560, ptr %9, align 8
  %4561 = extractvalue { ptr, i32 } %4559, 1
  store i32 %4561, ptr %10, align 4
  br label %4566

4562:                                             ; preds = %4552
  %4563 = landingpad { ptr, i32 }
          cleanup
  %4564 = extractvalue { ptr, i32 } %4563, 0
  store ptr %4564, ptr %9, align 8
  %4565 = extractvalue { ptr, i32 } %4563, 1
  store i32 %4565, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %385) #0
  br label %4566

4566:                                             ; preds = %4562, %4558
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %386) #0
  br label %4567

4567:                                             ; preds = %4566, %4554
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %387) #0
  br label %4568

4568:                                             ; preds = %4567, %4546, %4535
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %379) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %379) #0
  br label %4569

4569:                                             ; preds = %4568, %4531
  call void @llvm.lifetime.end.p0(i64 8, ptr %378) #0
  br label %4597

4570:                                             ; preds = %4511
  br label %4571

4571:                                             ; preds = %4570
  call void @llvm.lifetime.start.p0(i64 8, ptr %388) #0
  %4572 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %388, ptr noundef nonnull align 8 dereferenceable(8) %4572)
          to label %4573 unwind label %4579

4573:                                             ; preds = %4571
  call void @llvm.lifetime.start.p0(i64 8, ptr %390) #0
  %4574 = getelementptr inbounds %class.anon.451, ptr %390, i32 0, i32 0
  %4575 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %4575, ptr %4574, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_41vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %389, ptr noundef nonnull align 8 dereferenceable(8) %390) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %388, ptr noundef %389)
          to label %4576 unwind label %4583

4576:                                             ; preds = %4573
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %389) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %390) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %388) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %388) #0
  %4577 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4577, ptr noundef @.str.10)
          to label %4578 unwind label %4588

4578:                                             ; preds = %4576
  invoke void @__cxa_throw(ptr %4577, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %4469

4579:                                             ; preds = %4571
  %4580 = landingpad { ptr, i32 }
          cleanup
  %4581 = extractvalue { ptr, i32 } %4580, 0
  store ptr %4581, ptr %9, align 8
  %4582 = extractvalue { ptr, i32 } %4580, 1
  store i32 %4582, ptr %10, align 4
  br label %4587

4583:                                             ; preds = %4573
  %4584 = landingpad { ptr, i32 }
          cleanup
  %4585 = extractvalue { ptr, i32 } %4584, 0
  store ptr %4585, ptr %9, align 8
  %4586 = extractvalue { ptr, i32 } %4584, 1
  store i32 %4586, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %389) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %390) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %388) #0
  br label %4587

4587:                                             ; preds = %4583, %4579
  call void @llvm.lifetime.end.p0(i64 8, ptr %388) #0
  br label %4597

4588:                                             ; preds = %4576
  %4589 = landingpad { ptr, i32 }
          cleanup
  %4590 = extractvalue { ptr, i32 } %4589, 0
  store ptr %4590, ptr %9, align 8
  %4591 = extractvalue { ptr, i32 } %4589, 1
  store i32 %4591, ptr %10, align 4
  call void @__cxa_free_exception(ptr %4577) #0
  br label %4597

4592:                                             ; No predecessors!
  br label %4593

4593:                                             ; preds = %4592
  br label %4594

4594:                                             ; preds = %4593, %4553
  br label %4595

4595:                                             ; preds = %4594, %4487
  br label %4596

4596:                                             ; preds = %4595
  store i8 0, ptr %372, align 1, !tbaa !39
  br label %4464, !llvm.loop !215

4597:                                             ; preds = %4588, %4587, %4569, %4506, %4469
  call void @llvm.lifetime.end.p0(i64 8, ptr %373) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %372) #0
  br label %4605

4598:                                             ; preds = %4468
  br label %4599

4599:                                             ; preds = %4598
  store i8 0, ptr %372, align 1, !tbaa !39
  br label %4455, !llvm.loop !216

4600:                                             ; preds = %4458
  br label %4601

4601:                                             ; preds = %4600, %4453, %4422, %4394
  %4602 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %4602)
          to label %4603 unwind label %4357

4603:                                             ; preds = %4601
  br label %4604

4604:                                             ; preds = %4603
  store i8 0, ptr %363, align 1, !tbaa !39
  br label %4352, !llvm.loop !217

4605:                                             ; preds = %4597, %4438, %4410, %4389, %4388, %4357
  call void @llvm.lifetime.end.p0(i64 8, ptr %364) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %363) #0
  br label %4877

4606:                                             ; preds = %4356
  br label %4607

4607:                                             ; preds = %4606
  store i8 0, ptr %363, align 1, !tbaa !39
  br label %4344, !llvm.loop !218

4608:                                             ; preds = %4347
  br label %4875

4609:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %391) #0
  store i8 1, ptr %391, align 1, !tbaa !39
  br label %4610

4610:                                             ; preds = %4665, %4609
  %4611 = load i8, ptr %391, align 1, !tbaa !39, !range !40, !noundef !41
  %4612 = trunc i8 %4611 to i1
  br i1 %4612, label %4614, label %4613

4613:                                             ; preds = %4610
  store i32 493, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %391) #0
  br label %4666

4614:                                             ; preds = %4610
  call void @llvm.lifetime.start.p0(i64 8, ptr %392) #0
  %4615 = load ptr, ptr %41, align 8, !tbaa !5
  %4616 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %4615)
          to label %4617 unwind label %4623

4617:                                             ; preds = %4614
  store ptr %4616, ptr %392, align 8, !tbaa !5
  br label %4618

4618:                                             ; preds = %4662, %4617
  %4619 = load ptr, ptr %392, align 8, !tbaa !5
  %4620 = load i8, ptr %391, align 1, !tbaa !39, !range !40, !noundef !41
  %4621 = trunc i8 %4620 to i1
  br i1 %4621, label %4627, label %4622

4622:                                             ; preds = %4618
  store i32 496, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %392) #0
  br label %4664

4623:                                             ; preds = %4645, %4632, %4627, %4614
  %4624 = landingpad { ptr, i32 }
          cleanup
  %4625 = extractvalue { ptr, i32 } %4624, 0
  store ptr %4625, ptr %9, align 8
  %4626 = extractvalue { ptr, i32 } %4624, 1
  store i32 %4626, ptr %10, align 4
  br label %4663

4627:                                             ; preds = %4618
  %4628 = load ptr, ptr %7, align 8, !tbaa !5
  %4629 = getelementptr inbounds %"struct.HIR::Pattern", ptr %4628, i32 0, i32 1
  %4630 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %4629)
          to label %4631 unwind label %4623

4631:                                             ; preds = %4627
  br i1 %4630, label %4632, label %4639

4632:                                             ; preds = %4631
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %393)
          to label %4633 unwind label %4623

4633:                                             ; preds = %4632
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %419, ptr noundef %393)
          to label %4634 unwind label %4635

4634:                                             ; preds = %4633
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %393) #0
  br label %4661

4635:                                             ; preds = %4633
  %4636 = landingpad { ptr, i32 }
          cleanup
  %4637 = extractvalue { ptr, i32 } %4636, 0
  store ptr %4637, ptr %9, align 8
  %4638 = extractvalue { ptr, i32 } %4636, 1
  store i32 %4638, ptr %10, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %393) #0
  br label %4663

4639:                                             ; preds = %4631
  br label %4640

4640:                                             ; preds = %4639
  call void @llvm.lifetime.start.p0(i64 8, ptr %395) #0
  %4641 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %395, ptr noundef nonnull align 8 dereferenceable(8) %4641)
          to label %4642 unwind label %4646

4642:                                             ; preds = %4640
  call void @llvm.lifetime.start.p0(i64 1, ptr %397) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_42vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %396, ptr noundef nonnull align 1 dereferenceable(1) %397) #0
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %395, i32 noundef 0, ptr noundef %396)
          to label %4643 unwind label %4650

4643:                                             ; preds = %4642
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %396) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %397) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %395) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %395) #0
  %4644 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4644, ptr noundef @.str.59)
          to label %4645 unwind label %4655

4645:                                             ; preds = %4643
  invoke void @__cxa_throw(ptr %4644, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %4623

4646:                                             ; preds = %4640
  %4647 = landingpad { ptr, i32 }
          cleanup
  %4648 = extractvalue { ptr, i32 } %4647, 0
  store ptr %4648, ptr %9, align 8
  %4649 = extractvalue { ptr, i32 } %4647, 1
  store i32 %4649, ptr %10, align 4
  br label %4654

4650:                                             ; preds = %4642
  %4651 = landingpad { ptr, i32 }
          cleanup
  %4652 = extractvalue { ptr, i32 } %4651, 0
  store ptr %4652, ptr %9, align 8
  %4653 = extractvalue { ptr, i32 } %4651, 1
  store i32 %4653, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %396) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %397) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %395) #0
  br label %4654

4654:                                             ; preds = %4650, %4646
  call void @llvm.lifetime.end.p0(i64 8, ptr %395) #0
  br label %4663

4655:                                             ; preds = %4643
  %4656 = landingpad { ptr, i32 }
          cleanup
  %4657 = extractvalue { ptr, i32 } %4656, 0
  store ptr %4657, ptr %9, align 8
  %4658 = extractvalue { ptr, i32 } %4656, 1
  store i32 %4658, ptr %10, align 4
  call void @__cxa_free_exception(ptr %4644) #0
  br label %4663

4659:                                             ; No predecessors!
  br label %4660

4660:                                             ; preds = %4659
  br label %4661

4661:                                             ; preds = %4660, %4634
  br label %4662

4662:                                             ; preds = %4661
  store i8 0, ptr %391, align 1, !tbaa !39
  br label %4618, !llvm.loop !219

4663:                                             ; preds = %4655, %4654, %4635, %4623
  call void @llvm.lifetime.end.p0(i64 8, ptr %392) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %391) #0
  br label %4877

4664:                                             ; preds = %4622
  br label %4665

4665:                                             ; preds = %4664
  store i8 0, ptr %391, align 1, !tbaa !39
  br label %4610, !llvm.loop !220

4666:                                             ; preds = %4613
  br label %4875

4667:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %398) #0
  store i8 1, ptr %398, align 1, !tbaa !39
  br label %4668

4668:                                             ; preds = %4717, %4667
  %4669 = load i8, ptr %398, align 1, !tbaa !39, !range !40, !noundef !41
  %4670 = trunc i8 %4669 to i1
  br i1 %4670, label %4672, label %4671

4671:                                             ; preds = %4668
  store i32 501, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %398) #0
  br label %4718

4672:                                             ; preds = %4668
  call void @llvm.lifetime.start.p0(i64 8, ptr %399) #0
  %4673 = load ptr, ptr %41, align 8, !tbaa !5
  %4674 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %4673)
          to label %4675 unwind label %4681

4675:                                             ; preds = %4672
  store ptr %4674, ptr %399, align 8, !tbaa !5
  br label %4676

4676:                                             ; preds = %4714, %4675
  %4677 = load ptr, ptr %399, align 8, !tbaa !5
  %4678 = load i8, ptr %398, align 1, !tbaa !39, !range !40, !noundef !41
  %4679 = trunc i8 %4678 to i1
  br i1 %4679, label %4685, label %4680

4680:                                             ; preds = %4676
  store i32 504, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #0
  br label %4716

4681:                                             ; preds = %4697, %4685, %4672
  %4682 = landingpad { ptr, i32 }
          cleanup
  %4683 = extractvalue { ptr, i32 } %4682, 0
  store ptr %4683, ptr %9, align 8
  %4684 = extractvalue { ptr, i32 } %4682, 1
  store i32 %4684, ptr %10, align 4
  br label %4715

4685:                                             ; preds = %4676
  %4686 = load ptr, ptr %7, align 8, !tbaa !5
  %4687 = getelementptr inbounds %"struct.HIR::Pattern", ptr %4686, i32 0, i32 1
  %4688 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %4687)
          to label %4689 unwind label %4681

4689:                                             ; preds = %4685
  br i1 %4688, label %4690, label %4691

4690:                                             ; preds = %4689
  br label %4713

4691:                                             ; preds = %4689
  br label %4692

4692:                                             ; preds = %4691
  call void @llvm.lifetime.start.p0(i64 8, ptr %400) #0
  %4693 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %400, ptr noundef nonnull align 8 dereferenceable(8) %4693)
          to label %4694 unwind label %4698

4694:                                             ; preds = %4692
  call void @llvm.lifetime.start.p0(i64 1, ptr %402) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_43vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %401, ptr noundef nonnull align 1 dereferenceable(1) %402) #0
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %400, i32 noundef 0, ptr noundef %401)
          to label %4695 unwind label %4702

4695:                                             ; preds = %4694
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %401) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %402) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %400) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %400) #0
  %4696 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4696, ptr noundef @.str.59)
          to label %4697 unwind label %4707

4697:                                             ; preds = %4695
  invoke void @__cxa_throw(ptr %4696, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %4681

4698:                                             ; preds = %4692
  %4699 = landingpad { ptr, i32 }
          cleanup
  %4700 = extractvalue { ptr, i32 } %4699, 0
  store ptr %4700, ptr %9, align 8
  %4701 = extractvalue { ptr, i32 } %4699, 1
  store i32 %4701, ptr %10, align 4
  br label %4706

4702:                                             ; preds = %4694
  %4703 = landingpad { ptr, i32 }
          cleanup
  %4704 = extractvalue { ptr, i32 } %4703, 0
  store ptr %4704, ptr %9, align 8
  %4705 = extractvalue { ptr, i32 } %4703, 1
  store i32 %4705, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %401) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %402) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %400) #0
  br label %4706

4706:                                             ; preds = %4702, %4698
  call void @llvm.lifetime.end.p0(i64 8, ptr %400) #0
  br label %4715

4707:                                             ; preds = %4695
  %4708 = landingpad { ptr, i32 }
          cleanup
  %4709 = extractvalue { ptr, i32 } %4708, 0
  store ptr %4709, ptr %9, align 8
  %4710 = extractvalue { ptr, i32 } %4708, 1
  store i32 %4710, ptr %10, align 4
  call void @__cxa_free_exception(ptr %4696) #0
  br label %4715

4711:                                             ; No predecessors!
  br label %4712

4712:                                             ; preds = %4711
  br label %4713

4713:                                             ; preds = %4712, %4690
  br label %4714

4714:                                             ; preds = %4713
  store i8 0, ptr %398, align 1, !tbaa !39
  br label %4676, !llvm.loop !221

4715:                                             ; preds = %4707, %4706, %4681
  call void @llvm.lifetime.end.p0(i64 8, ptr %399) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %398) #0
  br label %4877

4716:                                             ; preds = %4680
  br label %4717

4717:                                             ; preds = %4716
  store i8 0, ptr %398, align 1, !tbaa !39
  br label %4668, !llvm.loop !222

4718:                                             ; preds = %4671
  br label %4875

4719:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %403) #0
  store i8 1, ptr %403, align 1, !tbaa !39
  br label %4720

4720:                                             ; preds = %4769, %4719
  %4721 = load i8, ptr %403, align 1, !tbaa !39, !range !40, !noundef !41
  %4722 = trunc i8 %4721 to i1
  br i1 %4722, label %4724, label %4723

4723:                                             ; preds = %4720
  store i32 509, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %403) #0
  br label %4770

4724:                                             ; preds = %4720
  call void @llvm.lifetime.start.p0(i64 8, ptr %404) #0
  %4725 = load ptr, ptr %41, align 8, !tbaa !5
  %4726 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %4725)
          to label %4727 unwind label %4733

4727:                                             ; preds = %4724
  store ptr %4726, ptr %404, align 8, !tbaa !5
  br label %4728

4728:                                             ; preds = %4766, %4727
  %4729 = load ptr, ptr %404, align 8, !tbaa !5
  %4730 = load i8, ptr %403, align 1, !tbaa !39, !range !40, !noundef !41
  %4731 = trunc i8 %4730 to i1
  br i1 %4731, label %4737, label %4732

4732:                                             ; preds = %4728
  store i32 512, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %404) #0
  br label %4768

4733:                                             ; preds = %4749, %4737, %4724
  %4734 = landingpad { ptr, i32 }
          cleanup
  %4735 = extractvalue { ptr, i32 } %4734, 0
  store ptr %4735, ptr %9, align 8
  %4736 = extractvalue { ptr, i32 } %4734, 1
  store i32 %4736, ptr %10, align 4
  br label %4767

4737:                                             ; preds = %4728
  %4738 = load ptr, ptr %7, align 8, !tbaa !5
  %4739 = getelementptr inbounds %"struct.HIR::Pattern", ptr %4738, i32 0, i32 1
  %4740 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %4739)
          to label %4741 unwind label %4733

4741:                                             ; preds = %4737
  br i1 %4740, label %4742, label %4743

4742:                                             ; preds = %4741
  br label %4765

4743:                                             ; preds = %4741
  br label %4744

4744:                                             ; preds = %4743
  call void @llvm.lifetime.start.p0(i64 8, ptr %405) #0
  %4745 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %405, ptr noundef nonnull align 8 dereferenceable(8) %4745)
          to label %4746 unwind label %4750

4746:                                             ; preds = %4744
  call void @llvm.lifetime.start.p0(i64 1, ptr %407) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_44vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %406, ptr noundef nonnull align 1 dereferenceable(1) %407) #0
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %405, i32 noundef 0, ptr noundef %406)
          to label %4747 unwind label %4754

4747:                                             ; preds = %4746
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %406) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %407) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %405) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %405) #0
  %4748 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4748, ptr noundef @.str.59)
          to label %4749 unwind label %4759

4749:                                             ; preds = %4747
  invoke void @__cxa_throw(ptr %4748, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %4733

4750:                                             ; preds = %4744
  %4751 = landingpad { ptr, i32 }
          cleanup
  %4752 = extractvalue { ptr, i32 } %4751, 0
  store ptr %4752, ptr %9, align 8
  %4753 = extractvalue { ptr, i32 } %4751, 1
  store i32 %4753, ptr %10, align 4
  br label %4758

4754:                                             ; preds = %4746
  %4755 = landingpad { ptr, i32 }
          cleanup
  %4756 = extractvalue { ptr, i32 } %4755, 0
  store ptr %4756, ptr %9, align 8
  %4757 = extractvalue { ptr, i32 } %4755, 1
  store i32 %4757, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %406) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %407) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %405) #0
  br label %4758

4758:                                             ; preds = %4754, %4750
  call void @llvm.lifetime.end.p0(i64 8, ptr %405) #0
  br label %4767

4759:                                             ; preds = %4747
  %4760 = landingpad { ptr, i32 }
          cleanup
  %4761 = extractvalue { ptr, i32 } %4760, 0
  store ptr %4761, ptr %9, align 8
  %4762 = extractvalue { ptr, i32 } %4760, 1
  store i32 %4762, ptr %10, align 4
  call void @__cxa_free_exception(ptr %4748) #0
  br label %4767

4763:                                             ; No predecessors!
  br label %4764

4764:                                             ; preds = %4763
  br label %4765

4765:                                             ; preds = %4764, %4742
  br label %4766

4766:                                             ; preds = %4765
  store i8 0, ptr %403, align 1, !tbaa !39
  br label %4728, !llvm.loop !223

4767:                                             ; preds = %4759, %4758, %4733
  call void @llvm.lifetime.end.p0(i64 8, ptr %404) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %403) #0
  br label %4877

4768:                                             ; preds = %4732
  br label %4769

4769:                                             ; preds = %4768
  store i8 0, ptr %403, align 1, !tbaa !39
  br label %4720, !llvm.loop !224

4770:                                             ; preds = %4723
  br label %4875

4771:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %408) #0
  store i8 1, ptr %408, align 1, !tbaa !39
  br label %4772

4772:                                             ; preds = %4821, %4771
  %4773 = load i8, ptr %408, align 1, !tbaa !39, !range !40, !noundef !41
  %4774 = trunc i8 %4773 to i1
  br i1 %4774, label %4776, label %4775

4775:                                             ; preds = %4772
  store i32 517, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %408) #0
  br label %4822

4776:                                             ; preds = %4772
  call void @llvm.lifetime.start.p0(i64 8, ptr %409) #0
  %4777 = load ptr, ptr %41, align 8, !tbaa !5
  %4778 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %4777)
          to label %4779 unwind label %4785

4779:                                             ; preds = %4776
  store ptr %4778, ptr %409, align 8, !tbaa !5
  br label %4780

4780:                                             ; preds = %4818, %4779
  %4781 = load ptr, ptr %409, align 8, !tbaa !5
  %4782 = load i8, ptr %408, align 1, !tbaa !39, !range !40, !noundef !41
  %4783 = trunc i8 %4782 to i1
  br i1 %4783, label %4789, label %4784

4784:                                             ; preds = %4780
  store i32 520, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %409) #0
  br label %4820

4785:                                             ; preds = %4801, %4789, %4776
  %4786 = landingpad { ptr, i32 }
          cleanup
  %4787 = extractvalue { ptr, i32 } %4786, 0
  store ptr %4787, ptr %9, align 8
  %4788 = extractvalue { ptr, i32 } %4786, 1
  store i32 %4788, ptr %10, align 4
  br label %4819

4789:                                             ; preds = %4780
  %4790 = load ptr, ptr %7, align 8, !tbaa !5
  %4791 = getelementptr inbounds %"struct.HIR::Pattern", ptr %4790, i32 0, i32 1
  %4792 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %4791)
          to label %4793 unwind label %4785

4793:                                             ; preds = %4789
  br i1 %4792, label %4794, label %4795

4794:                                             ; preds = %4793
  br label %4817

4795:                                             ; preds = %4793
  br label %4796

4796:                                             ; preds = %4795
  call void @llvm.lifetime.start.p0(i64 8, ptr %410) #0
  %4797 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef nonnull align 8 dereferenceable(8) %4797)
          to label %4798 unwind label %4802

4798:                                             ; preds = %4796
  call void @llvm.lifetime.start.p0(i64 1, ptr %412) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_45vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %411, ptr noundef nonnull align 1 dereferenceable(1) %412) #0
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %410, i32 noundef 0, ptr noundef %411)
          to label %4799 unwind label %4806

4799:                                             ; preds = %4798
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %411) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %412) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %410) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %410) #0
  %4800 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4800, ptr noundef @.str.59)
          to label %4801 unwind label %4811

4801:                                             ; preds = %4799
  invoke void @__cxa_throw(ptr %4800, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %4785

4802:                                             ; preds = %4796
  %4803 = landingpad { ptr, i32 }
          cleanup
  %4804 = extractvalue { ptr, i32 } %4803, 0
  store ptr %4804, ptr %9, align 8
  %4805 = extractvalue { ptr, i32 } %4803, 1
  store i32 %4805, ptr %10, align 4
  br label %4810

4806:                                             ; preds = %4798
  %4807 = landingpad { ptr, i32 }
          cleanup
  %4808 = extractvalue { ptr, i32 } %4807, 0
  store ptr %4808, ptr %9, align 8
  %4809 = extractvalue { ptr, i32 } %4807, 1
  store i32 %4809, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %411) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %412) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %410) #0
  br label %4810

4810:                                             ; preds = %4806, %4802
  call void @llvm.lifetime.end.p0(i64 8, ptr %410) #0
  br label %4819

4811:                                             ; preds = %4799
  %4812 = landingpad { ptr, i32 }
          cleanup
  %4813 = extractvalue { ptr, i32 } %4812, 0
  store ptr %4813, ptr %9, align 8
  %4814 = extractvalue { ptr, i32 } %4812, 1
  store i32 %4814, ptr %10, align 4
  call void @__cxa_free_exception(ptr %4800) #0
  br label %4819

4815:                                             ; No predecessors!
  br label %4816

4816:                                             ; preds = %4815
  br label %4817

4817:                                             ; preds = %4816, %4794
  br label %4818

4818:                                             ; preds = %4817
  store i8 0, ptr %408, align 1, !tbaa !39
  br label %4780, !llvm.loop !225

4819:                                             ; preds = %4811, %4810, %4785
  call void @llvm.lifetime.end.p0(i64 8, ptr %409) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %408) #0
  br label %4877

4820:                                             ; preds = %4784
  br label %4821

4821:                                             ; preds = %4820
  store i8 0, ptr %408, align 1, !tbaa !39
  br label %4772, !llvm.loop !226

4822:                                             ; preds = %4775
  br label %4875

4823:                                             ; preds = %749
  call void @llvm.lifetime.start.p0(i64 1, ptr %413) #0
  store i8 1, ptr %413, align 1, !tbaa !39
  br label %4824

4824:                                             ; preds = %4873, %4823
  %4825 = load i8, ptr %413, align 1, !tbaa !39, !range !40, !noundef !41
  %4826 = trunc i8 %4825 to i1
  br i1 %4826, label %4828, label %4827

4827:                                             ; preds = %4824
  store i32 525, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %413) #0
  br label %4874

4828:                                             ; preds = %4824
  call void @llvm.lifetime.start.p0(i64 8, ptr %414) #0
  %4829 = load ptr, ptr %41, align 8, !tbaa !5
  %4830 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %4829)
          to label %4831 unwind label %4837

4831:                                             ; preds = %4828
  store ptr %4830, ptr %414, align 8, !tbaa !5
  br label %4832

4832:                                             ; preds = %4870, %4831
  %4833 = load ptr, ptr %414, align 8, !tbaa !5
  %4834 = load i8, ptr %413, align 1, !tbaa !39, !range !40, !noundef !41
  %4835 = trunc i8 %4834 to i1
  br i1 %4835, label %4841, label %4836

4836:                                             ; preds = %4832
  store i32 528, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %414) #0
  br label %4872

4837:                                             ; preds = %4853, %4841, %4828
  %4838 = landingpad { ptr, i32 }
          cleanup
  %4839 = extractvalue { ptr, i32 } %4838, 0
  store ptr %4839, ptr %9, align 8
  %4840 = extractvalue { ptr, i32 } %4838, 1
  store i32 %4840, ptr %10, align 4
  br label %4871

4841:                                             ; preds = %4832
  %4842 = load ptr, ptr %7, align 8, !tbaa !5
  %4843 = getelementptr inbounds %"struct.HIR::Pattern", ptr %4842, i32 0, i32 1
  %4844 = invoke noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %4843)
          to label %4845 unwind label %4837

4845:                                             ; preds = %4841
  br i1 %4844, label %4846, label %4847

4846:                                             ; preds = %4845
  br label %4869

4847:                                             ; preds = %4845
  br label %4848

4848:                                             ; preds = %4847
  call void @llvm.lifetime.start.p0(i64 8, ptr %415) #0
  %4849 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %415, ptr noundef nonnull align 8 dereferenceable(8) %4849)
          to label %4850 unwind label %4854

4850:                                             ; preds = %4848
  call void @llvm.lifetime.start.p0(i64 1, ptr %417) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_46vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %416, ptr noundef nonnull align 1 dereferenceable(1) %417) #0
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %415, i32 noundef 0, ptr noundef %416)
          to label %4851 unwind label %4858

4851:                                             ; preds = %4850
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %416) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %417) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #0
  %4852 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4852, ptr noundef @.str.59)
          to label %4853 unwind label %4863

4853:                                             ; preds = %4851
  invoke void @__cxa_throw(ptr %4852, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %4912 unwind label %4837

4854:                                             ; preds = %4848
  %4855 = landingpad { ptr, i32 }
          cleanup
  %4856 = extractvalue { ptr, i32 } %4855, 0
  store ptr %4856, ptr %9, align 8
  %4857 = extractvalue { ptr, i32 } %4855, 1
  store i32 %4857, ptr %10, align 4
  br label %4862

4858:                                             ; preds = %4850
  %4859 = landingpad { ptr, i32 }
          cleanup
  %4860 = extractvalue { ptr, i32 } %4859, 0
  store ptr %4860, ptr %9, align 8
  %4861 = extractvalue { ptr, i32 } %4859, 1
  store i32 %4861, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %416) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %417) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #0
  br label %4862

4862:                                             ; preds = %4858, %4854
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #0
  br label %4871

4863:                                             ; preds = %4851
  %4864 = landingpad { ptr, i32 }
          cleanup
  %4865 = extractvalue { ptr, i32 } %4864, 0
  store ptr %4865, ptr %9, align 8
  %4866 = extractvalue { ptr, i32 } %4864, 1
  store i32 %4866, ptr %10, align 4
  call void @__cxa_free_exception(ptr %4852) #0
  br label %4871

4867:                                             ; No predecessors!
  br label %4868

4868:                                             ; preds = %4867
  br label %4869

4869:                                             ; preds = %4868, %4846
  br label %4870

4870:                                             ; preds = %4869
  store i8 0, ptr %413, align 1, !tbaa !39
  br label %4832, !llvm.loop !227

4871:                                             ; preds = %4863, %4862, %4837
  call void @llvm.lifetime.end.p0(i64 8, ptr %414) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %413) #0
  br label %4877

4872:                                             ; preds = %4836
  br label %4873

4873:                                             ; preds = %4872
  store i8 0, ptr %413, align 1, !tbaa !39
  br label %4824, !llvm.loop !228

4874:                                             ; preds = %4827
  br label %4875

4875:                                             ; preds = %4874, %4822, %4770, %4718, %4666, %4608, %4342, %3843, %3285, %3233, %3181, %3108, %1364, %1117, %818, %795, %749
  br label %4876

4876:                                             ; preds = %4875
  store i8 0, ptr %40, align 1, !tbaa !39
  br label %738, !llvm.loop !229

4877:                                             ; preds = %4871, %4819, %4767, %4715, %4663, %4605, %4339, %3840, %3282, %3230, %3178, %3105, %1361, %1114, %810, %792, %742
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #0
  br label %4903

4878:                                             ; preds = %741
  br label %4879

4879:                                             ; preds = %4878
  store i8 0, ptr %40, align 1, !tbaa !39
  br label %730, !llvm.loop !230

4880:                                             ; preds = %733
  call void @llvm.lifetime.start.p0(i64 8, ptr %418) #0
  store i64 0, ptr %418, align 8, !tbaa !12
  br label %4881

4881:                                             ; preds = %4892, %4880
  %4882 = load i64, ptr %418, align 8, !tbaa !12
  %4883 = load ptr, ptr %7, align 8, !tbaa !5
  %4884 = getelementptr inbounds %"struct.HIR::Pattern", ptr %4883, i32 0, i32 2
  %4885 = load i32, ptr %4884, align 8, !tbaa !22
  %4886 = zext i32 %4885 to i64
  %4887 = icmp ult i64 %4882, %4886
  br i1 %4887, label %4889, label %4888

4888:                                             ; preds = %4881
  store i32 533, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %418) #0
  br label %4899

4889:                                             ; preds = %4881
  %4890 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %419, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %4890)
          to label %4891 unwind label %4895

4891:                                             ; preds = %4889
  br label %4892

4892:                                             ; preds = %4891
  %4893 = load i64, ptr %418, align 8, !tbaa !12
  %4894 = add i64 %4893, 1
  store i64 %4894, ptr %418, align 8, !tbaa !12
  br label %4881, !llvm.loop !231

4895:                                             ; preds = %4889
  %4896 = landingpad { ptr, i32 }
          cleanup
  %4897 = extractvalue { ptr, i32 } %4896, 0
  store ptr %4897, ptr %9, align 8
  %4898 = extractvalue { ptr, i32 } %4896, 1
  store i32 %4898, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %418) #0
  br label %4903

4899:                                             ; preds = %4888
  store i32 0, ptr %17, align 4
  br label %4900

4900:                                             ; preds = %4899, %718, %675
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %11) #0
  %4901 = load i32, ptr %17, align 4
  switch i32 %4901, label %4912 [
    i32 0, label %4902
    i32 1, label %4902
  ]

4902:                                             ; preds = %4900, %4900
  ret void

4903:                                             ; preds = %4895, %4877, %728, %678, %616
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  br label %4904

4904:                                             ; preds = %4903, %570
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #0
  br label %4905

4905:                                             ; preds = %4904, %503
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #0
  br label %4906

4906:                                             ; preds = %4905, %453
  call void @llvm.lifetime.end.p0(i64 40, ptr %11) #0
  br label %4907

4907:                                             ; preds = %4906, %449
  %4908 = load ptr, ptr %9, align 8
  %4909 = load i32, ptr %10, align 4
  %4910 = insertvalue { ptr, i32 } poison, ptr %4908, 0
  %4911 = insertvalue { ptr, i32 } %4910, i32 %4909, 1
  resume { ptr, i32 } %4911

4912:                                             ; preds = %4900, %4853, %4801, %4749, %4697, %4645, %4578, %4379, %4244, %4166, %4090, %3975, %3891, %3763, %3643, %3611, %3579, %3498, %3396, %3342, %3264, %3212, %3160, %2709, %2684, %2605, %2499, %2383, %2186, %2032, %1926, %1842, %1726, %1639, %1511, %1441, %1341, %851, %775, %648, %533
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80), i64 noundef, ptr noundef) #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef byval(%struct.EncodedLiteralSlice) align 8, ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule9make_BoolEb(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8, i1 noundef zeroext) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #4 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8) #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H21get_pattern_value_maxES2_S6_RKNS3_8CoreTypeE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H21get_pattern_value_minES2_S6_RKNS3_8CoreTypeE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEENK4$_13clIS7_EES9_RKT_"(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 noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #7 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH18push_pattern_tupleERS_S2_RKNS4_4Data14Data_PathTupleESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(172), ptr noundef) #4 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH19push_pattern_structERS_S2_RKNS4_4Data14Data_PathNamedESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(137), ptr noundef) #4 align 2

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9

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

declare noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200)) #2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR17pattern_get_tupleERK4SpanRKNS_4PathERKNS_7Pattern11PathBindingE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(24)) #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) #7 align 2

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR14PatternBinding8is_validEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZSt9make_pairImmESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!"branch_weights", i32 1, i32 1048575}
!10 = !{!11, !6, i64 16}
!11 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16}
!12 = !{!13, !13, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!15, !19, i64 20}
!15 = !{!"_ZTSN3HIR14PatternBindingE", !16, i64 0, !17, i64 4, !18, i64 8, !19, i64 16, !19, i64 20}
!16 = !{!"bool", !7, i64 0}
!17 = !{!"_ZTSN3HIR14PatternBinding4TypeE", !7, i64 0}
!18 = !{!"_ZTS8RcString", !6, i64 0}
!19 = !{!"int", !7, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!23, !19, i64 208}
!23 = !{!"_ZTSN3HIR7PatternE", !24, i64 0, !28, i64 24, !19, i64 208}
!24 = !{!"_ZTSSt6vectorIN3HIR14PatternBindingESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN3HIR14PatternBindingESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3HIR14PatternBindingESaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3HIR14PatternBindingESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSN3HIR7Pattern4DataE", !29, i64 0, !7, i64 8}
!29 = !{!"_ZTSN3HIR7Pattern4Data3TagE", !7, i64 0}
!30 = distinct !{!30, !21}
!31 = !{!32, !6, i64 88}
!32 = !{!"_ZTSN3HIR7Pattern5Value10Data_NamedE", !33, i64 0, !6, i64 88}
!33 = !{!"_ZTSN3HIR4PathE", !34, i64 0}
!34 = !{!"_ZTSN3HIR4Path4DataE", !35, i64 0, !7, i64 8}
!35 = !{!"_ZTSN3HIR4Path4Data3TagE", !7, i64 0}
!36 = distinct !{!36, !21}
!37 = !{!38, !6, i64 0}
!38 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE3$_3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!39 = !{!16, !16, i64 0}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = distinct !{!42, !21}
!43 = distinct !{!43, !21}
!44 = distinct !{!44, !21}
!45 = distinct !{!45, !21}
!46 = distinct !{!46, !21}
!47 = distinct !{!47, !21}
!48 = !{!49, !16, i64 80}
!49 = !{!"_ZTSN11PatternRule15Data_ValueRangeE", !50, i64 0, !50, i64 40, !16, i64 80}
!50 = !{!"_ZTSN3MIR8ConstantE", !51, i64 0, !7, i64 8}
!51 = !{!"_ZTSN3MIR8Constant3TagE", !7, i64 0}
!52 = !{!53, !16, i64 16}
!53 = !{!"_ZTSN3HIR7Pattern4Data10Data_RangeE", !54, i64 0, !54, i64 8, !16, i64 16}
!54 = !{!"_ZTSSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EE", !55, i64 0}
!55 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR7Pattern5ValueESt14default_deleteIS2_ELb1ELb1EE", !56, i64 0}
!56 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR7Pattern5ValueESt14default_deleteIS2_EE", !57, i64 0}
!57 = !{!"_ZTSSt5tupleIJPN3HIR7Pattern5ValueESt14default_deleteIS2_EEE", !58, i64 0}
!58 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR7Pattern5ValueESt14default_deleteIS2_EEE", !59, i64 0}
!59 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR7Pattern5ValueELb0EE", !6, i64 0}
!60 = distinct !{!60, !21}
!61 = distinct !{!61, !21}
!62 = !{!63, !63, i64 0}
!63 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!64 = distinct !{!64, !21}
!65 = distinct !{!65, !21}
!66 = distinct !{!66, !21}
!67 = distinct !{!67, !21}
!68 = !{!7, !7, i64 0}
!69 = !{!19, !19, i64 0}
!70 = distinct !{!70, !21}
!71 = distinct !{!71, !21}
!72 = distinct !{!72, !21}
!73 = distinct !{!73, !21}
!74 = !{!75, !6, i64 24}
!75 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE4$_13", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!76 = distinct !{!76, !21}
!77 = distinct !{!77, !21}
!78 = distinct !{!78, !21}
!79 = distinct !{!79, !21}
!80 = !{!81, !6, i64 8}
!81 = !{!"_ZTS21PatternRulesetBuilder", !6, i64 0, !6, i64 8, !82, i64 16, !13, i64 40, !13, i64 48, !86, i64 56}
!82 = !{!"_ZTSSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE", !83, i64 0}
!83 = !{!"_ZTSSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE12_Vector_implE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!86 = !{!"_ZTS12field_path_t", !87, i64 0}
!87 = !{!"_ZTSSt6vectorIhSaIhEE", !88, i64 0}
!88 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!91 = distinct !{!91, !21}
!92 = distinct !{!92, !21}
!93 = distinct !{!93, !21}
!94 = distinct !{!94, !21}
!95 = distinct !{!95, !21}
!96 = distinct !{!96, !21}
!97 = distinct !{!97, !21}
!98 = distinct !{!98, !21}
!99 = distinct !{!99, !21}
!100 = distinct !{!100, !21}
!101 = distinct !{!101, !21}
!102 = distinct !{!102, !21}
!103 = distinct !{!103, !21}
!104 = distinct !{!104, !21}
!105 = distinct !{!105, !21}
!106 = distinct !{!106, !21}
!107 = distinct !{!107, !21}
!108 = distinct !{!108, !21}
!109 = distinct !{!109, !21}
!110 = distinct !{!110, !21}
!111 = distinct !{!111, !21}
!112 = distinct !{!112, !21}
!113 = distinct !{!113, !21}
!114 = distinct !{!114, !21}
!115 = distinct !{!115, !21}
!116 = distinct !{!116, !21}
!117 = distinct !{!117, !21}
!118 = distinct !{!118, !21}
!119 = distinct !{!119, !21}
!120 = distinct !{!120, !21}
!121 = distinct !{!121, !21}
!122 = distinct !{!122, !21}
!123 = distinct !{!123, !21}
!124 = distinct !{!124, !21}
!125 = distinct !{!125, !21}
!126 = distinct !{!126, !21}
!127 = distinct !{!127, !21}
!128 = distinct !{!128, !21}
!129 = distinct !{!129, !21}
!130 = distinct !{!130, !21}
!131 = distinct !{!131, !21}
!132 = distinct !{!132, !21}
!133 = distinct !{!133, !21}
!134 = distinct !{!134, !21}
!135 = distinct !{!135, !21}
!136 = distinct !{!136, !21}
!137 = distinct !{!137, !21}
!138 = distinct !{!138, !21}
!139 = distinct !{!139, !21}
!140 = distinct !{!140, !21}
!141 = !{!142, !19, i64 8}
!142 = !{!"_ZTSN3HIR7Pattern11PathBinding9Data_EnumE", !6, i64 0, !19, i64 8}
!143 = !{!144, !19, i64 0}
!144 = !{!"_ZTSN11PatternRule12Data_VariantE", !19, i64 0, !145, i64 8}
!145 = !{!"_ZTSSt6vectorI11PatternRuleSaIS0_EE", !146, i64 0}
!146 = !{!"_ZTSSt12_Vector_baseI11PatternRuleSaIS0_EE", !147, i64 0}
!147 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE12_Vector_implE", !148, i64 0}
!148 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!149 = distinct !{!149, !21}
!150 = distinct !{!150, !21}
!151 = !{!81, !6, i64 0}
!152 = !{!153, !6, i64 8}
!153 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE4$_21", !6, i64 0, !6, i64 8, !6, i64 16}
!154 = distinct !{!154, !21}
!155 = distinct !{!155, !21}
!156 = !{!142, !6, i64 0}
!157 = !{!158, !16, i64 8}
!158 = !{!"_ZTSN3HIR4Enum11DataVariantE", !18, i64 0, !16, i64 8, !159, i64 16}
!159 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!160 = distinct !{!160, !21}
!161 = !{!162, !6, i64 8}
!162 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE4$_22", !6, i64 0, !6, i64 8, !6, i64 16}
!163 = distinct !{!163, !21}
!164 = distinct !{!164, !21}
!165 = distinct !{!165, !21}
!166 = distinct !{!166, !21}
!167 = distinct !{!167, !21}
!168 = distinct !{!168, !21}
!169 = distinct !{!169, !21}
!170 = distinct !{!170, !21}
!171 = distinct !{!171, !21}
!172 = distinct !{!172, !21}
!173 = distinct !{!173, !21}
!174 = distinct !{!174, !21}
!175 = distinct !{!175, !21}
!176 = distinct !{!176, !21}
!177 = distinct !{!177, !21}
!178 = distinct !{!178, !21}
!179 = distinct !{!179, !21}
!180 = distinct !{!180, !21}
!181 = distinct !{!181, !21}
!182 = distinct !{!182, !21}
!183 = distinct !{!183, !21}
!184 = distinct !{!184, !21}
!185 = !{!186, !19, i64 44}
!186 = !{!"_ZTSN3HIR7Pattern4Data15Data_SplitSliceE", !187, i64 0, !15, i64 24, !187, i64 48}
!187 = !{!"_ZTSSt6vectorIN3HIR7PatternESaIS1_EE", !188, i64 0}
!188 = !{!"_ZTSSt12_Vector_baseIN3HIR7PatternESaIS1_EE", !189, i64 0}
!189 = !{!"_ZTSNSt12_Vector_baseIN3HIR7PatternESaIS1_EE12_Vector_implE", !190, i64 0}
!190 = !{!"_ZTSNSt12_Vector_baseIN3HIR7PatternESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!191 = distinct !{!191, !21}
!192 = distinct !{!192, !21}
!193 = distinct !{!193, !21}
!194 = distinct !{!194, !21}
!195 = distinct !{!195, !21}
!196 = distinct !{!196, !21}
!197 = distinct !{!197, !21}
!198 = distinct !{!198, !21}
!199 = !{!200, !6, i64 8}
!200 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE4$_35", !6, i64 0, !6, i64 8, !6, i64 16}
!201 = distinct !{!201, !21}
!202 = distinct !{!202, !21}
!203 = !{!204, !6, i64 16}
!204 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE4$_39", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!205 = distinct !{!205, !21}
!206 = distinct !{!206, !21}
!207 = distinct !{!207, !21}
!208 = distinct !{!208, !21}
!209 = distinct !{!209, !21}
!210 = distinct !{!210, !21}
!211 = distinct !{!211, !21}
!212 = distinct !{!212, !21}
!213 = distinct !{!213, !21}
!214 = distinct !{!214, !21}
!215 = distinct !{!215, !21}
!216 = distinct !{!216, !21}
!217 = distinct !{!217, !21}
!218 = distinct !{!218, !21}
!219 = distinct !{!219, !21}
!220 = distinct !{!220, !21}
!221 = distinct !{!221, !21}
!222 = distinct !{!222, !21}
!223 = distinct !{!223, !21}
!224 = distinct !{!224, !21}
!225 = distinct !{!225, !21}
!226 = distinct !{!226, !21}
!227 = distinct !{!227, !21}
!228 = distinct !{!228, !21}
!229 = distinct !{!229, !21}
!230 = distinct !{!230, !21}
!231 = distinct !{!231, !21}


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

%"struct.HIR::Pattern" = type <{ %"class.std::vector.97", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.97" = type { %"struct.std::_Vector_base.98" }
%"struct.std::_Vector_base.98" = 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.115" }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"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.115" = type { %"struct.std::__uniq_ptr_data.116" }
%"struct.std::__uniq_ptr_data.116" = type { %"class.std::__uniq_ptr_impl.117" }
%"class.std::__uniq_ptr_impl.117" = type { %"class.std::tuple.118" }
%"class.std::tuple.118" = type { %"struct.std::_Tuple_impl.119" }
%"struct.std::_Tuple_impl.119" = type { %"struct.std::_Head_base.122" }
%"struct.std::_Head_base.122" = 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.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.358 = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.359" = type { ptr }
%struct.field_path_t = type { %"class.std::vector.0" }
%"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 }
%struct.PatternBinding = type { %struct.field_path_t, ptr, %"struct.std::pair" }
%"struct.std::pair" = type { i64, i64 }
%struct.Span = type { ptr }
%class.anon.360 = type { ptr, ptr, ptr, ptr }
%struct.EncodedLiteralSlice = type { ptr, i64, i64 }
%class.anon.361 = type { ptr, ptr }
%"class.std::function.216" = type { %"class.std::_Function_base", ptr }
%class.anon.362 = type { ptr, ptr, ptr, ptr }
%class.anon.363 = type { i8 }
%class.anon.365 = type { ptr }
%class.PatternRule = type { i32, %"union.PatternRule::DataUnion", %struct.field_path_t }
%"union.PatternRule::DataUnion" = type { %"struct.PatternRule::Data_SplitSlice", [32 x i8] }
%"struct.PatternRule::Data_SplitSlice" = type { i32, i32, %"class.std::vector.136", %"class.std::vector.136" }
%"class.std::vector.136" = type { %"struct.std::_Vector_base.137" }
%"struct.std::_Vector_base.137" = type { %"struct.std::_Vector_base<PatternRule, std::allocator<PatternRule>>::_Vector_impl" }
%"struct.std::_Vector_base<PatternRule, std::allocator<PatternRule>>::_Vector_impl" = type { %"struct.std::_Vector_base<PatternRule, std::allocator<PatternRule>>::_Vector_impl_data" }
%"struct.std::_Vector_base<PatternRule, std::allocator<PatternRule>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.PatternRule::Data_ValueRange" = type <{ %"class.MIR::Constant", %"class.MIR::Constant", i8, [7 x i8] }>
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = type { %"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.__gnu_cxx::__normal_iterator.366" = type { ptr }
%class.anon.367 = type { ptr }
%class.anon.368 = type { ptr, ptr, ptr, ptr }
%class.anon.369 = type { ptr }
%class.anon.370 = type { ptr }
%class.anon.387 = type { ptr, ptr }
%class.anon.388 = type { ptr, ptr }
%class.anon.389 = type { ptr }
%class.anon.390 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.391" = type { ptr }
%class.anon.395 = type { ptr, ptr }
%"class.std::function.396" = type { %"class.std::_Function_base", ptr }
%class.anon.399 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.400" = type { ptr }
%class.anon.403 = type { ptr, ptr, ptr }
%class.anon.404 = type { ptr, ptr }
%class.anon.405 = type { ptr, ptr }
%class.anon.406 = type { ptr, ptr }
%class.anon.407 = type { ptr, ptr }
%"struct.PatternRule::Data_Variant" = type { i32, %"class.std::vector.136" }
%struct.PatternRulesetBuilder = type { ptr, ptr, %"class.std::vector.70", i64, i64, %struct.field_path_t }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<PatternRulesetBuilder::Ruleset, std::allocator<PatternRulesetBuilder::Ruleset>>::_Vector_impl" }
%"struct.std::_Vector_base<PatternRulesetBuilder::Ruleset, std::allocator<PatternRulesetBuilder::Ruleset>>::_Vector_impl" = type { %"struct.std::_Vector_base<PatternRulesetBuilder::Ruleset, std::allocator<PatternRulesetBuilder::Ruleset>>::_Vector_impl_data" }
%"struct.std::_Vector_base<PatternRulesetBuilder::Ruleset, std::allocator<PatternRulesetBuilder::Ruleset>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.408 = type { ptr, ptr, ptr }
%class.anon.419 = type { ptr, ptr, ptr }
%class.anon.420 = type { ptr, ptr }
%class.anon.421 = type { i8 }
%class.anon.423 = type { i8 }
%class.anon.425 = type { ptr }
%class.anon.426 = type { ptr }
%class.anon.427 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.429" = type { ptr }
%class.anon.430 = type { i8 }
%class.anon.432 = type { i8 }
%class.anon.434 = type { i8 }
%class.anon.436 = type { i8 }
%class.anon.438 = type { ptr }
%class.anon.439 = type { i8 }
%class.anon.441 = type { ptr, ptr, ptr }
%class.anon.442 = type { i8 }
%class.anon.444 = type { i8 }
%class.anon.446 = type { i8 }
%class.anon.448 = type { ptr, ptr, ptr, ptr }
%class.anon.449 = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.450" = type { ptr }
%class.anon.451 = type { ptr }
%class.anon.452 = type { i8 }
%class.anon.454 = type { i8 }
%class.anon.456 = type { i8 }
%class.anon.458 = type { i8 }
%class.anon.460 = type { i8 }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.5 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.10 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern = external hidden global %"struct.HIR::Pattern", align 8
@_ZGVZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern = external hidden global i64, align 8
@__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE = external hidden unnamed_addr constant [12 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [32 x i8], align 1
@__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE = external hidden unnamed_addr constant [102 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [37 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(424)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %class.TraceLog, align 8
  %6 = alloca %"class.std::function", align 8
  %7 = alloca %class.anon.358, align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.359", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.359", align 8
  %10 = alloca %struct.field_path_t, align 8
  %11 = alloca %struct.PatternBinding, align 8
  %12 = alloca %struct.field_path_t, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i64, align 8
  %15 = alloca %struct.Span, align 8
  %16 = alloca %"class.std::function", align 8
  %17 = alloca %class.anon.360, align 8
  %18 = alloca %struct.EncodedLiteralSlice, align 8
  %19 = alloca ptr, align 8
  %20 = alloca %struct.Span, align 8
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.361, align 8
  %23 = alloca %"class.std::function.216", align 8
  %24 = alloca %class.anon.362, align 8
  %25 = alloca %struct.Span, align 8
  %26 = alloca %"class.std::function", align 8
  %27 = alloca %class.anon.363, align 1
  %28 = alloca %struct.Span, align 8
  %29 = alloca %"class.std::function", align 8
  %30 = alloca %class.anon.365, align 8
  %31 = alloca %class.PatternRule, align 8
  %32 = alloca %class.PatternRule, align 8
  %33 = alloca %"struct.PatternRule::Data_ValueRange", align 8
  %34 = alloca %class.PatternRule, align 8
  %35 = alloca %"struct.PatternRule::Data_ValueRange", align 8
  %36 = alloca %class.PatternRule, align 8
  %37 = alloca %"struct.PatternRule::Data_ValueRange", align 8
  %38 = alloca %class.PatternRule, align 8
  %39 = alloca %class.PatternRule, align 8
  %40 = alloca %"class.MIR::Constant", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.366", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.366", align 8
  %43 = alloca %struct.Span, align 8
  %44 = alloca %"class.std::function", align 8
  %45 = alloca %class.anon.367, align 8
  %46 = alloca %"class.HIR::TypeRef", align 8
  %47 = alloca %class.anon.368, align 8
  %48 = alloca %struct.Span, align 8
  %49 = alloca %"class.std::function", align 8
  %50 = alloca %class.anon.369, align 8
  %51 = alloca %class.PatternRule, align 8
  %52 = alloca %struct.Span, align 8
  %53 = alloca %"class.std::function", align 8
  %54 = alloca %class.anon.370, align 8
  %55 = alloca %struct.Span, align 8
  %56 = alloca %"class.std::function", align 8
  %57 = alloca %class.anon.387, align 8
  %58 = alloca %struct.Span, align 8
  %59 = alloca %"class.std::function", align 8
  %60 = alloca %class.anon.388, align 8
  %61 = alloca %struct.Span, align 8
  %62 = alloca %"class.std::function", align 8
  %63 = alloca %class.anon.389, align 8
  %64 = alloca %struct.Span, align 8
  %65 = alloca %"class.std::function", align 8
  %66 = alloca %class.anon.390, align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator.391", align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator.391", align 8
  %69 = alloca %struct.Span, align 8
  %70 = alloca %"class.std::function", align 8
  %71 = alloca %class.anon.395, align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.391", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.391", align 8
  %74 = alloca %"class.std::function.396", align 8
  %75 = alloca %struct.Span, align 8
  %76 = alloca %"class.std::function", align 8
  %77 = alloca %class.anon.399, align 8
  %78 = alloca %"class.__gnu_cxx::__normal_iterator.400", align 8
  %79 = alloca %"class.__gnu_cxx::__normal_iterator.400", align 8
  %80 = alloca %"class.std::function.396", align 8
  %81 = alloca ptr, align 8
  %82 = alloca %struct.Span, align 8
  %83 = alloca %"class.std::function", align 8
  %84 = alloca %class.anon.403, align 8
  %85 = alloca %class.PatternRule, align 8
  %86 = alloca %struct.Span, align 8
  %87 = alloca %"class.std::function", align 8
  %88 = alloca %class.anon.404, align 8
  %89 = alloca %class.PatternRule, align 8
  %90 = alloca %struct.Span, align 8
  %91 = alloca %"class.std::function", align 8
  %92 = alloca %class.anon.405, align 8
  %93 = alloca %class.PatternRule, align 8
  %94 = alloca %struct.Span, align 8
  %95 = alloca %"class.std::function", align 8
  %96 = alloca %class.anon.406, align 8
  %97 = alloca ptr, align 8
  %98 = alloca %struct.Span, align 8
  %99 = alloca %"class.std::function", align 8
  %100 = alloca %class.anon.407, align 8
  %101 = alloca %class.PatternRule, align 8
  %102 = alloca %"struct.PatternRule::Data_Variant", align 8
  %103 = alloca %struct.PatternRulesetBuilder, align 8
  %104 = alloca %"class.std::function.396", align 8
  %105 = alloca %"class.std::function.216", align 8
  %106 = alloca %class.anon.408, align 8
  %107 = alloca %struct.PatternRulesetBuilder, align 8
  %108 = alloca %"class.HIR::TypeRef", align 8
  %109 = alloca %"class.std::function.396", align 8
  %110 = alloca %"class.std::function.216", align 8
  %111 = alloca %class.anon.419, align 8
  %112 = alloca %class.PatternRule, align 8
  %113 = alloca %struct.Span, align 8
  %114 = alloca %"class.std::function", align 8
  %115 = alloca %class.anon.420, align 8
  %116 = alloca %struct.Span, align 8
  %117 = alloca %"class.std::function", align 8
  %118 = alloca %class.anon.421, align 1
  %119 = alloca %struct.Span, align 8
  %120 = alloca %"class.std::function", align 8
  %121 = alloca %class.anon.423, align 1
  %122 = alloca %struct.Span, align 8
  %123 = alloca %"class.std::function", align 8
  %124 = alloca %class.anon.425, align 8
  %125 = alloca %class.PatternRule, align 8
  %126 = alloca %struct.Span, align 8
  %127 = alloca %"class.std::function", align 8
  %128 = alloca %class.anon.426, align 8
  %129 = alloca %struct.Span, align 8
  %130 = alloca %"class.std::function", align 8
  %131 = alloca %class.anon.427, align 1
  %132 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %133 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %134 = alloca %struct.Span, align 8
  %135 = alloca %"class.std::function", align 8
  %136 = alloca %class.anon.430, align 1
  %137 = alloca %struct.Span, align 8
  %138 = alloca %"class.std::function", align 8
  %139 = alloca %class.anon.432, align 1
  %140 = alloca %struct.Span, align 8
  %141 = alloca %"class.std::function", align 8
  %142 = alloca %class.anon.434, align 1
  %143 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %144 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %145 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %146 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %147 = alloca %struct.Span, align 8
  %148 = alloca %"class.std::function", align 8
  %149 = alloca %class.anon.436, align 1
  %150 = alloca %struct.PatternBinding, align 8
  %151 = alloca %struct.field_path_t, align 8
  %152 = alloca %"struct.std::pair", align 8
  %153 = alloca i64, align 8
  %154 = alloca i64, align 8
  %155 = alloca %struct.PatternBinding, align 8
  %156 = alloca %struct.Span, align 8
  %157 = alloca %"class.std::function", align 8
  %158 = alloca %class.anon.438, align 8
  %159 = alloca %class.PatternRule, align 8
  %160 = alloca %struct.PatternRulesetBuilder, align 8
  %161 = alloca %struct.Span, align 8
  %162 = alloca %"class.std::function", align 8
  %163 = alloca %class.anon.439, align 1
  %164 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %165 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %166 = alloca %"class.std::function.216", align 8
  %167 = alloca %class.anon.441, align 8
  %168 = alloca %struct.PatternRulesetBuilder, align 8
  %169 = alloca %struct.Span, align 8
  %170 = alloca %"class.std::function", align 8
  %171 = alloca %class.anon.442, align 1
  %172 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %173 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %174 = alloca %"class.std::vector.70", align 8
  %175 = alloca %struct.Span, align 8
  %176 = alloca %"class.std::function", align 8
  %177 = alloca %class.anon.444, align 1
  %178 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %179 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %180 = alloca %"class.std::vector.70", align 8
  %181 = alloca %struct.Span, align 8
  %182 = alloca %"class.std::function", align 8
  %183 = alloca %class.anon.446, align 1
  %184 = alloca %struct.PatternBinding, align 8
  %185 = alloca %struct.field_path_t, align 8
  %186 = alloca %"struct.std::pair", align 8
  %187 = alloca i64, align 8
  %188 = alloca i64, align 8
  %189 = alloca %struct.PatternBinding, align 8
  %190 = alloca %"class.std::function.216", align 8
  %191 = alloca %class.anon.448, align 8
  %192 = alloca %struct.Span, align 8
  %193 = alloca %"class.std::function", align 8
  %194 = alloca %class.anon.449, align 8
  %195 = alloca %class.PatternRule, align 8
  %196 = alloca %"class.MIR::Constant", align 8
  %197 = alloca %"class.std::__cxx11::basic_string", align 8
  %198 = alloca %"class.std::vector.0", align 8
  %199 = alloca %"class.__gnu_cxx::__normal_iterator.450", align 8
  %200 = alloca %"class.__gnu_cxx::__normal_iterator.450", align 8
  %201 = alloca i8, align 1
  %202 = alloca %class.PatternRule, align 8
  %203 = alloca %"class.MIR::Constant", align 8
  %204 = alloca %"class.std::vector.0", align 8
  %205 = alloca %struct.Span, align 8
  %206 = alloca %"class.std::function", align 8
  %207 = alloca %class.anon.451, align 8
  %208 = alloca %class.PatternRule, align 8
  %209 = alloca %struct.Span, align 8
  %210 = alloca %"class.std::function", align 8
  %211 = alloca %class.anon.452, align 1
  %212 = alloca %struct.Span, align 8
  %213 = alloca %"class.std::function", align 8
  %214 = alloca %class.anon.454, align 1
  %215 = alloca %struct.Span, align 8
  %216 = alloca %"class.std::function", align 8
  %217 = alloca %class.anon.456, align 1
  %218 = alloca %struct.Span, align 8
  %219 = alloca %"class.std::function", align 8
  %220 = alloca %class.anon.458, align 1
  %221 = alloca %struct.Span, align 8
  %222 = alloca %"class.std::function", align 8
  %223 = alloca %class.anon.460, align 1
  %224 = load atomic i8, ptr @_ZGVZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern acquire, align 8
  %225 = icmp eq i8 %224, 0
  br i1 %225, label %226, label %231, !prof !5

226:                                              ; preds = %4
  %227 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern) #10
  %.not = icmp eq i32 %227, 0
  br i1 %.not, label %231, label %228

228:                                              ; preds = %226
  invoke void @_ZN3HIR7PatternC2Ev(ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern)
          to label %229 unwind label %244

229:                                              ; preds = %228
  %230 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN3HIR7PatternD2Ev, ptr nonnull @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr nonnull @__dso_handle) #10
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern) #10
  br label %231

231:                                              ; preds = %229, %226, %4
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #10
  %232 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %233 = select i1 %232, ptr @__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #10
  store ptr %2, ptr %7, align 8, !tbaa !6
  %234 = getelementptr inbounds i8, ptr %7, i64 8
  store ptr %3, ptr %234, align 8, !tbaa !6
  %235 = getelementptr inbounds i8, ptr %7, i64 16
  store ptr %0, ptr %235, align 8, !tbaa !10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(24) %7)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef %233, ptr noundef nonnull %6)
          to label %236 unwind label %246

236:                                              ; preds = %231
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  %237 = call ptr @_ZNKSt6vectorIN3HIR14PatternBindingESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #10
  store ptr %237, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #10
  %238 = call ptr @_ZNKSt6vectorIN3HIR14PatternBindingESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #10
  store ptr %238, ptr %9, align 8
  %239 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR14PatternBindingESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  br i1 %239, label %.lr.ph1734, label %._crit_edge1735

.lr.ph1734:                                       ; preds = %236
  %240 = getelementptr inbounds i8, ptr %0, i64 56
  br label %248

._crit_edge1735:                                  ; preds = %263, %236
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  store ptr %3, ptr %13, align 8, !tbaa !6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  %241 = getelementptr inbounds i8, ptr %2, i64 208
  store i64 0, ptr %14, align 8, !tbaa !12
  %242 = load i32, ptr %241, align 8, !tbaa !14
  %.not4774 = icmp eq i32 %242, 0
  br i1 %.not4774, label %._crit_edge1738, label %.lr.ph1737

.lr.ph1737:                                       ; preds = %._crit_edge1735
  %243 = getelementptr inbounds i8, ptr %0, i64 56
  br label %279

244:                                              ; preds = %228
  %245 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_guard_abort(ptr nonnull @_ZGVZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern) #10
  br label %1716

246:                                              ; preds = %231
  %247 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #10
  br label %1715

248:                                              ; preds = %.lr.ph1734, %263
  %249 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR14PatternBindingESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #10
  invoke void @_ZN12field_path_tC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %240)
          to label %.preheader1404 unwind label %252

.preheader1404:                                   ; preds = %248
  %250 = getelementptr inbounds i8, ptr %249, i64 20
  %251 = load i32, ptr %250, align 4, !tbaa !23
  %.not4773 = icmp eq i32 %251, 0
  br i1 %.not4773, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %254, %.preheader1404
  invoke void @_ZN12field_path_tC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %261 unwind label %266

252:                                              ; preds = %248
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %274

.lr.ph:                                           ; preds = %.preheader1404, %254
  %.07751732 = phi i64 [ %255, %254 ], [ 0, %.preheader1404 ]
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 noundef zeroext -1)
          to label %254 unwind label %259

254:                                              ; preds = %.lr.ph
  %255 = add nuw nsw i64 %.07751732, 1
  %256 = load i32, ptr %250, align 4, !tbaa !23
  %257 = zext i32 %256 to i64
  %258 = icmp ult i64 %255, %257
  br i1 %258, label %.lr.ph, label %._crit_edge, !llvm.loop !28

259:                                              ; preds = %.lr.ph
  %260 = landingpad { ptr, i32 }
          cleanup
  br label %273

261:                                              ; preds = %._crit_edge
  invoke void @_ZN14PatternBindingC2E12field_path_tRKN3HIR14PatternBindingE(ptr noundef nonnull align 8 dereferenceable(48) %11, ptr noundef nonnull %12, ptr noundef nonnull align 8 dereferenceable(24) %249)
          to label %262 unwind label %268

262:                                              ; preds = %261
  invoke void @_ZN21PatternRulesetBuilder12push_bindingE14PatternBinding(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %11)
          to label %263 unwind label %270

263:                                              ; preds = %262
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #10
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #10
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR14PatternBindingESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  %265 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR14PatternBindingESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  br i1 %265, label %248, label %._crit_edge1735

266:                                              ; preds = %._crit_edge
  %267 = landingpad { ptr, i32 }
          cleanup
  br label %273

268:                                              ; preds = %261
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %272

270:                                              ; preds = %262
  %271 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %11) #10
  br label %272

272:                                              ; preds = %270, %268
  %.pn1142 = phi { ptr, i32 } [ %271, %270 ], [ %269, %268 ]
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #10
  br label %273

273:                                              ; preds = %272, %266, %259
  %.pn1144 = phi { ptr, i32 } [ %260, %259 ], [ %.pn1142, %272 ], [ %267, %266 ]
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  br label %274

274:                                              ; preds = %273, %252
  %.pn1144.pn = phi { ptr, i32 } [ %.pn1144, %273 ], [ %253, %252 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  br label %1714

._crit_edge1738:                                  ; preds = %307, %._crit_edge1735
  %275 = phi ptr [ %3, %._crit_edge1735 ], [ %306, %307 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  %276 = getelementptr inbounds i8, ptr %2, i64 24
  %277 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %278 = icmp eq i32 %277, 10
  br i1 %278, label %313, label %.critedge1151

279:                                              ; preds = %.lr.ph1737, %307
  %280 = phi i64 [ 0, %.lr.ph1737 ], [ %308, %307 ]
  %281 = phi ptr [ %3, %.lr.ph1737 ], [ %306, %307 ]
  %282 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %281)
  %283 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %282)
  br i1 %283, label %303, label %284

284:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %285 unwind label %293

285:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #10
  store ptr %14, ptr %17, align 8, !tbaa !6
  %286 = getelementptr inbounds i8, ptr %17, i64 8
  store ptr %2, ptr %286, align 8, !tbaa !6
  %287 = getelementptr inbounds i8, ptr %17, i64 16
  store ptr %13, ptr %287, align 8, !tbaa !6
  %288 = getelementptr inbounds i8, ptr %17, i64 24
  store ptr %3, ptr %288, align 8, !tbaa !6
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %289 unwind label %295

289:                                              ; preds = %285
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull %16)
          to label %290 unwind label %297

290:                                              ; preds = %289
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  %291 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %291, ptr noundef nonnull @.str.10)
          to label %292 unwind label %301

292:                                              ; preds = %290
  invoke void @__cxa_throw(ptr nonnull %291, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %.loopexit.split-lp1400

.loopexit1399:                                    ; preds = %303
  %lpad.loopexit1401 = landingpad { ptr, i32 }
          cleanup
  br label %312

.loopexit.split-lp1400:                           ; preds = %292
  %lpad.loopexit.split-lp1402 = landingpad { ptr, i32 }
          cleanup
  br label %312

293:                                              ; preds = %284
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %300

295:                                              ; preds = %285
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %299

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

299:                                              ; preds = %297, %295
  %.pn1136 = phi { ptr, i32 } [ %298, %297 ], [ %296, %295 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  br label %300

300:                                              ; preds = %299, %293
  %.pn1136.pn = phi { ptr, i32 } [ %.pn1136, %299 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  br label %312

301:                                              ; preds = %290
  %302 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %291) #10
  br label %312

303:                                              ; preds = %279
  %304 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %281)
  %305 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %304)
  %306 = getelementptr inbounds i8, ptr %305, i64 8
  store ptr %306, ptr %13, align 8, !tbaa !6
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %243, i8 noundef zeroext -1)
          to label %307 unwind label %.loopexit1399

307:                                              ; preds = %303
  %308 = add nuw nsw i64 %280, 1
  store i64 %308, ptr %14, align 8, !tbaa !12
  %309 = load i32, ptr %241, align 8, !tbaa !14
  %310 = zext i32 %309 to i64
  %311 = icmp ult i64 %308, %310
  br i1 %311, label %279, label %._crit_edge1738, !llvm.loop !30

312:                                              ; preds = %.loopexit1399, %.loopexit.split-lp1400, %301, %300
  %.pn1139 = phi { ptr, i32 } [ %302, %301 ], [ %.pn1136.pn, %300 ], [ %lpad.loopexit1401, %.loopexit1399 ], [ %lpad.loopexit.split-lp1402, %.loopexit.split-lp1400 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  br label %.loopexit.split-lp1343

313:                                              ; preds = %._crit_edge1738
  %314 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3HIR7Pattern4Data8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %315 = call noundef i32 @_ZNK3HIR7Pattern5Value3tagEv(ptr noundef nonnull align 8 dereferenceable(104) %314)
  %.not911 = icmp eq i32 %315, 5
  br i1 %.not911, label %316, label %.critedge1151

316:                                              ; preds = %313
  %317 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNK3HIR7Pattern5Value8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(104) %314)
  %318 = getelementptr inbounds i8, ptr %317, i64 88
  %319 = load ptr, ptr %318, align 8, !tbaa !31
  %.not905 = icmp eq ptr %319, null
  br i1 %.not905, label %331, label %320

320:                                              ; preds = %316
  %321 = getelementptr inbounds i8, ptr %319, i64 176
  call void @_ZN19EncodedLiteralSliceC2ERK14EncodedLiteral(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(48) %321)
  invoke void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %18, ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %.preheader unwind label %324

.preheader:                                       ; preds = %320
  %322 = load i32, ptr %241, align 8, !tbaa !14
  %.not4780 = icmp eq i32 %322, 0
  br i1 %.not4780, label %.loopexit, label %.lr.ph4772

.lr.ph4772:                                       ; preds = %.preheader
  %323 = getelementptr inbounds i8, ptr %0, i64 56
  br label %326

324:                                              ; preds = %320
  %325 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

326:                                              ; preds = %.lr.ph4772, %326
  %.07784771 = phi i64 [ 0, %.lr.ph4772 ], [ %327, %326 ]
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %323)
  %327 = add nuw nsw i64 %.07784771, 1
  %328 = load i32, ptr %241, align 8, !tbaa !14
  %329 = zext i32 %328 to i64
  %330 = icmp ult i64 %327, %329
  br i1 %330, label %326, label %.loopexit, !llvm.loop !36

331:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  store ptr @__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE, ptr %19, align 8, !tbaa !6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %332 unwind label %337

332:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #10
  store ptr %19, ptr %22, align 8, !tbaa !6
  %333 = getelementptr inbounds i8, ptr %22, i64 8
  store ptr %317, ptr %333, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(16) %22) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull %21)
          to label %334 unwind label %339

334:                                              ; preds = %332
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  %335 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %335, ptr noundef nonnull @.str.5)
          to label %336 unwind label %342

336:                                              ; preds = %334
  invoke void @__cxa_throw(ptr nonnull %335, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %344

337:                                              ; preds = %331
  %338 = landingpad { ptr, i32 }
          cleanup
  br label %341

339:                                              ; preds = %332
  %340 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  br label %341

341:                                              ; preds = %339, %337
  %.pn = phi { ptr, i32 } [ %340, %339 ], [ %338, %337 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  br label %346

342:                                              ; preds = %334
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %335) #10
  br label %346

344:                                              ; preds = %336
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %346

346:                                              ; preds = %344, %342, %341
  %.pn907 = phi { ptr, i32 } [ %345, %344 ], [ %343, %342 ], [ %.pn, %341 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  br label %.loopexit.split-lp1343

.critedge1151:                                    ; preds = %313, %._crit_edge1738
  %347 = call noundef zeroext i1 @_ZNK3HIR7Pattern4Data5is_OrEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br i1 %347, label %348, label %.lr.ph4767

348:                                              ; preds = %.critedge1151
  %349 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR7Pattern4Data5as_OrEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %350 = load i32, ptr %241, align 8, !tbaa !14
  %351 = icmp eq i32 %350, 0
  br i1 %351, label %353, label %352

352:                                              ; preds = %348
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.17, i32 noundef 1363, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

353:                                              ; preds = %348
  %354 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %349) #10
  %.not1132 = icmp eq i64 %354, 0
  br i1 %.not1132, label %355, label %356

355:                                              ; preds = %353
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.17, i32 noundef 1364, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

356:                                              ; preds = %353
  %357 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %349) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #10
  store ptr %0, ptr %24, align 8, !tbaa !37
  %358 = getelementptr inbounds i8, ptr %24, i64 8
  store ptr %1, ptr %358, align 8, !tbaa !6
  %359 = getelementptr inbounds i8, ptr %24, i64 16
  store ptr %349, ptr %359, align 8, !tbaa !6
  %360 = getelementptr inbounds i8, ptr %24, i64 24
  store ptr %3, ptr %360, align 8, !tbaa !6
  invoke void @"_ZNSt8functionIFvmEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS7_7TypeRefEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %361 unwind label %363

361:                                              ; preds = %356
  invoke void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80) %0, i64 noundef %357, ptr noundef nonnull %23)
          to label %362 unwind label %365

362:                                              ; preds = %361
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  br label %.loopexit

363:                                              ; preds = %356
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %367

365:                                              ; preds = %361
  %366 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  br label %367

367:                                              ; preds = %365, %363
  %.pn1133 = phi { ptr, i32 } [ %366, %365 ], [ %364, %363 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  br label %.loopexit.split-lp1343

.loopexit1397:                                    ; preds = %.preheader1395.split, %.preheader1393.split, %.preheader1391.split, %.preheader1389.split, %.preheader1376.split, %.preheader1374.split, %.preheader1364.split, %.lr.ph4767, %..loopexit1338_crit_edge, %..loopexit1354_crit_edge, %..loopexit1300_crit_edge, %523, %528, %479, %493, %508, %..loopexit1331_crit_edge, %..loopexit1337_crit_edge, %1173, %.loopexit1305, %..loopexit1251_crit_edge, %..loopexit1252_crit_edge, %..loopexit1257_crit_edge, %..loopexit1348_crit_edge
  %368 = load i32, ptr %241, align 8, !tbaa !14
  %.not4779 = icmp eq i32 %368, 0
  br i1 %.not4779, label %.loopexit, label %.lr.ph4770

.lr.ph4767:                                       ; preds = %.critedge1151
  %369 = getelementptr inbounds i8, ptr %0, i64 56
  %370 = getelementptr inbounds i8, ptr %168, i64 56
  %371 = getelementptr inbounds i8, ptr %168, i64 16
  %372 = getelementptr inbounds i8, ptr %186, i64 8
  %373 = getelementptr inbounds i8, ptr %184, i64 32
  %374 = getelementptr inbounds i8, ptr %191, i64 8
  %375 = getelementptr inbounds i8, ptr %191, i64 16
  %376 = getelementptr inbounds i8, ptr %191, i64 24
  %377 = getelementptr inbounds i8, ptr %160, i64 56
  %378 = getelementptr inbounds i8, ptr %160, i64 16
  %379 = getelementptr inbounds i8, ptr %167, i64 8
  %380 = getelementptr inbounds i8, ptr %167, i64 16
  %381 = getelementptr inbounds i8, ptr %152, i64 8
  %382 = getelementptr inbounds i8, ptr %150, i64 32
  %383 = getelementptr inbounds i8, ptr %47, i64 8
  %384 = getelementptr inbounds i8, ptr %47, i64 16
  %385 = getelementptr inbounds i8, ptr %47, i64 24
  %386 = getelementptr inbounds i8, ptr %107, i64 56
  %387 = getelementptr inbounds i8, ptr %107, i64 16
  %388 = getelementptr inbounds i8, ptr %111, i64 8
  %389 = getelementptr inbounds i8, ptr %111, i64 16
  %390 = getelementptr inbounds i8, ptr %103, i64 56
  %391 = getelementptr inbounds i8, ptr %103, i64 16
  %392 = getelementptr inbounds i8, ptr %106, i64 8
  %393 = getelementptr inbounds i8, ptr %106, i64 16
  %394 = getelementptr inbounds i8, ptr %102, i64 8
  %395 = getelementptr inbounds i8, ptr %0, i64 8
  %396 = getelementptr inbounds i8, ptr %35, i64 40
  %397 = getelementptr inbounds i8, ptr %35, i64 80
  %398 = getelementptr inbounds i8, ptr %33, i64 40
  %399 = getelementptr inbounds i8, ptr %33, i64 80
  %400 = getelementptr inbounds i8, ptr %37, i64 40
  %401 = getelementptr inbounds i8, ptr %37, i64 80
  %402 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %275)
  %403 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  switch i32 %403, label %.loopexit1397 [
    i32 0, label %421
    i32 1, label %422
    i32 2, label %.preheader1364.split
    i32 3, label %.lr.ph4532
    i32 10, label %.lr.ph4448
    i32 4, label %.lr.ph4437
    i32 5, label %.preheader1372.split.split
    i32 6, label %.preheader1374.split
    i32 7, label %.preheader1376.split
    i32 8, label %.lr.ph3000
    i32 9, label %.lr.ph2687
    i32 11, label %.lr.ph2657
    i32 12, label %.preheader1387.split.split
    i32 13, label %.preheader1389.split
    i32 14, label %.preheader1391.split
    i32 15, label %.preheader1393.split
    i32 16, label %.preheader1395.split
  ]

.preheader1395.split:                             ; preds = %.lr.ph4767
  %404 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %405 = call noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br i1 %405, label %.loopexit1397, label %.split, !llvm.loop !39

.preheader1393.split:                             ; preds = %.lr.ph4767
  %406 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %407 = call noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br i1 %407, label %.loopexit1397, label %.split1914, !llvm.loop !40

.preheader1391.split:                             ; preds = %.lr.ph4767
  %408 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %409 = call noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br i1 %409, label %.loopexit1397, label %.split2091, !llvm.loop !41

.preheader1389.split:                             ; preds = %.lr.ph4767
  %410 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %411 = call noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br i1 %411, label %.loopexit1397, label %.split2269, !llvm.loop !42

.preheader1387.split.split:                       ; preds = %.lr.ph4767
  %412 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %413 = call noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br i1 %413, label %1644, label %.split2449

.preheader1376.split:                             ; preds = %.lr.ph4767
  %414 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %415 = call noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br i1 %415, label %.loopexit1397, label %.split3004, !llvm.loop !43

.preheader1374.split:                             ; preds = %.lr.ph4767
  %416 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %417 = call noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br i1 %417, label %.loopexit1397, label %.split3193, !llvm.loop !44

.preheader1372.split.split:                       ; preds = %.lr.ph4767
  %418 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %419 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %419, label %.split3384 [
    i32 0, label %.split3386
    i32 1, label %1097
  ]

.preheader1364.split:                             ; preds = %.lr.ph4767
  %420 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  br label %.loopexit1397

421:                                              ; preds = %.lr.ph4767
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1371, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

422:                                              ; preds = %.lr.ph4767
  %423 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %426 unwind label %430

424:                                              ; preds = %429
  %425 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

426:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 1 dereferenceable(1) %27) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull %26)
          to label %427 unwind label %432

427:                                              ; preds = %426
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  %428 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %428, ptr noundef nonnull @.str.10)
          to label %429 unwind label %435

429:                                              ; preds = %427
  invoke void @__cxa_throw(ptr nonnull %428, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %424

430:                                              ; preds = %422
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %434

432:                                              ; preds = %426
  %433 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #10
  br label %434

434:                                              ; preds = %432, %430
  %.pn1127 = phi { ptr, i32 } [ %433, %432 ], [ %431, %430 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  br label %.loopexit.split-lp1343

435:                                              ; preds = %427
  %436 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %428) #10
  br label %.loopexit.split-lp1343

437:                                              ; preds = %449
  %438 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.lr.ph4532:                                       ; preds = %.lr.ph4767
  %439 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %440 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %440, label %445 [
    i32 0, label %444
    i32 1, label %.preheader1311
    i32 11, label %.lr.ph4516
    i32 10, label %.preheader1315
  ]

.preheader1315:                                   ; preds = %.lr.ph4532
  %441 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3HIR7Pattern4Data8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %442 = load i32, ptr %439, align 4, !tbaa !45
  %cond1 = icmp eq i32 %442, 14
  br i1 %cond1, label %517, label %525

.preheader1311:                                   ; preds = %.lr.ph4532
  %443 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %31)
          to label %458 unwind label %.split4521.split

444:                                              ; preds = %.lr.ph4532
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1381, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

445:                                              ; preds = %.lr.ph4532
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %446 unwind label %450

446:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #10
  store ptr %2, ptr %30, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull %29)
          to label %447 unwind label %452

447:                                              ; preds = %446
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #10
  %448 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %448, ptr noundef nonnull @.str.10)
          to label %449 unwind label %455

449:                                              ; preds = %447
  invoke void @__cxa_throw(ptr nonnull %448, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %437

450:                                              ; preds = %445
  %451 = landingpad { ptr, i32 }
          cleanup
  br label %454

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

454:                                              ; preds = %452, %450
  %.pn1123 = phi { ptr, i32 } [ %453, %452 ], [ %451, %450 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #10
  br label %.loopexit.split-lp1343

455:                                              ; preds = %447
  %456 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %448) #10
  br label %.loopexit.split-lp1343

.split4521.split:                                 ; preds = %.preheader1311
  %457 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

458:                                              ; preds = %.preheader1311
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %31)
          to label %..loopexit1300_crit_edge unwind label %.split4524.split

..loopexit1300_crit_edge:                         ; preds = %458
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %31) #10
  br label %.loopexit1397

.split4524.split:                                 ; preds = %458
  %459 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %31) #10
  br label %.loopexit.split-lp1343

.lr.ph4516:                                       ; preds = %.lr.ph4532
  %460 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK3HIR7Pattern4Data8as_RangeEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %461 = getelementptr inbounds i8, ptr %460, i64 8
  %462 = getelementptr inbounds i8, ptr %460, i64 16
  %463 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %460) #10
  br i1 %463, label %466, label %468

464:                                              ; preds = %501, %487, %474
  %465 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

466:                                              ; preds = %.lr.ph4516
  %467 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %461) #10
  br i1 %467, label %501, label %468

468:                                              ; preds = %466, %.lr.ph4516
  %469 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %460) #10
  br i1 %469, label %.critedge, label %470

470:                                              ; preds = %468
  %471 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %461) #10
  br i1 %471, label %.critedge, label %472

472:                                              ; preds = %470
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.17, i32 noundef 1390, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

.critedge:                                        ; preds = %468, %470
  %473 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %460) #10
  br i1 %473, label %474, label %487

474:                                              ; preds = %.critedge
  %475 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %460) #10
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %33, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %2, ptr noundef nonnull align 8 dereferenceable(104) %475, ptr noundef nonnull align 4 dereferenceable(4) %439)
          to label %476 unwind label %464

476:                                              ; preds = %474
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H21get_pattern_value_maxES2_S6_RKNS3_8CoreTypeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %398, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %2, ptr noundef nonnull align 4 dereferenceable(4) %439)
          to label %477 unwind label %480

477:                                              ; preds = %476
  store i8 1, ptr %399, align 8, !tbaa !47
  invoke void @_ZN11PatternRule15make_ValueRangeENS_15Data_ValueRangeE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %32, ptr noundef nonnull %33)
          to label %478 unwind label %482

478:                                              ; preds = %477
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %32)
          to label %479 unwind label %484

479:                                              ; preds = %478
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %32) #10
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %33) #10
  br label %.loopexit1397

480:                                              ; preds = %476
  %481 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #10
  br label %.loopexit.split-lp1343

482:                                              ; preds = %477
  %483 = landingpad { ptr, i32 }
          cleanup
  br label %486

484:                                              ; preds = %478
  %485 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %32) #10
  br label %486

486:                                              ; preds = %484, %482
  %.pn1116 = phi { ptr, i32 } [ %485, %484 ], [ %483, %482 ]
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %33) #10
  br label %.loopexit.split-lp1343

487:                                              ; preds = %.critedge
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H21get_pattern_value_minES2_S6_RKNS3_8CoreTypeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %35, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %2, ptr noundef nonnull align 4 dereferenceable(4) %439)
          to label %488 unwind label %464

488:                                              ; preds = %487
  %489 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %461) #10
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %396, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %2, ptr noundef nonnull align 8 dereferenceable(104) %489, ptr noundef nonnull align 4 dereferenceable(4) %439)
          to label %490 unwind label %494

490:                                              ; preds = %488
  %491 = load i8, ptr %462, align 8, !tbaa !51, !range !59, !noundef !60
  store i8 %491, ptr %397, align 8, !tbaa !47
  invoke void @_ZN11PatternRule15make_ValueRangeENS_15Data_ValueRangeE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %34, ptr noundef nonnull %35)
          to label %492 unwind label %496

492:                                              ; preds = %490
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %34)
          to label %493 unwind label %498

493:                                              ; preds = %492
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %34) #10
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %35) #10
  br label %.loopexit1397

494:                                              ; preds = %488
  %495 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #10
  br label %.loopexit.split-lp1343

496:                                              ; preds = %490
  %497 = landingpad { ptr, i32 }
          cleanup
  br label %500

498:                                              ; preds = %492
  %499 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %34) #10
  br label %500

500:                                              ; preds = %498, %496
  %.pn1114 = phi { ptr, i32 } [ %499, %498 ], [ %497, %496 ]
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %35) #10
  br label %.loopexit.split-lp1343

501:                                              ; preds = %466
  %502 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %460) #10
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %37, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %2, ptr noundef nonnull align 8 dereferenceable(104) %502, ptr noundef nonnull align 4 dereferenceable(4) %439)
          to label %503 unwind label %464

503:                                              ; preds = %501
  %504 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNKSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %461) #10
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %400, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %2, ptr noundef nonnull align 8 dereferenceable(104) %504, ptr noundef nonnull align 4 dereferenceable(4) %439)
          to label %505 unwind label %509

505:                                              ; preds = %503
  %506 = load i8, ptr %462, align 8, !tbaa !51, !range !59, !noundef !60
  store i8 %506, ptr %401, align 8, !tbaa !47
  invoke void @_ZN11PatternRule15make_ValueRangeENS_15Data_ValueRangeE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %36, ptr noundef nonnull %37)
          to label %507 unwind label %511

507:                                              ; preds = %505
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %36)
          to label %508 unwind label %513

508:                                              ; preds = %507
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %36) #10
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %37) #10
  br label %.loopexit1397

509:                                              ; preds = %503
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %37) #10
  br label %.loopexit.split-lp1343

511:                                              ; preds = %505
  %512 = landingpad { ptr, i32 }
          cleanup
  br label %515

513:                                              ; preds = %507
  %514 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %36) #10
  br label %515

515:                                              ; preds = %513, %511
  %.pn1118 = phi { ptr, i32 } [ %514, %513 ], [ %512, %511 ]
  call void @_ZN11PatternRule15Data_ValueRangeD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %37) #10
  br label %.loopexit.split-lp1343

.split4453.split:                                 ; preds = %525, %521, %517
  %516 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

517:                                              ; preds = %.preheader1315
  %518 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR7Pattern5Value10as_IntegerEv(ptr noundef nonnull align 8 dereferenceable(104) %441)
  %519 = getelementptr inbounds i8, ptr %518, i64 8
  %520 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %519, i32 noundef 0)
          to label %521 unwind label %.split4453.split

521:                                              ; preds = %517
  invoke void @_ZN11PatternRule9make_BoolEb(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %38, i1 noundef zeroext %520)
          to label %522 unwind label %.split4453.split

522:                                              ; preds = %521
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %38)
          to label %523 unwind label %.split4462.split

523:                                              ; preds = %522
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %38) #10
  br label %.loopexit1397

.split4462.split:                                 ; preds = %522
  %524 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %38) #10
  br label %.loopexit.split-lp1343

525:                                              ; preds = %.preheader1315
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %40, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %2, ptr noundef nonnull align 8 dereferenceable(104) %441, ptr noundef nonnull align 4 dereferenceable(4) %439)
          to label %526 unwind label %.split4453.split

526:                                              ; preds = %525
  invoke void @_ZN11PatternRuleC2EN3MIR8ConstantE(ptr noundef nonnull align 8 dereferenceable(120) %39, ptr noundef nonnull %40)
          to label %527 unwind label %.split4456.split

527:                                              ; preds = %526
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %39)
          to label %528 unwind label %.split4459.split

528:                                              ; preds = %527
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %39) #10
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #10
  br label %.loopexit1397

.split4456.split:                                 ; preds = %526
  %529 = landingpad { ptr, i32 }
          cleanup
  br label %531

.split4459.split:                                 ; preds = %527
  %530 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %39) #10
  br label %531

531:                                              ; preds = %.split4459.split, %.split4456.split
  %.pn1110 = phi { ptr, i32 } [ %530, %.split4459.split ], [ %529, %.split4456.split ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #10
  br label %.loopexit.split-lp1343

.loopexit1332:                                    ; preds = %.lr.ph4448
  %lpad.loopexit1334 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.loopexit.split-lp1333:                           ; preds = %611
  %lpad.loopexit.split-lp1335 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.lr.ph4448:                                       ; preds = %.lr.ph4767
  %532 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %369, i8 noundef zeroext 0)
          to label %533 unwind label %.loopexit1332

533:                                              ; preds = %.lr.ph4448
  %534 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %534, label %607 [
    i32 0, label %535
    i32 1, label %536
    i32 4, label %550
    i32 5, label %570
  ]

535:                                              ; preds = %533
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1461, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

536:                                              ; preds = %533
  %537 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #10
  %538 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #10
  store ptr %538, ptr %41, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #10
  %539 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #10
  store ptr %539, ptr %42, align 8
  %540 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  br i1 %540, label %.lr.ph4445, label %._crit_edge4446

._crit_edge4446:                                  ; preds = %542, %536
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #10
  br label %..loopexit1331_crit_edge

.lr.ph4445:                                       ; preds = %536, %542
  %541 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %541)
          to label %542 unwind label %548

542:                                              ; preds = %.lr.ph4445
  %543 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %544 = load i8, ptr %543, align 1, !tbaa !61
  %545 = add i8 %544, 1
  store i8 %545, ptr %543, align 1, !tbaa !61
  %546 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #10
  %547 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  br i1 %547, label %.lr.ph4445, label %._crit_edge4446

548:                                              ; preds = %.lr.ph4445
  %549 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #10
  br label %.loopexit.split-lp1343

550:                                              ; preds = %533
  %551 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR7Pattern4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %552 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #10
  %553 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %551) #10
  %554 = icmp eq i64 %552, %553
  br i1 %554, label %.preheader1317, label %556

.preheader1317:                                   ; preds = %550
  %555 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #10
  %.not4778 = icmp eq i64 %555, 0
  br i1 %.not4778, label %..loopexit1331_crit_edge, label %.lr.ph4443

556:                                              ; preds = %550
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.17, i32 noundef 1442, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

.lr.ph4443:                                       ; preds = %.preheader1317, %560
  %557 = phi i64 [ %565, %560 ], [ 0, %.preheader1317 ]
  %.08044442 = phi i32 [ %564, %560 ], [ 0, %.preheader1317 ]
  %558 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %551, i64 noundef %557) #10
  %559 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %532, i64 noundef %557) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %558, ptr noundef nonnull align 8 dereferenceable(8) %559)
          to label %560 unwind label %568

560:                                              ; preds = %.lr.ph4443
  %561 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %562 = load i8, ptr %561, align 1, !tbaa !61
  %563 = add i8 %562, 1
  store i8 %563, ptr %561, align 1, !tbaa !61
  %564 = add i32 %.08044442, 1
  %565 = zext i32 %564 to i64
  %566 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #10
  %567 = icmp ugt i64 %566, %565
  br i1 %567, label %.lr.ph4443, label %..loopexit1331_crit_edge, !llvm.loop !62

568:                                              ; preds = %.lr.ph4443
  %569 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

570:                                              ; preds = %533
  %571 = call noundef nonnull align 8 dereferenceable(52) ptr @_ZNK3HIR7Pattern4Data13as_SplitTupleEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %572 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #10
  %573 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %571) #10
  %574 = getelementptr inbounds i8, ptr %571, i64 24
  %575 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %574) #10
  %576 = add i64 %575, %573
  %.not1105 = icmp ult i64 %572, %576
  br i1 %.not1105, label %577, label %578

577:                                              ; preds = %570
  call void @__assert_fail(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.17, i32 noundef 1449, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

578:                                              ; preds = %570
  %579 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #10
  %580 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %574) #10
  %581 = sub i64 %579, %580
  %582 = trunc i64 %581 to i32
  %583 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #10
  %.not4777 = icmp eq i64 %583, 0
  br i1 %.not4777, label %..loopexit1331_crit_edge, label %.lr.ph4441

.lr.ph4441:                                       ; preds = %578, %599
  %584 = phi i64 [ %604, %599 ], [ 0, %578 ]
  %.08054439 = phi i32 [ %603, %599 ], [ 0, %578 ]
  %585 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %571) #10
  %586 = icmp ugt i64 %585, %584
  br i1 %586, label %587, label %591

587:                                              ; preds = %.lr.ph4441
  %588 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %571, i64 noundef %584) #10
  br label %.invoke

589:                                              ; preds = %.invoke
  %590 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

591:                                              ; preds = %.lr.ph4441
  %592 = icmp ult i32 %.08054439, %582
  br i1 %592, label %.invoke, label %593

593:                                              ; preds = %591
  %594 = sub i32 %.08054439, %582
  %595 = zext i32 %594 to i64
  %596 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %574, i64 noundef %595) #10
  br label %.invoke

.invoke:                                          ; preds = %591, %587, %593
  %597 = phi ptr [ %596, %593 ], [ %588, %587 ], [ @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, %591 ]
  %598 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %532, i64 noundef %584) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %597, ptr noundef nonnull align 8 dereferenceable(8) %598)
          to label %599 unwind label %589

599:                                              ; preds = %.invoke
  %600 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %601 = load i8, ptr %600, align 1, !tbaa !61
  %602 = add i8 %601, 1
  store i8 %602, ptr %600, align 1, !tbaa !61
  %603 = add i32 %.08054439, 1
  %604 = zext i32 %603 to i64
  %605 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %532) #10
  %606 = icmp ugt i64 %605, %604
  br i1 %606, label %.lr.ph4441, label %..loopexit1331_crit_edge, !llvm.loop !63

607:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %608 unwind label %612

608:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #10
  store ptr %2, ptr %45, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull %44)
          to label %609 unwind label %614

609:                                              ; preds = %608
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #10
  %610 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %610, ptr noundef nonnull @.str.10)
          to label %611 unwind label %617

611:                                              ; preds = %609
  invoke void @__cxa_throw(ptr nonnull %610, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %.loopexit.split-lp1333

612:                                              ; preds = %607
  %613 = landingpad { ptr, i32 }
          cleanup
  br label %616

614:                                              ; preds = %608
  %615 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #10
  br label %616

616:                                              ; preds = %614, %612
  %.pn1106 = phi { ptr, i32 } [ %615, %614 ], [ %613, %612 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #10
  br label %.loopexit.split-lp1343

617:                                              ; preds = %609
  %618 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %610) #10
  br label %.loopexit.split-lp1343

..loopexit1331_crit_edge:                         ; preds = %599, %560, %578, %.preheader1317, %._crit_edge4446
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  br label %.loopexit1397

.lr.ph4437:                                       ; preds = %.lr.ph4767
  %619 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %620 = getelementptr inbounds i8, ptr %619, i64 88
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %.lr.ph4434 unwind label %621

..loopexit1337_crit_edge:                         ; preds = %.preheader1171.split, %.preheader1169.split, %.preheader1167.split, %.preheader1165.split, %685, %692, %..loopexit1164_crit_edge, %..loopexit1163_crit_edge, %..loopexit1197_crit_edge, %.lr.ph4308, %.lr.ph4434, %..loopexit1241_crit_edge, %..loopexit1199_crit_edge, %..loopexit1200_crit_edge, %..loopexit1201_crit_edge, %..loopexit1202_crit_edge, %..loopexit1203_crit_edge, %..loopexit1204_crit_edge
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #10
  br label %.loopexit1397

621:                                              ; preds = %.lr.ph4437
  %622 = landingpad { ptr, i32 }
          cleanup
  br label %1094

.lr.ph4434:                                       ; preds = %.lr.ph4437
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %47) #10
  store ptr %46, ptr %47, align 8, !tbaa !6
  store ptr %619, ptr %383, align 8, !tbaa !6
  store ptr %1, ptr %384, align 8, !tbaa !6
  store ptr %0, ptr %385, align 8, !tbaa !64
  %623 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %620)
  switch i32 %623, label %..loopexit1337_crit_edge [
    i32 0, label %630
    i32 1, label %631
    i32 2, label %.preheader1273.split.split
    i32 4, label %.lr.ph4311
    i32 5, label %.preheader1282.split.split
    i32 3, label %.preheader1284.split.split
    i32 6, label %.lr.ph3698
  ]

.preheader1284.split.split:                       ; preds = %.lr.ph4434
  %624 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %620)
  %625 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %625, label %.split3718 [
    i32 0, label %.split3720
    i32 1, label %.preheader1213
  ]

.preheader1282.split.split:                       ; preds = %.lr.ph4434
  %626 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %620)
  %627 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %627, label %.split3835 [
    i32 0, label %.split3837
    i32 1, label %.preheader1211
  ]

.preheader1273.split.split:                       ; preds = %.lr.ph4434
  %628 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %620)
  %629 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %629, label %.split4316 [
    i32 0, label %.split4318
    i32 1, label %648
  ]

630:                                              ; preds = %.lr.ph4434
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1529, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

631:                                              ; preds = %.lr.ph4434
  %632 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %620)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %635 unwind label %639

633:                                              ; preds = %638
  %634 = landingpad { ptr, i32 }
          cleanup
  br label %1093

635:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #10
  store ptr %619, ptr %50, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull %49)
          to label %636 unwind label %641

636:                                              ; preds = %635
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #10
  %637 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %637, ptr noundef nonnull @.str.10)
          to label %638 unwind label %644

638:                                              ; preds = %636
  invoke void @__cxa_throw(ptr nonnull %637, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %633

639:                                              ; preds = %631
  %640 = landingpad { ptr, i32 }
          cleanup
  br label %643

641:                                              ; preds = %635
  %642 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #10
  br label %643

643:                                              ; preds = %641, %639
  %.pn1099 = phi { ptr, i32 } [ %642, %641 ], [ %640, %639 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #10
  br label %1093

644:                                              ; preds = %636
  %645 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %637) #10
  br label %1093

646:                                              ; preds = %656
  %647 = landingpad { ptr, i32 }
          cleanup
  br label %1093

.split4318:                                       ; preds = %.preheader1273.split.split
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1539, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

648:                                              ; preds = %.preheader1273.split.split
  %649 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %51)
          to label %650 unwind label %.split4320.split

650:                                              ; preds = %648
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %51)
          to label %..loopexit1241_crit_edge unwind label %.split4323.split

..loopexit1241_crit_edge:                         ; preds = %650
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %51) #10
  br label %..loopexit1337_crit_edge

.split4320.split:                                 ; preds = %648
  %651 = landingpad { ptr, i32 }
          cleanup
  br label %1093

.split4323.split:                                 ; preds = %650
  %652 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %51) #10
  br label %1093

.split4316:                                       ; preds = %.preheader1273.split.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %653 unwind label %657

653:                                              ; preds = %.split4316
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #10
  store ptr %2, ptr %54, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull %53)
          to label %654 unwind label %659

654:                                              ; preds = %653
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #10
  %655 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %655, ptr noundef nonnull @.str.10)
          to label %656 unwind label %662

656:                                              ; preds = %654
  invoke void @__cxa_throw(ptr nonnull %655, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %646

657:                                              ; preds = %.split4316
  %658 = landingpad { ptr, i32 }
          cleanup
  br label %661

659:                                              ; preds = %653
  %660 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #10
  br label %661

661:                                              ; preds = %659, %657
  %.pn1095 = phi { ptr, i32 } [ %660, %659 ], [ %658, %657 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #10
  br label %1093

662:                                              ; preds = %654
  %663 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %655) #10
  br label %1093

.lr.ph4311:                                       ; preds = %.lr.ph4434
  %664 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %620)
  %665 = load ptr, ptr %664, align 8, !tbaa !6
  %666 = getelementptr inbounds i8, ptr %665, i64 104
  %667 = load ptr, ptr %395, align 8, !tbaa !66
  %.not1058 = icmp eq ptr %667, null
  br i1 %.not1058, label %.lr.ph4308, label %668

668:                                              ; preds = %.lr.ph4311
  %669 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %619)
  %670 = load ptr, ptr %395, align 8, !tbaa !66
  %671 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %669, ptr noundef nonnull align 8 dereferenceable(8) %670)
          to label %672 unwind label %679

672:                                              ; preds = %668
  br i1 %671, label %673, label %.lr.ph4308

673:                                              ; preds = %672
  %674 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %619)
  %675 = getelementptr inbounds i8, ptr %674, i64 16
  %676 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %675, i64 noundef 0)
          to label %677 unwind label %.loopexit1277

677:                                              ; preds = %673
  %678 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %678, label %695 [
    i32 0, label %681
    i32 1, label %682
    i32 2, label %688
  ]

679:                                              ; preds = %668
  %680 = landingpad { ptr, i32 }
          cleanup
  br label %1093

.loopexit1277:                                    ; preds = %673
  %lpad.loopexit1279 = landingpad { ptr, i32 }
          cleanup
  br label %1093

.loopexit.split-lp1278:                           ; preds = %700
  %lpad.loopexit.split-lp1280 = landingpad { ptr, i32 }
          cleanup
  br label %1093

681:                                              ; preds = %677
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1560, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

682:                                              ; preds = %677
  %683 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %369, i8 noundef zeroext -1)
          to label %684 unwind label %686

684:                                              ; preds = %682
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %676)
          to label %685 unwind label %686

685:                                              ; preds = %684
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  br label %..loopexit1337_crit_edge

686:                                              ; preds = %684, %682
  %687 = landingpad { ptr, i32 }
          cleanup
  br label %1093

688:                                              ; preds = %677
  %689 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR7Pattern4Data6as_BoxEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %369, i8 noundef zeroext -1)
          to label %690 unwind label %693

690:                                              ; preds = %688
  %691 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNKSt10unique_ptrIN3HIR7PatternESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %689) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %691, ptr noundef nonnull align 8 dereferenceable(8) %676)
          to label %692 unwind label %693

692:                                              ; preds = %690
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  br label %..loopexit1337_crit_edge

693:                                              ; preds = %690, %688
  %694 = landingpad { ptr, i32 }
          cleanup
  br label %1093

695:                                              ; preds = %677
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %696 unwind label %701

696:                                              ; preds = %695
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #10
  store ptr %275, ptr %57, align 8, !tbaa !6
  %697 = getelementptr inbounds i8, ptr %57, i64 8
  store ptr %2, ptr %697, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(16) %57) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull %56)
          to label %698 unwind label %703

698:                                              ; preds = %696
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #10
  %699 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %699, ptr noundef nonnull @.str.10)
          to label %700 unwind label %706

700:                                              ; preds = %698
  invoke void @__cxa_throw(ptr nonnull %699, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %.loopexit.split-lp1278

701:                                              ; preds = %695
  %702 = landingpad { ptr, i32 }
          cleanup
  br label %705

703:                                              ; preds = %696
  %704 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #10
  br label %705

705:                                              ; preds = %703, %701
  %.pn1088 = phi { ptr, i32 } [ %704, %703 ], [ %702, %701 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #10
  br label %1093

706:                                              ; preds = %698
  %707 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %699) #10
  br label %1093

.lr.ph4308:                                       ; preds = %672, %.lr.ph4311
  %708 = call noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %666)
  switch i32 %708, label %..loopexit1337_crit_edge [
    i32 0, label %711
    i32 1, label %.preheader1205.split
    i32 2, label %.lr.ph4174
    i32 3, label %.lr.ph4012
  ]

.preheader1205.split:                             ; preds = %.lr.ph4308
  %709 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %666)
  %710 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %710, label %.split4200 [
    i32 0, label %.split4202
    i32 1, label %.preheader1165.split
    i32 6, label %.preheader1167.split
    i32 10, label %.preheader1169.split
    i32 8, label %.preheader1171.split
  ]

711:                                              ; preds = %.lr.ph4308
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1563, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

.preheader1171.split:                             ; preds = %.preheader1205.split
  %712 = call noundef nonnull align 8 dereferenceable(137) ptr @_ZNK3HIR7Pattern4Data12as_PathNamedEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %713 = getelementptr inbounds i8, ptr %712, i64 112
  %714 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR7PatternEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %713) #10
  %715 = icmp eq i64 %714, 0
  br i1 %715, label %..loopexit1337_crit_edge, label %.split4178, !llvm.loop !77

.preheader1169.split:                             ; preds = %.preheader1205.split
  %716 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3HIR7Pattern4Data8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br label %..loopexit1337_crit_edge

.preheader1167.split:                             ; preds = %.preheader1205.split
  %717 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR7Pattern4Data12as_PathValueEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br label %..loopexit1337_crit_edge

.preheader1165.split:                             ; preds = %.preheader1205.split
  %718 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br label %..loopexit1337_crit_edge

719:                                              ; preds = %725
  %720 = landingpad { ptr, i32 }
          cleanup
  br label %1093

.split4202:                                       ; preds = %.preheader1205.split
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1565, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

.split4200:                                       ; preds = %.preheader1205.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %721 unwind label %726

721:                                              ; preds = %.split4200
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #10
  store ptr %275, ptr %60, align 8, !tbaa !6
  %722 = getelementptr inbounds i8, ptr %60, i64 8
  store ptr %2, ptr %722, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(16) %60) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull %59)
          to label %723 unwind label %728

723:                                              ; preds = %721
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #10
  %724 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %724, ptr noundef nonnull @.str.10)
          to label %725 unwind label %731

725:                                              ; preds = %723
  invoke void @__cxa_throw(ptr nonnull %724, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %719

726:                                              ; preds = %.split4200
  %727 = landingpad { ptr, i32 }
          cleanup
  br label %730

728:                                              ; preds = %721
  %729 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #10
  br label %730

730:                                              ; preds = %728, %726
  %.pn1083 = phi { ptr, i32 } [ %729, %728 ], [ %727, %726 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #10
  br label %1093

731:                                              ; preds = %723
  %732 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %724) #10
  br label %1093

733:                                              ; preds = %738
  %734 = landingpad { ptr, i32 }
          cleanup
  br label %1093

.split4178:                                       ; preds = %.preheader1171.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %735 unwind label %739

735:                                              ; preds = %.split4178
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #10
  store ptr %2, ptr %63, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull %62)
          to label %736 unwind label %741

736:                                              ; preds = %735
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #10
  %737 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %737, ptr noundef nonnull @.str.10)
          to label %738 unwind label %744

738:                                              ; preds = %736
  invoke void @__cxa_throw(ptr nonnull %737, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %733

739:                                              ; preds = %.split4178
  %740 = landingpad { ptr, i32 }
          cleanup
  br label %743

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

743:                                              ; preds = %741, %739
  %.pn1079 = phi { ptr, i32 } [ %742, %741 ], [ %740, %739 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #10
  br label %1093

744:                                              ; preds = %736
  %745 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %737) #10
  br label %1093

746:                                              ; preds = %.lr.ph4174
  %747 = landingpad { ptr, i32 }
          cleanup
  br label %1093

.lr.ph4174:                                       ; preds = %.lr.ph4308
  %748 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %666)
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %369, i8 noundef zeroext 0)
          to label %.lr.ph4171 unwind label %746

..loopexit1197_crit_edge:                         ; preds = %..loopexit1160_crit_edge, %..loopexit1161_crit_edge, %..loopexit1162_crit_edge
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  br label %..loopexit1337_crit_edge

.lr.ph4171:                                       ; preds = %.lr.ph4174
  %749 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %749, label %762 [
    i32 0, label %761
    i32 1, label %.preheader1173
    i32 8, label %.preheader1175
    i32 7, label %.preheader1177
  ]

.preheader1177:                                   ; preds = %.lr.ph4171
  %750 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR7Pattern4Data12as_PathTupleEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %751 = getelementptr inbounds i8, ptr %750, i64 88
  %752 = call noundef zeroext i1 @_ZNK3HIR7Pattern11PathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(24) %751)
  br i1 %752, label %818, label %.split4019

.preheader1175:                                   ; preds = %.lr.ph4171
  %753 = call noundef nonnull align 8 dereferenceable(137) ptr @_ZNK3HIR7Pattern4Data12as_PathNamedEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %754 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %748) #10
  %.not1069 = icmp eq i64 %754, 0
  br i1 %.not1069, label %802, label %788

.preheader1173:                                   ; preds = %.lr.ph4171
  %755 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #10
  %756 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %748) #10
  store ptr %756, ptr %67, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #10
  %757 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %748) #10
  store ptr %757, ptr %68, align 8
  %758 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %68) #10
  br i1 %758, label %.lr.ph4104, label %..loopexit1160_crit_edge

759:                                              ; preds = %767
  %760 = landingpad { ptr, i32 }
          cleanup
  br label %1093

761:                                              ; preds = %.lr.ph4171
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1584, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

762:                                              ; preds = %.lr.ph4171
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %763 unwind label %768

763:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #10
  store ptr %275, ptr %66, align 8, !tbaa !6
  %764 = getelementptr inbounds i8, ptr %66, i64 8
  store ptr %2, ptr %764, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(16) %66) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull %65)
          to label %765 unwind label %770

765:                                              ; preds = %763
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #10
  %766 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %766, ptr noundef nonnull @.str.10)
          to label %767 unwind label %773

767:                                              ; preds = %765
  invoke void @__cxa_throw(ptr nonnull %766, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %759

768:                                              ; preds = %762
  %769 = landingpad { ptr, i32 }
          cleanup
  br label %772

770:                                              ; preds = %763
  %771 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #10
  br label %772

772:                                              ; preds = %770, %768
  %.pn1074 = phi { ptr, i32 } [ %771, %770 ], [ %769, %768 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #10
  br label %1093

773:                                              ; preds = %765
  %774 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %766) #10
  br label %1093

..loopexit1160_crit_edge:                         ; preds = %779, %.preheader1173
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #10
  br label %..loopexit1197_crit_edge

.lr.ph4104:                                       ; preds = %.preheader1173, %779
  %775 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %67) #10
  %776 = getelementptr inbounds i8, ptr %775, i64 16
  %777 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEENK4$_13clIS7_EES9_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(8) %776)
          to label %778 unwind label %.split4109.split

778:                                              ; preds = %.lr.ph4104
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %777)
          to label %779 unwind label %.split4109.split

779:                                              ; preds = %778
  %780 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %781 = load i8, ptr %780, align 1, !tbaa !61
  %782 = add i8 %781, 1
  store i8 %782, ptr %780, align 1, !tbaa !61
  %783 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %67) #10
  %784 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %68) #10
  br i1 %784, label %.lr.ph4104, label %..loopexit1160_crit_edge

.split4109.split:                                 ; preds = %778, %.lr.ph4104
  %785 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #10
  br label %1093

786:                                              ; preds = %794
  %787 = landingpad { ptr, i32 }
          cleanup
  br label %1093

788:                                              ; preds = %.preheader1175
  %789 = call noundef zeroext i1 @_ZNK3HIR7Pattern4Data14Data_PathNamed11is_wildcardEv(ptr noundef nonnull align 8 dereferenceable(137) %753)
  br i1 %789, label %802, label %.split4044

.split4044:                                       ; preds = %788
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %790 unwind label %795

790:                                              ; preds = %.split4044
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %71) #10
  store ptr %275, ptr %71, align 8, !tbaa !6
  %791 = getelementptr inbounds i8, ptr %71, i64 8
  store ptr %2, ptr %791, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(16) %71) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull %70)
          to label %792 unwind label %797

792:                                              ; preds = %790
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #10
  %793 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %793, ptr noundef nonnull @.str.10)
          to label %794 unwind label %800

794:                                              ; preds = %792
  invoke void @__cxa_throw(ptr nonnull %793, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %786

795:                                              ; preds = %.split4044
  %796 = landingpad { ptr, i32 }
          cleanup
  br label %799

797:                                              ; preds = %790
  %798 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #10
  br label %799

799:                                              ; preds = %797, %795
  %.pn1070 = phi { ptr, i32 } [ %798, %797 ], [ %796, %795 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #10
  br label %1093

800:                                              ; preds = %792
  %801 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %793) #10
  br label %1093

802:                                              ; preds = %788, %.preheader1175
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #10
  %803 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %748) #10
  store ptr %803, ptr %72, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #10
  %804 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %748) #10
  store ptr %804, ptr %73, align 8
  %805 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #10
  br i1 %805, label %.lr.ph4039, label %..loopexit1161_crit_edge

..loopexit1161_crit_edge:                         ; preds = %810, %802
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #10
  br label %..loopexit1197_crit_edge

.lr.ph4039:                                       ; preds = %802, %810
  %806 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  %807 = getelementptr inbounds i8, ptr %806, i64 16
  %808 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEENK4$_13clIS7_EES9_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(8) %807)
          to label %809 unwind label %.split4046.split

809:                                              ; preds = %.lr.ph4039
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %808)
          to label %810 unwind label %.split4046.split

810:                                              ; preds = %809
  %811 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %812 = load i8, ptr %811, align 1, !tbaa !61
  %813 = add i8 %812, 1
  store i8 %813, ptr %811, align 1, !tbaa !61
  %814 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  %815 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #10
  br i1 %815, label %.lr.ph4039, label %..loopexit1161_crit_edge

.split4046.split:                                 ; preds = %809, %.lr.ph4039
  %816 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #10
  br label %1093

.split4021.split:                                 ; preds = %818
  %817 = landingpad { ptr, i32 }
          cleanup
  br label %1093

.split4019:                                       ; preds = %.preheader1177
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.17, i32 noundef 1607, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

818:                                              ; preds = %.preheader1177
  invoke void @"_ZNSt8functionIFRKN3HIR7TypeRefES3_EEC2IRZN21PatternRulesetBuilder11append_fromERK4SpanRKNS0_7PatternES3_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %819 unwind label %.split4021.split

819:                                              ; preds = %818
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH18push_pattern_tupleERS_S2_RKNS4_4Data14Data_PathTupleESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(172) %750, ptr noundef nonnull %74)
          to label %..loopexit1162_crit_edge unwind label %.split4024.split

..loopexit1162_crit_edge:                         ; preds = %819
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #10
  br label %..loopexit1197_crit_edge

.split4024.split:                                 ; preds = %819
  %820 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #10
  br label %1093

.lr.ph4012:                                       ; preds = %.lr.ph4308
  %821 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %666)
  %822 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %822, label %830 [
    i32 0, label %829
    i32 1, label %.preheader1179
    i32 8, label %.preheader1181
  ]

.preheader1181:                                   ; preds = %.lr.ph4012
  %823 = call noundef nonnull align 8 dereferenceable(137) ptr @_ZNK3HIR7Pattern4Data12as_PathNamedEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %824 = getelementptr inbounds i8, ptr %823, i64 88
  %825 = call noundef zeroext i1 @_ZNK3HIR7Pattern11PathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(24) %824)
  br i1 %825, label %860, label %.split3945

.preheader1179:                                   ; preds = %.lr.ph4012
  %826 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %369, i8 noundef zeroext 0)
          to label %844 unwind label %.split3977.split

827:                                              ; preds = %835
  %828 = landingpad { ptr, i32 }
          cleanup
  br label %1093

829:                                              ; preds = %.lr.ph4012
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1614, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

830:                                              ; preds = %.lr.ph4012
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %831 unwind label %836

831:                                              ; preds = %830
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #10
  store ptr %275, ptr %77, align 8, !tbaa !6
  %832 = getelementptr inbounds i8, ptr %77, i64 8
  store ptr %2, ptr %832, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(16) %77) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull %76)
          to label %833 unwind label %838

833:                                              ; preds = %831
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #10
  %834 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %834, ptr noundef nonnull @.str.10)
          to label %835 unwind label %841

835:                                              ; preds = %833
  invoke void @__cxa_throw(ptr nonnull %834, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %827

836:                                              ; preds = %830
  %837 = landingpad { ptr, i32 }
          cleanup
  br label %840

838:                                              ; preds = %831
  %839 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #10
  br label %840

840:                                              ; preds = %838, %836
  %.pn1063 = phi { ptr, i32 } [ %839, %838 ], [ %837, %836 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #10
  br label %1093

841:                                              ; preds = %833
  %842 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %834) #10
  br label %1093

.split3977.split:                                 ; preds = %.preheader1179
  %843 = landingpad { ptr, i32 }
          cleanup
  br label %1093

844:                                              ; preds = %.preheader1179
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #10
  %845 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %821) #10
  store ptr %845, ptr %78, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #10
  %846 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %821) #10
  store ptr %846, ptr %79, align 8
  %847 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %79) #10
  br i1 %847, label %.lr.ph3972, label %..loopexit1163_crit_edge

..loopexit1163_crit_edge:                         ; preds = %852, %844
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #10
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  br label %..loopexit1337_crit_edge

.lr.ph3972:                                       ; preds = %844, %852
  %848 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %78) #10
  %849 = getelementptr inbounds i8, ptr %848, i64 24
  %850 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEENK4$_13clIS7_EES9_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(8) %849)
          to label %851 unwind label %.split3980.split

851:                                              ; preds = %.lr.ph3972
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %850)
          to label %852 unwind label %.split3980.split

852:                                              ; preds = %851
  %853 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %854 = load i8, ptr %853, align 1, !tbaa !61
  %855 = add i8 %854, 1
  store i8 %855, ptr %853, align 1, !tbaa !61
  %856 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %78) #10
  %857 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %79) #10
  br i1 %857, label %.lr.ph3972, label %..loopexit1163_crit_edge

.split3980.split:                                 ; preds = %851, %.lr.ph3972
  %858 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #10
  br label %1093

.split3947.split:                                 ; preds = %861, %860
  %859 = landingpad { ptr, i32 }
          cleanup
  br label %1093

.split3945:                                       ; preds = %.preheader1181
  call void @__assert_fail(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.17, i32 noundef 1627, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

860:                                              ; preds = %.preheader1181
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %369, i8 noundef zeroext 0)
          to label %861 unwind label %.split3947.split

861:                                              ; preds = %860
  invoke void @"_ZNSt8functionIFRKN3HIR7TypeRefES3_EEC2IRZN21PatternRulesetBuilder11append_fromERK4SpanRKNS0_7PatternES3_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %862 unwind label %.split3947.split

862:                                              ; preds = %861
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH19push_pattern_structERS_S2_RKNS4_4Data14Data_PathNamedESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(137) %823, ptr noundef nonnull %80)
          to label %..loopexit1164_crit_edge unwind label %.split3950.split

..loopexit1164_crit_edge:                         ; preds = %862
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #10
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  br label %..loopexit1337_crit_edge

.split3950.split:                                 ; preds = %862
  %863 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #10
  br label %1093

.preheader1211:                                   ; preds = %.preheader1282.split.split
  %864 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %85)
          to label %886 unwind label %.split3822.split.split.split.split.split

.split3837:                                       ; preds = %.preheader1282.split.split
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1637, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

.split3835:                                       ; preds = %.preheader1282.split.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #10
  store ptr @__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE, ptr %81, align 8, !tbaa !6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %865 unwind label %872

865:                                              ; preds = %.split3835
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %84) #10
  store ptr %81, ptr %84, align 8, !tbaa !6
  %866 = getelementptr inbounds i8, ptr %84, i64 8
  store ptr %275, ptr %866, align 8, !tbaa !6
  %867 = getelementptr inbounds i8, ptr %84, i64 16
  store ptr %2, ptr %867, align 8, !tbaa !6
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(24) %84)
          to label %868 unwind label %874

868:                                              ; preds = %865
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull %83)
          to label %869 unwind label %876

869:                                              ; preds = %868
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %84) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #10
  %870 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %870, ptr noundef nonnull @.str.5)
          to label %871 unwind label %880

871:                                              ; preds = %869
  invoke void @__cxa_throw(ptr nonnull %870, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %882

872:                                              ; preds = %.split3835
  %873 = landingpad { ptr, i32 }
          cleanup
  br label %879

874:                                              ; preds = %865
  %875 = landingpad { ptr, i32 }
          cleanup
  br label %878

876:                                              ; preds = %868
  %877 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #10
  br label %878

878:                                              ; preds = %876, %874
  %.pn1052 = phi { ptr, i32 } [ %877, %876 ], [ %875, %874 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %84) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #10
  br label %879

879:                                              ; preds = %878, %872
  %.pn1052.pn = phi { ptr, i32 } [ %.pn1052, %878 ], [ %873, %872 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #10
  br label %884

880:                                              ; preds = %869
  %881 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %870) #10
  br label %884

882:                                              ; preds = %871
  %883 = landingpad { ptr, i32 }
          cleanup
  br label %884

884:                                              ; preds = %882, %880, %879
  %.pn1055 = phi { ptr, i32 } [ %883, %882 ], [ %881, %880 ], [ %.pn1052.pn, %879 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #10
  br label %1093

.split3822.split.split.split.split.split:         ; preds = %.preheader1211
  %885 = landingpad { ptr, i32 }
          cleanup
  br label %1093

886:                                              ; preds = %.preheader1211
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %85)
          to label %..loopexit1199_crit_edge unwind label %.split3825.split.split.split.split.split

..loopexit1199_crit_edge:                         ; preds = %886
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %85) #10
  br label %..loopexit1337_crit_edge

.split3825.split.split.split.split.split:         ; preds = %886
  %887 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %85) #10
  br label %1093

.preheader1213:                                   ; preds = %.preheader1284.split.split
  %888 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %89)
          to label %904 unwind label %.split3705.split.split.split.split.split

889:                                              ; preds = %895
  %890 = landingpad { ptr, i32 }
          cleanup
  br label %1093

.split3720:                                       ; preds = %.preheader1284.split.split
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1646, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

.split3718:                                       ; preds = %.preheader1284.split.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %891 unwind label %896

891:                                              ; preds = %.split3718
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %88) #10
  store ptr %275, ptr %88, align 8, !tbaa !6
  %892 = getelementptr inbounds i8, ptr %88, i64 8
  store ptr %2, ptr %892, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(16) %88) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull %87)
          to label %893 unwind label %898

893:                                              ; preds = %891
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #10
  %894 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %894, ptr noundef nonnull @.str.10)
          to label %895 unwind label %901

895:                                              ; preds = %893
  invoke void @__cxa_throw(ptr nonnull %894, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %889

896:                                              ; preds = %.split3718
  %897 = landingpad { ptr, i32 }
          cleanup
  br label %900

898:                                              ; preds = %891
  %899 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #10
  br label %900

900:                                              ; preds = %898, %896
  %.pn1046 = phi { ptr, i32 } [ %899, %898 ], [ %897, %896 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #10
  br label %1093

901:                                              ; preds = %893
  %902 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %894) #10
  br label %1093

.split3705.split.split.split.split.split:         ; preds = %.preheader1213
  %903 = landingpad { ptr, i32 }
          cleanup
  br label %1093

904:                                              ; preds = %.preheader1213
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %89)
          to label %..loopexit1200_crit_edge unwind label %.split3708.split.split.split.split.split

..loopexit1200_crit_edge:                         ; preds = %904
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %89) #10
  br label %..loopexit1337_crit_edge

.split3708.split.split.split.split.split:         ; preds = %904
  %905 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %89) #10
  br label %1093

.lr.ph3698:                                       ; preds = %.lr.ph4434
  %906 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %620)
  %907 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %907, label %915 [
    i32 0, label %914
    i32 1, label %.preheader1215
    i32 10, label %931
    i32 6, label %.preheader1217
    i32 7, label %.lr.ph3592
    i32 8, label %.lr.ph3589
  ]

.preheader1217:                                   ; preds = %.lr.ph3698
  %908 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR7Pattern4Data12as_PathValueEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %909 = getelementptr inbounds i8, ptr %908, i64 88
  %910 = call noundef zeroext i1 @_ZNK3HIR7Pattern11PathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %909)
  br i1 %910, label %965, label %.split3663

.preheader1215:                                   ; preds = %.lr.ph3698
  %911 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %93)
          to label %929 unwind label %.split3688.split

912:                                              ; preds = %920
  %913 = landingpad { ptr, i32 }
          cleanup
  br label %1093

914:                                              ; preds = %.lr.ph3698
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1655, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

915:                                              ; preds = %.lr.ph3698
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %916 unwind label %921

916:                                              ; preds = %915
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %92) #10
  store ptr %275, ptr %92, align 8, !tbaa !6
  %917 = getelementptr inbounds i8, ptr %92, i64 8
  store ptr %2, ptr %917, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(16) %92) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull %91)
          to label %918 unwind label %923

918:                                              ; preds = %916
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %92) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #10
  %919 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %919, ptr noundef nonnull @.str.10)
          to label %920 unwind label %926

920:                                              ; preds = %918
  invoke void @__cxa_throw(ptr nonnull %919, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %912

921:                                              ; preds = %915
  %922 = landingpad { ptr, i32 }
          cleanup
  br label %925

923:                                              ; preds = %916
  %924 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %92) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #10
  br label %925

925:                                              ; preds = %923, %921
  %.pn1040 = phi { ptr, i32 } [ %924, %923 ], [ %922, %921 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #10
  br label %1093

926:                                              ; preds = %918
  %927 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %919) #10
  br label %1093

.split3688.split:                                 ; preds = %.preheader1215
  %928 = landingpad { ptr, i32 }
          cleanup
  br label %1093

929:                                              ; preds = %.preheader1215
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %93)
          to label %..loopexit1201_crit_edge unwind label %.split3691.split

..loopexit1201_crit_edge:                         ; preds = %929
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %93) #10
  br label %..loopexit1337_crit_edge

.split3691.split:                                 ; preds = %929
  %930 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %93) #10
  br label %1093

931:                                              ; preds = %.lr.ph3698
  %932 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3HIR7Pattern4Data8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %933 = call noundef zeroext i1 @_ZNK3HIR7Pattern5Value8is_NamedEv(ptr noundef nonnull align 8 dereferenceable(104) %932)
  br i1 %933, label %949, label %936

934:                                              ; preds = %941
  %935 = landingpad { ptr, i32 }
          cleanup
  br label %1093

936:                                              ; preds = %931
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %937 unwind label %942

937:                                              ; preds = %936
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #10
  store ptr %275, ptr %96, align 8, !tbaa !6
  %938 = getelementptr inbounds i8, ptr %96, i64 8
  store ptr %2, ptr %938, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(16) %96) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull %95)
          to label %939 unwind label %944

939:                                              ; preds = %937
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #10
  %940 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %940, ptr noundef nonnull @.str.10)
          to label %941 unwind label %947

941:                                              ; preds = %939
  invoke void @__cxa_throw(ptr nonnull %940, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %934

942:                                              ; preds = %936
  %943 = landingpad { ptr, i32 }
          cleanup
  br label %946

944:                                              ; preds = %937
  %945 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #10
  br label %946

946:                                              ; preds = %944, %942
  %.pn1031 = phi { ptr, i32 } [ %945, %944 ], [ %943, %942 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #10
  br label %1093

947:                                              ; preds = %939
  %948 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %940) #10
  br label %1093

949:                                              ; preds = %931
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #10
  store ptr @__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE, ptr %97, align 8, !tbaa !6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %950 unwind label %955

950:                                              ; preds = %949
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %100) #10
  store ptr %97, ptr %100, align 8, !tbaa !6
  %951 = getelementptr inbounds i8, ptr %100, i64 8
  store ptr %2, ptr %951, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef nonnull align 8 dereferenceable(16) %100) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull %99)
          to label %952 unwind label %957

952:                                              ; preds = %950
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #10
  %953 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %953, ptr noundef nonnull @.str.5)
          to label %954 unwind label %960

954:                                              ; preds = %952
  invoke void @__cxa_throw(ptr nonnull %953, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %962

955:                                              ; preds = %949
  %956 = landingpad { ptr, i32 }
          cleanup
  br label %959

957:                                              ; preds = %950
  %958 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #10
  br label %959

959:                                              ; preds = %957, %955
  %.pn1033 = phi { ptr, i32 } [ %958, %957 ], [ %956, %955 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #10
  br label %964

960:                                              ; preds = %952
  %961 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %953) #10
  br label %964

962:                                              ; preds = %954
  %963 = landingpad { ptr, i32 }
          cleanup
  br label %964

964:                                              ; preds = %962, %960, %959
  %.pn1035 = phi { ptr, i32 } [ %963, %962 ], [ %961, %960 ], [ %.pn1033, %959 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #10
  br label %1093

.split3663:                                       ; preds = %.preheader1217
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.17, i32 noundef 1669, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

965:                                              ; preds = %.preheader1217
  %966 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR7Pattern11PathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %909)
  %967 = getelementptr inbounds i8, ptr %966, i64 8
  %968 = load i32, ptr %967, align 8, !tbaa !78
  store i32 %968, ptr %102, align 8, !tbaa !80
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %394, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorI11PatternRuleSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %394) #10
  invoke void @_ZN11PatternRule12make_VariantENS_12Data_VariantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %101, ptr noundef nonnull %102)
          to label %969 unwind label %.split3665.split

969:                                              ; preds = %965
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %101)
          to label %..loopexit1202_crit_edge unwind label %.split3668.split

..loopexit1202_crit_edge:                         ; preds = %969
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %101) #10
  call void @_ZN11PatternRule12Data_VariantD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #10
  br label %..loopexit1337_crit_edge

.split3665.split:                                 ; preds = %965
  %970 = landingpad { ptr, i32 }
          cleanup
  br label %972

.split3668.split:                                 ; preds = %969
  %971 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %101) #10
  br label %972

972:                                              ; preds = %.split3668.split, %.split3665.split
  %.pn1029 = phi { ptr, i32 } [ %971, %.split3668.split ], [ %970, %.split3665.split ]
  call void @_ZN11PatternRule12Data_VariantD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #10
  br label %1093

.lr.ph3592:                                       ; preds = %.lr.ph3698
  %973 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR7Pattern4Data12as_PathTupleEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %974 = getelementptr inbounds i8, ptr %973, i64 88
  %975 = call noundef zeroext i1 @_ZNK3HIR7Pattern11PathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %974)
  br i1 %975, label %976, label %.split3594

.split3594:                                       ; preds = %.lr.ph3592
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.17, i32 noundef 1673, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

976:                                              ; preds = %.lr.ph3592
  %977 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR7Pattern11PathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %974)
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %103) #10
  %978 = load ptr, ptr %0, align 8, !tbaa !86
  invoke void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80) %103, ptr noundef nonnull align 8 dereferenceable(424) %978)
          to label %979 unwind label %.split3596

979:                                              ; preds = %976
  %980 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12field_path_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %390, ptr noundef nonnull align 8 dereferenceable(24) %369)
          to label %981 unwind label %.split3599

981:                                              ; preds = %979
  %982 = getelementptr inbounds i8, ptr %977, i64 8
  %983 = load i32, ptr %982, align 8, !tbaa !78
  %984 = trunc i32 %983 to i8
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %390, i8 noundef zeroext %984)
          to label %985 unwind label %.split3599

985:                                              ; preds = %981
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %390, i8 noundef zeroext 0)
          to label %986 unwind label %.split3599

986:                                              ; preds = %985
  invoke void @"_ZNSt8functionIFRKN3HIR7TypeRefES3_EEC2IRZN21PatternRulesetBuilder11append_fromERK4SpanRKNS0_7PatternES3_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %987 unwind label %.split3599

987:                                              ; preds = %986
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH18push_pattern_tupleERS_S2_RKNS4_4Data14Data_PathTupleESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80) %103, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(172) %973, ptr noundef nonnull %104)
          to label %988 unwind label %.split3602

988:                                              ; preds = %987
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #10
  %989 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %391) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %106) #10
  store ptr %103, ptr %106, align 8, !tbaa !6
  store ptr %0, ptr %392, align 8, !tbaa !87
  store ptr %977, ptr %393, align 8, !tbaa !6
  invoke void @"_ZNSt8functionIFvmEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS7_7TypeRefEE4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(24) %106)
          to label %990 unwind label %.split3605

990:                                              ; preds = %988
  invoke void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80) %0, i64 noundef %989, ptr noundef nonnull %105)
          to label %..loopexit1203_crit_edge unwind label %.split3608

..loopexit1203_crit_edge:                         ; preds = %990
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %106) #10
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %103) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %103) #10
  br label %..loopexit1337_crit_edge

.split3596:                                       ; preds = %976
  %991 = landingpad { ptr, i32 }
          cleanup
  br label %998

.split3599:                                       ; preds = %986, %985, %981, %979
  %992 = landingpad { ptr, i32 }
          cleanup
  br label %997

.split3602:                                       ; preds = %987
  %993 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #10
  br label %997

.split3605:                                       ; preds = %988
  %994 = landingpad { ptr, i32 }
          cleanup
  br label %996

.split3608:                                       ; preds = %990
  %995 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #10
  br label %996

996:                                              ; preds = %.split3608, %.split3605
  %.pn1025 = phi { ptr, i32 } [ %995, %.split3608 ], [ %994, %.split3605 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %106) #10
  br label %997

997:                                              ; preds = %996, %.split3602, %.split3599
  %.pn1025.pn = phi { ptr, i32 } [ %.pn1025, %996 ], [ %993, %.split3602 ], [ %992, %.split3599 ]
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %103) #10
  br label %998

998:                                              ; preds = %997, %.split3596
  %.pn1025.pn.pn = phi { ptr, i32 } [ %.pn1025.pn, %997 ], [ %991, %.split3596 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %103) #10
  br label %1093

.lr.ph3589:                                       ; preds = %.lr.ph3698
  %999 = call noundef nonnull align 8 dereferenceable(137) ptr @_ZNK3HIR7Pattern4Data12as_PathNamedEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %1000 = getelementptr inbounds i8, ptr %999, i64 88
  %1001 = getelementptr inbounds i8, ptr %999, i64 112
  %1002 = call noundef zeroext i1 @_ZNK3HIR7Pattern11PathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %1000)
  br i1 %1002, label %1004, label %1003

1003:                                             ; preds = %.lr.ph3589
  call void @__assert_fail(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.17, i32 noundef 1692, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

1004:                                             ; preds = %.lr.ph3589
  %1005 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR7Pattern11PathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(24) %1000)
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %107) #10
  %1006 = load ptr, ptr %0, align 8, !tbaa !86
  invoke void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80) %107, ptr noundef nonnull align 8 dereferenceable(424) %1006)
          to label %1007 unwind label %1021

1007:                                             ; preds = %1004
  %1008 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12field_path_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %386, ptr noundef nonnull align 8 dereferenceable(24) %369)
          to label %1009 unwind label %1023

1009:                                             ; preds = %1007
  %1010 = getelementptr inbounds i8, ptr %1005, i64 8
  %1011 = load i32, ptr %1010, align 8, !tbaa !78
  %1012 = trunc i32 %1011 to i8
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %386, i8 noundef zeroext %1012)
          to label %1013 unwind label %1023

1013:                                             ; preds = %1009
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %386, i8 noundef zeroext 0)
          to label %1014 unwind label %1023

1014:                                             ; preds = %1013
  %1015 = load ptr, ptr %1005, align 8, !tbaa !89
  %1016 = invoke noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200) %1015)
          to label %1017 unwind label %1023

1017:                                             ; preds = %1014
  br i1 %1016, label %1018, label %1025

1018:                                             ; preds = %1017
  %1019 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairI8RcStringN3HIR7PatternEESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1001) #10
  br i1 %1019, label %.loopexit1195, label %1020

1020:                                             ; preds = %1018
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.17, i32 noundef 1702, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

1021:                                             ; preds = %1004
  %1022 = landingpad { ptr, i32 }
          cleanup
  br label %1092

1023:                                             ; preds = %1079, %1045, %1025, %1014, %1013, %1009, %1007
  %1024 = landingpad { ptr, i32 }
          cleanup
  br label %1091

1025:                                             ; preds = %1017
  %1026 = load ptr, ptr %1005, align 8, !tbaa !89
  %1027 = getelementptr inbounds i8, ptr %1026, i64 104
  %1028 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %1027)
  %1029 = load i32, ptr %1010, align 8, !tbaa !78
  %1030 = zext i32 %1029 to i64
  %1031 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1028, i64 noundef %1030)
          to label %1032 unwind label %1023

1032:                                             ; preds = %1025
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %108) #10
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %108)
          to label %1033 unwind label %1040

1033:                                             ; preds = %1032
  %1034 = getelementptr inbounds i8, ptr %1031, i64 16
  %1035 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1034, ptr noundef nonnull align 8 dereferenceable(8) %108)
          to label %1036 unwind label %1042

1036:                                             ; preds = %1033
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #10
  br i1 %1035, label %1037, label %1045

1037:                                             ; preds = %1036
  %1038 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairI8RcStringN3HIR7PatternEESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1001) #10
  br i1 %1038, label %.loopexit1195, label %1039

1039:                                             ; preds = %1037
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.17, i32 noundef 1705, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

1040:                                             ; preds = %1032
  %1041 = landingpad { ptr, i32 }
          cleanup
  br label %1044

1042:                                             ; preds = %1033
  %1043 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #10
  br label %1044

1044:                                             ; preds = %1042, %1040
  %.pn1017 = phi { ptr, i32 } [ %1043, %1042 ], [ %1041, %1040 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #10
  br label %1091

1045:                                             ; preds = %1036
  %1046 = load ptr, ptr %1005, align 8, !tbaa !89
  %1047 = getelementptr inbounds i8, ptr %1046, i64 104
  %1048 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %1047)
  %1049 = load i32, ptr %1010, align 8, !tbaa !78
  %1050 = zext i32 %1049 to i64
  %1051 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1048, i64 noundef %1050)
          to label %1052 unwind label %1023

1052:                                             ; preds = %1045
  %1053 = getelementptr inbounds i8, ptr %1051, i64 8
  %1054 = load i8, ptr %1053, align 8, !tbaa !90, !range !59, !noundef !60
  %1055 = trunc nuw i8 %1054 to i1
  br i1 %1055, label %1079, label %1056

1056:                                             ; preds = %1052
  %1057 = call noundef zeroext i1 @_ZNKSt6vectorISt4pairI8RcStringN3HIR7PatternEESaIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1001) #10
  br i1 %1057, label %1059, label %1058

1058:                                             ; preds = %1056
  call void @__assert_fail(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.17, i32 noundef 1708, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

1059:                                             ; preds = %1056
  %1060 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR17pattern_get_tupleERK4SpanRKNS_4PathERKNS_7Pattern11PathBindingE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(88) %999, ptr noundef nonnull align 8 dereferenceable(24) %1000)
          to label %.preheader1194 unwind label %1062

.preheader1194:                                   ; preds = %1059
  %1061 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1060) #10
  %.not4776 = icmp eq i64 %1061, 0
  br i1 %.not4776, label %.loopexit1195, label %.lr.ph3587

1062:                                             ; preds = %1059
  %1063 = landingpad { ptr, i32 }
          cleanup
  br label %1091

.lr.ph3587:                                       ; preds = %.preheader1194, %1069
  %1064 = phi i64 [ %1074, %1069 ], [ 0, %.preheader1194 ]
  %.08823586 = phi i32 [ %1073, %1069 ], [ 0, %.preheader1194 ]
  %1065 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1060, i64 noundef %1064) #10
  %1066 = getelementptr inbounds i8, ptr %1065, i64 16
  %1067 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEENK4$_13clIS7_EES9_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(8) %1066)
          to label %1068 unwind label %1077

1068:                                             ; preds = %.lr.ph3587
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %107, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %1067)
          to label %1069 unwind label %1077

1069:                                             ; preds = %1068
  %1070 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %386)
  %1071 = load i8, ptr %1070, align 1, !tbaa !61
  %1072 = add i8 %1071, 1
  store i8 %1072, ptr %1070, align 1, !tbaa !61
  %1073 = add i32 %.08823586, 1
  %1074 = zext i32 %1073 to i64
  %1075 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1060) #10
  %1076 = icmp ugt i64 %1075, %1074
  br i1 %1076, label %.lr.ph3587, label %.loopexit1195, !llvm.loop !93

1077:                                             ; preds = %1068, %.lr.ph3587
  %1078 = landingpad { ptr, i32 }
          cleanup
  br label %1091

1079:                                             ; preds = %1052
  invoke void @"_ZNSt8functionIFRKN3HIR7TypeRefES3_EEC2IRZN21PatternRulesetBuilder11append_fromERK4SpanRKNS0_7PatternES3_E4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %1080 unwind label %1023

1080:                                             ; preds = %1079
  invoke void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH19push_pattern_structERS_S2_RKNS4_4Data14Data_PathNamedESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80) %107, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(137) %999, ptr noundef nonnull %109)
          to label %1081 unwind label %1082

1081:                                             ; preds = %1080
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #10
  br label %.loopexit1195

1082:                                             ; preds = %1080
  %1083 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #10
  br label %1091

.loopexit1195:                                    ; preds = %1069, %.preheader1194, %1037, %1081, %1018
  %1084 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %387) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %111) #10
  store ptr %107, ptr %111, align 8, !tbaa !6
  store ptr %0, ptr %388, align 8, !tbaa !94
  store ptr %1005, ptr %389, align 8, !tbaa !6
  invoke void @"_ZNSt8functionIFvmEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS7_7TypeRefEE4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 8 dereferenceable(24) %111)
          to label %1085 unwind label %1086

1085:                                             ; preds = %.loopexit1195
  invoke void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80) %0, i64 noundef %1084, ptr noundef nonnull %110)
          to label %..loopexit1204_crit_edge unwind label %1088

..loopexit1204_crit_edge:                         ; preds = %1085
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %111) #10
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %107) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %107) #10
  br label %..loopexit1337_crit_edge

1086:                                             ; preds = %.loopexit1195
  %1087 = landingpad { ptr, i32 }
          cleanup
  br label %1090

1088:                                             ; preds = %1085
  %1089 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #10
  br label %1090

1090:                                             ; preds = %1088, %1086
  %.pn1021 = phi { ptr, i32 } [ %1089, %1088 ], [ %1087, %1086 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %111) #10
  br label %1091

1091:                                             ; preds = %1062, %1077, %1090, %1082, %1044, %1023
  %.pn1021.pn = phi { ptr, i32 } [ %.pn1021, %1090 ], [ %1083, %1082 ], [ %1024, %1023 ], [ %.pn1017, %1044 ], [ %1078, %1077 ], [ %1063, %1062 ]
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %107) #10
  br label %1092

1092:                                             ; preds = %1091, %1021
  %.pn1021.pn.pn = phi { ptr, i32 } [ %.pn1021.pn, %1091 ], [ %1022, %1021 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %107) #10
  br label %1093

1093:                                             ; preds = %.loopexit1277, %.loopexit.split-lp1278, %912, %925, %926, %972, %998, %1092, %.split3691.split, %.split3688.split, %964, %947, %946, %934, %889, %900, %901, %.split3708.split.split.split.split.split, %.split3705.split.split.split.split.split, %884, %.split3825.split.split.split.split.split, %.split3822.split.split.split.split.split, %679, %706, %705, %693, %686, %827, %840, %841, %.split3980.split, %.split3977.split, %.split3950.split, %.split3947.split, %746, %.split4021.split, %.split4024.split, %786, %799, %800, %.split4046.split, %.split4109.split, %773, %772, %759, %719, %730, %731, %744, %743, %733, %646, %661, %662, %.split4323.split, %.split4320.split, %633, %643, %644
  %.pn1042.pn = phi { ptr, i32 } [ %634, %633 ], [ %645, %644 ], [ %.pn1099, %643 ], [ %647, %646 ], [ %663, %662 ], [ %.pn1095, %661 ], [ %652, %.split4323.split ], [ %651, %.split4320.split ], [ %680, %679 ], [ %707, %706 ], [ %.pn1088, %705 ], [ %694, %693 ], [ %687, %686 ], [ %720, %719 ], [ %732, %731 ], [ %.pn1083, %730 ], [ %734, %733 ], [ %745, %744 ], [ %.pn1079, %743 ], [ %747, %746 ], [ %760, %759 ], [ %774, %773 ], [ %.pn1074, %772 ], [ %785, %.split4109.split ], [ %816, %.split4046.split ], [ %787, %786 ], [ %801, %800 ], [ %.pn1070, %799 ], [ %820, %.split4024.split ], [ %817, %.split4021.split ], [ %828, %827 ], [ %842, %841 ], [ %.pn1063, %840 ], [ %858, %.split3980.split ], [ %843, %.split3977.split ], [ %863, %.split3950.split ], [ %859, %.split3947.split ], [ %.pn1055, %884 ], [ %887, %.split3825.split.split.split.split.split ], [ %885, %.split3822.split.split.split.split.split ], [ %890, %889 ], [ %902, %901 ], [ %.pn1046, %900 ], [ %905, %.split3708.split.split.split.split.split ], [ %903, %.split3705.split.split.split.split.split ], [ %913, %912 ], [ %927, %926 ], [ %.pn1040, %925 ], [ %.pn1021.pn.pn, %1092 ], [ %.pn1025.pn.pn, %998 ], [ %.pn1029, %972 ], [ %930, %.split3691.split ], [ %928, %.split3688.split ], [ %.pn1035, %964 ], [ %935, %934 ], [ %948, %947 ], [ %.pn1031, %946 ], [ %lpad.loopexit1279, %.loopexit1277 ], [ %lpad.loopexit.split-lp1280, %.loopexit.split-lp1278 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %47) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  br label %1094

1094:                                             ; preds = %1093, %621
  %.pn1042.pn.pn = phi { ptr, i32 } [ %.pn1042.pn, %1093 ], [ %622, %621 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #10
  br label %.loopexit.split-lp1343

1095:                                             ; preds = %1106
  %1096 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.split3386:                                       ; preds = %.preheader1372.split.split
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1740, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

1097:                                             ; preds = %.preheader1372.split.split
  %1098 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %112)
          to label %1099 unwind label %.split3388.split

1099:                                             ; preds = %1097
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %112)
          to label %..loopexit1338_crit_edge unwind label %.split3391.split

..loopexit1338_crit_edge:                         ; preds = %1099
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %112) #10
  br label %.loopexit1397

.split3388.split:                                 ; preds = %1097
  %1100 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.split3391.split:                                 ; preds = %1099
  %1101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %112) #10
  br label %.loopexit.split-lp1343

.split3384:                                       ; preds = %.preheader1372.split.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %113) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1102 unwind label %1107

1102:                                             ; preds = %.split3384
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %115) #10
  store ptr %275, ptr %115, align 8, !tbaa !6
  %1103 = getelementptr inbounds i8, ptr %115, i64 8
  store ptr %2, ptr %1103, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_23vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef nonnull align 8 dereferenceable(16) %115) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull %114)
          to label %1104 unwind label %1109

1104:                                             ; preds = %1102
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %115) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #10
  %1105 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1105, ptr noundef nonnull @.str.10)
          to label %1106 unwind label %1112

1106:                                             ; preds = %1104
  invoke void @__cxa_throw(ptr nonnull %1105, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1095

1107:                                             ; preds = %.split3384
  %1108 = landingpad { ptr, i32 }
          cleanup
  br label %1111

1109:                                             ; preds = %1102
  %1110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %115) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #10
  br label %1111

1111:                                             ; preds = %1109, %1107
  %.pn1013 = phi { ptr, i32 } [ %1110, %1109 ], [ %1108, %1107 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #10
  br label %.loopexit.split-lp1343

1112:                                             ; preds = %1104
  %1113 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1105) #10
  br label %.loopexit.split-lp1343

1114:                                             ; preds = %1119
  %1115 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.split3193:                                       ; preds = %.preheader1374.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %116) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1116 unwind label %1120

1116:                                             ; preds = %.split3193
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %118) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_24vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 1 dereferenceable(1) %118) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %116, i32 noundef 0, ptr noundef nonnull %117)
          to label %1117 unwind label %1122

1117:                                             ; preds = %1116
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %118) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %116) #10
  %1118 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1118, ptr noundef nonnull @.str.59)
          to label %1119 unwind label %1125

1119:                                             ; preds = %1117
  invoke void @__cxa_throw(ptr nonnull %1118, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1114

1120:                                             ; preds = %.split3193
  %1121 = landingpad { ptr, i32 }
          cleanup
  br label %1124

1122:                                             ; preds = %1116
  %1123 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %118) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #10
  br label %1124

1124:                                             ; preds = %1122, %1120
  %.pn1007 = phi { ptr, i32 } [ %1123, %1122 ], [ %1121, %1120 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %116) #10
  br label %.loopexit.split-lp1343

1125:                                             ; preds = %1117
  %1126 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1118) #10
  br label %.loopexit.split-lp1343

1127:                                             ; preds = %1132
  %1128 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.split3004:                                       ; preds = %.preheader1376.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %119) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1129 unwind label %1133

1129:                                             ; preds = %.split3004
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %121) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_25vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef nonnull align 1 dereferenceable(1) %121) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %119, i32 noundef 0, ptr noundef nonnull %120)
          to label %1130 unwind label %1135

1130:                                             ; preds = %1129
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %121) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #10
  %1131 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1131, ptr noundef nonnull @.str.59)
          to label %1132 unwind label %1138

1132:                                             ; preds = %1130
  invoke void @__cxa_throw(ptr nonnull %1131, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1127

1133:                                             ; preds = %.split3004
  %1134 = landingpad { ptr, i32 }
          cleanup
  br label %1137

1135:                                             ; preds = %1129
  %1136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %121) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #10
  br label %1137

1137:                                             ; preds = %1135, %1133
  %.pn1003 = phi { ptr, i32 } [ %1136, %1135 ], [ %1134, %1133 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #10
  br label %.loopexit.split-lp1343

1138:                                             ; preds = %1130
  %1139 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1131) #10
  br label %.loopexit.split-lp1343

.lr.ph3000:                                       ; preds = %.lr.ph4767
  %1140 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %1141 = getelementptr inbounds i8, ptr %1140, i64 8
  %1142 = call noundef zeroext i1 @_ZNK3HIR9ArraySize8is_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1141)
  br i1 %1142, label %1176, label %1143

.loopexit1342:                                    ; preds = %1176
  %lpad.loopexit1344 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.loopexit.split-lp1343.loopexit:                  ; preds = %1171, %1155, %1153, %1151, %1149, %1146, %1143
  %lpad.loopexit1380 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

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

1143:                                             ; preds = %.lr.ph3000
  %1144 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1145 unwind label %.loopexit.split-lp1343.loopexit

1145:                                             ; preds = %1143
  br i1 %1144, label %1146, label %1157

1146:                                             ; preds = %1145
  %1147 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !96
  %1148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1147, ptr noundef nonnull @__func__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE)
          to label %1149 unwind label %.loopexit.split-lp1343.loopexit

1149:                                             ; preds = %1146
  %1150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1148, ptr noundef nonnull @.str.68)
          to label %1151 unwind label %.loopexit.split-lp1343.loopexit

1151:                                             ; preds = %1149
  %1152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8) %1150, ptr noundef nonnull align 8 dereferenceable(32) %1141)
          to label %1153 unwind label %.loopexit.split-lp1343.loopexit

1153:                                             ; preds = %1151
  %1154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1152, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1155 unwind label %.loopexit.split-lp1343.loopexit

1155:                                             ; preds = %1153
  %1156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1154, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1157 unwind label %.loopexit.split-lp1343.loopexit

1157:                                             ; preds = %1145, %1155
  %1158 = call noundef zeroext i1 @_ZNK3HIR7Pattern4Data6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br i1 %1158, label %1171, label %1159

1159:                                             ; preds = %1157
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %122) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1160 unwind label %1164

1160:                                             ; preds = %1159
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %124) #10
  store ptr %2, ptr %124, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_26vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef nonnull align 8 dereferenceable(8) %124) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull %123)
          to label %1161 unwind label %1166

1161:                                             ; preds = %1160
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %124) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %122) #10
  %1162 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1162, ptr noundef nonnull @.str.10)
          to label %1163 unwind label %1169

1163:                                             ; preds = %1161
  invoke void @__cxa_throw(ptr nonnull %1162, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %.loopexit.split-lp1343.loopexit.split-lp

1164:                                             ; preds = %1159
  %1165 = landingpad { ptr, i32 }
          cleanup
  br label %1168

1166:                                             ; preds = %1160
  %1167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %124) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #10
  br label %1168

1168:                                             ; preds = %1166, %1164
  %.pn979 = phi { ptr, i32 } [ %1167, %1166 ], [ %1165, %1164 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %122) #10
  br label %.loopexit.split-lp1343

1169:                                             ; preds = %1161
  %1170 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1162) #10
  br label %.loopexit.split-lp1343

1171:                                             ; preds = %1157
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %125)
          to label %1172 unwind label %.loopexit.split-lp1343.loopexit

1172:                                             ; preds = %1171
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %125)
          to label %1173 unwind label %1174

1173:                                             ; preds = %1172
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %125) #10
  br label %.loopexit1397

1174:                                             ; preds = %1172
  %1175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %125) #10
  br label %.loopexit.split-lp1343

1176:                                             ; preds = %.lr.ph3000
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %369, i8 noundef zeroext 0)
          to label %.lr.ph2997 unwind label %.loopexit1342

.loopexit1305:                                    ; preds = %1202, %..loopexit1246_crit_edge, %.preheader1288, %1357, %1331
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  br label %.loopexit1397

.lr.ph2997:                                       ; preds = %1176
  %1177 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %1177, label %1189 [
    i32 0, label %1188
    i32 1, label %.preheader1288
    i32 12, label %.preheader1290
    i32 13, label %.lr.ph2701
  ]

.preheader1290:                                   ; preds = %.lr.ph2997
  %1178 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR7Pattern4Data8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %1179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1141)
  %1180 = load i64, ptr %1179, align 8, !tbaa !12
  %1181 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1178) #10
  %1182 = icmp eq i64 %1180, %1181
  br i1 %1182, label %1224, label %.split2709

.preheader1288:                                   ; preds = %.lr.ph2997
  %1183 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %1184 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1141)
  %1185 = load i64, ptr %1184, align 8, !tbaa !12
  %.not4775 = icmp eq i64 %1185, 0
  br i1 %.not4775, label %.loopexit1305, label %.lr.ph2848

1186:                                             ; preds = %1193
  %1187 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

1188:                                             ; preds = %.lr.ph2997
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1767, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

1189:                                             ; preds = %.lr.ph2997
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %126) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1190 unwind label %1194

1190:                                             ; preds = %1189
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %128) #10
  store ptr %2, ptr %128, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_27vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull align 8 dereferenceable(8) %128) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull %127)
          to label %1191 unwind label %1196

1191:                                             ; preds = %1190
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %126) #10
  %1192 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1192, ptr noundef nonnull @.str.10)
          to label %1193 unwind label %1199

1193:                                             ; preds = %1191
  invoke void @__cxa_throw(ptr nonnull %1192, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1186

1194:                                             ; preds = %1189
  %1195 = landingpad { ptr, i32 }
          cleanup
  br label %1198

1196:                                             ; preds = %1190
  %1197 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %126) #10
  br label %1198

1198:                                             ; preds = %1196, %1194
  %.pn998 = phi { ptr, i32 } [ %1197, %1196 ], [ %1195, %1194 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %126) #10
  br label %.loopexit.split-lp1343

1199:                                             ; preds = %1191
  %1200 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1192) #10
  br label %.loopexit.split-lp1343

.split2850.split:                                 ; preds = %.lr.ph2848
  %1201 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.lr.ph2848:                                       ; preds = %.preheader1288, %1202
  %.08532847 = phi i32 [ %1206, %1202 ], [ 0, %.preheader1288 ]
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %1140)
          to label %1202 unwind label %.split2850.split

1202:                                             ; preds = %.lr.ph2848
  %1203 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %1204 = load i8, ptr %1203, align 1, !tbaa !61
  %1205 = add i8 %1204, 1
  store i8 %1205, ptr %1203, align 1, !tbaa !61
  %1206 = add i32 %.08532847, 1
  %1207 = zext i32 %1206 to i64
  %1208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1141)
  %1209 = load i64, ptr %1208, align 8, !tbaa !12
  %1210 = icmp ugt i64 %1209, %1207
  br i1 %1210, label %.lr.ph2848, label %.loopexit1305, !llvm.loop !97

1211:                                             ; preds = %1216
  %1212 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.split2709:                                       ; preds = %.preheader1290
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %129) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1213 unwind label %1217

1213:                                             ; preds = %.split2709
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %131) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef nonnull align 1 dereferenceable(1) %131) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull %130)
          to label %1214 unwind label %1219

1214:                                             ; preds = %1213
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %131) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #10
  %1215 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1215, ptr noundef nonnull @.str.10)
          to label %1216 unwind label %1222

1216:                                             ; preds = %1214
  invoke void @__cxa_throw(ptr nonnull %1215, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1211

1217:                                             ; preds = %.split2709
  %1218 = landingpad { ptr, i32 }
          cleanup
  br label %1221

1219:                                             ; preds = %1213
  %1220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %131) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #10
  br label %1221

1221:                                             ; preds = %1219, %1217
  %.pn994 = phi { ptr, i32 } [ %1220, %1219 ], [ %1218, %1217 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #10
  br label %.loopexit.split-lp1343

1222:                                             ; preds = %1214
  %1223 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1215) #10
  br label %.loopexit.split-lp1343

1224:                                             ; preds = %.preheader1290
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %132) #10
  %1225 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1178) #10
  store ptr %1225, ptr %132, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %133) #10
  %1226 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1178) #10
  store ptr %1226, ptr %133, align 8
  %1227 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %133) #10
  br i1 %1227, label %.lr.ph2704, label %..loopexit1246_crit_edge

..loopexit1246_crit_edge:                         ; preds = %1229, %1224
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #10
  br label %.loopexit1305

.lr.ph2704:                                       ; preds = %1224, %1229
  %1228 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %132) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %1228, ptr noundef nonnull align 8 dereferenceable(8) %1140)
          to label %1229 unwind label %.split2711.split

1229:                                             ; preds = %.lr.ph2704
  %1230 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %1231 = load i8, ptr %1230, align 1, !tbaa !61
  %1232 = add i8 %1231, 1
  store i8 %1232, ptr %1230, align 1, !tbaa !61
  %1233 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %132) #10
  %1234 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %133) #10
  br i1 %1234, label %.lr.ph2704, label %..loopexit1246_crit_edge

.split2711.split:                                 ; preds = %.lr.ph2704
  %1235 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #10
  br label %.loopexit.split-lp1343

.lr.ph2701:                                       ; preds = %.lr.ph2997
  %1236 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNK3HIR7Pattern4Data13as_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %1237 = getelementptr inbounds i8, ptr %1236, i64 48
  %1238 = getelementptr inbounds i8, ptr %1236, i64 24
  %1239 = getelementptr inbounds i8, ptr %1236, i64 44
  %1240 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1236) #10
  %1241 = icmp ult i64 %1240, 128
  br i1 %1241, label %1253, label %1242

.loopexit1240:                                    ; preds = %.lr.ph2695
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

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

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

1242:                                             ; preds = %.lr.ph2701
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %134) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1243 unwind label %1246

1243:                                             ; preds = %1242
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %136) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %135, ptr noundef nonnull align 1 dereferenceable(1) %136) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef nonnull %135)
          to label %1244 unwind label %1248

1244:                                             ; preds = %1243
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %136) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %134) #10
  %1245 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1245, ptr noundef nonnull @.str.10)
          to label %.invoke5105 unwind label %1251

1246:                                             ; preds = %1242
  %1247 = landingpad { ptr, i32 }
          cleanup
  br label %1250

1248:                                             ; preds = %1243
  %1249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %135) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %136) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %134) #10
  br label %1250

1250:                                             ; preds = %1248, %1246
  %.pn981 = phi { ptr, i32 } [ %1249, %1248 ], [ %1247, %1246 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %134) #10
  br label %.loopexit.split-lp1343

1251:                                             ; preds = %1244
  %1252 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1245) #10
  br label %.loopexit.split-lp1343

1253:                                             ; preds = %.lr.ph2701
  %1254 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1236) #10
  %1255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1141)
  %1256 = load i64, ptr %1255, align 8, !tbaa !12
  %1257 = icmp ult i64 %1254, %1256
  br i1 %1257, label %1269, label %1258

1258:                                             ; preds = %1253
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %137) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1259 unwind label %1262

1259:                                             ; preds = %1258
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %139) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_30vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 1 dereferenceable(1) %139) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull %138)
          to label %1260 unwind label %1264

1260:                                             ; preds = %1259
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #10
  %1261 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1261, ptr noundef nonnull @.str.10)
          to label %.invoke5105 unwind label %1267

1262:                                             ; preds = %1258
  %1263 = landingpad { ptr, i32 }
          cleanup
  br label %1266

1264:                                             ; preds = %1259
  %1265 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #10
  br label %1266

1266:                                             ; preds = %1264, %1262
  %.pn983 = phi { ptr, i32 } [ %1265, %1264 ], [ %1263, %1262 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #10
  br label %.loopexit.split-lp1343

1267:                                             ; preds = %1260
  %1268 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1261) #10
  br label %.loopexit.split-lp1343

1269:                                             ; preds = %1253
  %1270 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1237) #10
  %1271 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1141)
  %1272 = load i64, ptr %1271, align 8, !tbaa !12
  %1273 = icmp ult i64 %1270, %1272
  br i1 %1273, label %1285, label %1274

1274:                                             ; preds = %1269
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %140) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1275 unwind label %1278

1275:                                             ; preds = %1274
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %142) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %141, ptr noundef nonnull align 1 dereferenceable(1) %142) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef nonnull %141)
          to label %1276 unwind label %1280

1276:                                             ; preds = %1275
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %142) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %140) #10
  %1277 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1277, ptr noundef nonnull @.str.10)
          to label %.invoke5105 unwind label %1283

1278:                                             ; preds = %1274
  %1279 = landingpad { ptr, i32 }
          cleanup
  br label %1282

1280:                                             ; preds = %1275
  %1281 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %141) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %142) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #10
  br label %1282

1282:                                             ; preds = %1280, %1278
  %.pn985 = phi { ptr, i32 } [ %1281, %1280 ], [ %1279, %1278 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %140) #10
  br label %.loopexit.split-lp1343

1283:                                             ; preds = %1276
  %1284 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1277) #10
  br label %.loopexit.split-lp1343

1285:                                             ; preds = %1269
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %143) #10
  %1286 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1236) #10
  store ptr %1286, ptr %143, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %144) #10
  %1287 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1236) #10
  store ptr %1287, ptr %144, align 8
  %1288 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %144) #10
  br i1 %1288, label %.lr.ph2692, label %._crit_edge2693

._crit_edge2693:                                  ; preds = %1298, %1285
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %144) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #10
  %1289 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %1290 = load i8, ptr %1289, align 1, !tbaa !61
  %1291 = zext i8 %1290 to i64
  %1292 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1141)
  %1293 = load i64, ptr %1292, align 8, !tbaa !12
  %1294 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1237) #10
  %1295 = sub i64 %1293, %1294
  %1296 = icmp ugt i64 %1295, %1291
  br i1 %1296, label %.lr.ph2695, label %._crit_edge2696

.lr.ph2692:                                       ; preds = %1285, %1298
  %1297 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %143) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %1297, ptr noundef nonnull align 8 dereferenceable(8) %1140)
          to label %1298 unwind label %1304

1298:                                             ; preds = %.lr.ph2692
  %1299 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %1300 = load i8, ptr %1299, align 1, !tbaa !61
  %1301 = add i8 %1300, 1
  store i8 %1301, ptr %1299, align 1, !tbaa !61
  %1302 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %143) #10
  %1303 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %144) #10
  br i1 %1303, label %.lr.ph2692, label %._crit_edge2693

1304:                                             ; preds = %.lr.ph2692
  %1305 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %144) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #10
  br label %.loopexit.split-lp1343

.lr.ph2695:                                       ; preds = %._crit_edge2693, %1306
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %1140)
          to label %1306 unwind label %.loopexit1240

1306:                                             ; preds = %.lr.ph2695
  %1307 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %1308 = load i8, ptr %1307, align 1, !tbaa !61
  %1309 = add i8 %1308, 1
  store i8 %1309, ptr %1307, align 1, !tbaa !61
  %1310 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %1311 = load i8, ptr %1310, align 1, !tbaa !61
  %1312 = zext i8 %1311 to i64
  %1313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1141)
  %1314 = load i64, ptr %1313, align 8, !tbaa !12
  %1315 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1237) #10
  %1316 = sub i64 %1314, %1315
  %1317 = icmp ugt i64 %1316, %1312
  br i1 %1317, label %.lr.ph2695, label %._crit_edge2696, !llvm.loop !98

._crit_edge2696:                                  ; preds = %1306, %._crit_edge2693
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %145) #10
  %1318 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1237) #10
  store ptr %1318, ptr %145, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %146) #10
  %1319 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1237) #10
  store ptr %1319, ptr %146, align 8
  %1320 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %146) #10
  br i1 %1320, label %.lr.ph2698, label %._crit_edge2699

._crit_edge2699:                                  ; preds = %1323, %._crit_edge2696
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %146) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #10
  %1321 = invoke noundef zeroext i1 @_ZNK3HIR14PatternBinding8is_validEv(ptr noundef nonnull align 8 dereferenceable(24) %1238)
          to label %1331 unwind label %.loopexit.split-lp.loopexit

.lr.ph2698:                                       ; preds = %._crit_edge2696, %1323
  %1322 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %145) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %1322, ptr noundef nonnull align 8 dereferenceable(8) %1140)
          to label %1323 unwind label %1329

1323:                                             ; preds = %.lr.ph2698
  %1324 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %1325 = load i8, ptr %1324, align 1, !tbaa !61
  %1326 = add i8 %1325, 1
  store i8 %1326, ptr %1324, align 1, !tbaa !61
  %1327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %145) #10
  %1328 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %146) #10
  br i1 %1328, label %.lr.ph2698, label %._crit_edge2699

1329:                                             ; preds = %.lr.ph2698
  %1330 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %146) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #10
  br label %.loopexit.split-lp1343

1331:                                             ; preds = %._crit_edge2699
  br i1 %1321, label %1332, label %.loopexit1305

1332:                                             ; preds = %1331
  %1333 = load i32, ptr %1239, align 4, !tbaa !99
  %1334 = icmp eq i32 %1333, 0
  br i1 %1334, label %1347, label %1335

1335:                                             ; preds = %1332
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %147) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1336 unwind label %1340

1336:                                             ; preds = %1335
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %149) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_32vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %148, ptr noundef nonnull align 1 dereferenceable(1) %149) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull %148)
          to label %1337 unwind label %1342

1337:                                             ; preds = %1336
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %149) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %147) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #10
  %1338 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1338, ptr noundef nonnull @.str.10)
          to label %.invoke5105 unwind label %1345

.invoke5105:                                      ; preds = %1337, %1276, %1260, %1244
  %1339 = phi ptr [ %1245, %1244 ], [ %1261, %1260 ], [ %1277, %1276 ], [ %1338, %1337 ]
  invoke void @__cxa_throw(ptr nonnull %1339, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %.cont unwind label %.loopexit.split-lp.loopexit.split-lp

.cont:                                            ; preds = %.invoke5105
  unreachable

1340:                                             ; preds = %1335
  %1341 = landingpad { ptr, i32 }
          cleanup
  br label %1344

1342:                                             ; preds = %1336
  %1343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %148) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %149) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %147) #10
  br label %1344

1344:                                             ; preds = %1342, %1340
  %.pn987 = phi { ptr, i32 } [ %1343, %1342 ], [ %1341, %1340 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #10
  br label %.loopexit.split-lp1343

1345:                                             ; preds = %1337
  %1346 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1338) #10
  br label %.loopexit.split-lp1343

1347:                                             ; preds = %1332
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %150) #10
  invoke void @_ZN12field_path_tC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %151, ptr noundef nonnull align 8 dereferenceable(24) %369)
          to label %1348 unwind label %1358

1348:                                             ; preds = %1347
  invoke void @_ZN14PatternBindingC2E12field_path_tRKN3HIR14PatternBindingE(ptr noundef nonnull align 8 dereferenceable(48) %150, ptr noundef nonnull %151, ptr noundef nonnull align 8 dereferenceable(24) %1238)
          to label %1349 unwind label %1360

1349:                                             ; preds = %1348
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %151) #10
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %150)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %152) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %153) #10
  %1350 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1236) #10
  store i64 %1350, ptr %153, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %154) #10
  %1351 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1237) #10
  store i64 %1351, ptr %154, align 8, !tbaa !12
  %1352 = invoke { i64, i64 } @_ZSt9make_pairImmESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(8) %154)
          to label %1353 unwind label %1362

1353:                                             ; preds = %1349
  %1354 = extractvalue { i64, i64 } %1352, 0
  store i64 %1354, ptr %152, align 8
  %1355 = extractvalue { i64, i64 } %1352, 1
  store i64 %1355, ptr %381, align 8
  %1356 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt4pairImmEaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %382, ptr noundef nonnull align 8 dereferenceable(16) %152) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %152) #10
  call void @_ZN14PatternBindingC2EOS_(ptr noundef nonnull align 8 dereferenceable(48) %155, ptr noundef nonnull align 8 dereferenceable(48) %150) #10
  invoke void @_ZN21PatternRulesetBuilder12push_bindingE14PatternBinding(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %155)
          to label %1357 unwind label %1364

1357:                                             ; preds = %1353
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %155) #10
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %150) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %150) #10
  br label %.loopexit1305

1358:                                             ; preds = %1347
  %1359 = landingpad { ptr, i32 }
          cleanup
  br label %1367

1360:                                             ; preds = %1348
  %1361 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %151) #10
  br label %1367

1362:                                             ; preds = %1349
  %1363 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %152) #10
  br label %1366

1364:                                             ; preds = %1353
  %1365 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %155) #10
  br label %1366

1366:                                             ; preds = %1364, %1362
  %.pn989 = phi { ptr, i32 } [ %1365, %1364 ], [ %1363, %1362 ]
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %150) #10
  br label %1367

1367:                                             ; preds = %1366, %1360, %1358
  %.pn989.pn = phi { ptr, i32 } [ %.pn989, %1366 ], [ %1361, %1360 ], [ %1359, %1358 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %150) #10
  br label %.loopexit.split-lp1343

.lr.ph2687:                                       ; preds = %.lr.ph4767
  %1368 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %1369 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %1369, label %1374 [
    i32 0, label %1373
    i32 1, label %.preheader1294
    i32 12, label %.lr.ph2672
    i32 13, label %.lr.ph2666
  ]

.preheader1294:                                   ; preds = %.lr.ph2687
  %1370 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %159)
          to label %1387 unwind label %.split2677.split

1371:                                             ; preds = %1378
  %1372 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

1373:                                             ; preds = %.lr.ph2687
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1816, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

1374:                                             ; preds = %.lr.ph2687
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %156) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1375 unwind label %1379

1375:                                             ; preds = %1374
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %158) #10
  store ptr %2, ptr %158, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %157, ptr noundef nonnull align 8 dereferenceable(8) %158) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull %157)
          to label %1376 unwind label %1381

1376:                                             ; preds = %1375
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %156) #10
  %1377 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1377, ptr noundef nonnull @.str.10)
          to label %1378 unwind label %1384

1378:                                             ; preds = %1376
  invoke void @__cxa_throw(ptr nonnull %1377, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1371

1379:                                             ; preds = %1374
  %1380 = landingpad { ptr, i32 }
          cleanup
  br label %1383

1381:                                             ; preds = %1375
  %1382 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %157) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #10
  br label %1383

1383:                                             ; preds = %1381, %1379
  %.pn975 = phi { ptr, i32 } [ %1382, %1381 ], [ %1380, %1379 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %156) #10
  br label %.loopexit.split-lp1343

1384:                                             ; preds = %1376
  %1385 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1377) #10
  br label %.loopexit.split-lp1343

.split2677.split:                                 ; preds = %.preheader1294
  %1386 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

1387:                                             ; preds = %.preheader1294
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %159)
          to label %..loopexit1251_crit_edge unwind label %.split2680.split

..loopexit1251_crit_edge:                         ; preds = %1387
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %159) #10
  br label %.loopexit1397

.split2680.split:                                 ; preds = %1387
  %1388 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %159) #10
  br label %.loopexit.split-lp1343

.lr.ph2672:                                       ; preds = %.lr.ph2687
  %1389 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR7Pattern4Data8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %160) #10
  %1390 = load ptr, ptr %0, align 8, !tbaa !86
  invoke void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80) %160, ptr noundef nonnull align 8 dereferenceable(424) %1390)
          to label %1391 unwind label %1402

1391:                                             ; preds = %.lr.ph2672
  %1392 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12field_path_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %377, ptr noundef nonnull align 8 dereferenceable(24) %369)
          to label %1393 unwind label %.loopexit1253

1393:                                             ; preds = %1391
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %377, i8 noundef zeroext 0)
          to label %1394 unwind label %.loopexit1253

1394:                                             ; preds = %1393
  %1395 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1389) #10
  %1396 = icmp ult i64 %1395, 128
  br i1 %1396, label %1411, label %1397

1397:                                             ; preds = %1394
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %161) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1398 unwind label %1404

1398:                                             ; preds = %1397
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %163) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_34vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef nonnull align 1 dereferenceable(1) %163) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull %162)
          to label %1399 unwind label %1406

1399:                                             ; preds = %1398
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %163) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %161) #10
  %1400 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1400, ptr noundef nonnull @.str.10)
          to label %1401 unwind label %1409

1401:                                             ; preds = %1399
  invoke void @__cxa_throw(ptr nonnull %1400, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %.loopexit.split-lp1254

1402:                                             ; preds = %.lr.ph2672
  %1403 = landingpad { ptr, i32 }
          cleanup
  br label %1432

.loopexit1253:                                    ; preds = %1391, %1393
  %lpad.loopexit1255 = landingpad { ptr, i32 }
          cleanup
  br label %1431

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

1404:                                             ; preds = %1397
  %1405 = landingpad { ptr, i32 }
          cleanup
  br label %1408

1406:                                             ; preds = %1398
  %1407 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %163) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #10
  br label %1408

1408:                                             ; preds = %1406, %1404
  %.pn966 = phi { ptr, i32 } [ %1407, %1406 ], [ %1405, %1404 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %161) #10
  br label %1431

1409:                                             ; preds = %1399
  %1410 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1400) #10
  br label %1431

1411:                                             ; preds = %1394
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %164) #10
  %1412 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1389) #10
  store ptr %1412, ptr %164, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %165) #10
  %1413 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1389) #10
  store ptr %1413, ptr %165, align 8
  %1414 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull align 8 dereferenceable(8) %165) #10
  br i1 %1414, label %.lr.ph2669, label %._crit_edge2670

._crit_edge2670:                                  ; preds = %1417, %1411
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %165) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %164) #10
  %1415 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %378) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %167) #10
  store ptr %160, ptr %167, align 8, !tbaa !6
  store ptr %0, ptr %379, align 8, !tbaa !105
  store ptr %1389, ptr %380, align 8, !tbaa !6
  invoke void @"_ZNSt8functionIFvmEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS7_7TypeRefEE4$_35vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull align 8 dereferenceable(24) %167)
          to label %1425 unwind label %1426

.lr.ph2669:                                       ; preds = %1411, %1417
  %1416 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %164) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %160, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %1416, ptr noundef nonnull align 8 dereferenceable(8) %1368)
          to label %1417 unwind label %1423

1417:                                             ; preds = %.lr.ph2669
  %1418 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %377)
  %1419 = load i8, ptr %1418, align 1, !tbaa !61
  %1420 = add i8 %1419, 1
  store i8 %1420, ptr %1418, align 1, !tbaa !61
  %1421 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %164) #10
  %1422 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull align 8 dereferenceable(8) %165) #10
  br i1 %1422, label %.lr.ph2669, label %._crit_edge2670

1423:                                             ; preds = %.lr.ph2669
  %1424 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %165) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %164) #10
  br label %1431

1425:                                             ; preds = %._crit_edge2670
  invoke void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80) %0, i64 noundef %1415, ptr noundef nonnull %166)
          to label %..loopexit1252_crit_edge unwind label %1428

..loopexit1252_crit_edge:                         ; preds = %1425
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %167) #10
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %160) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %160) #10
  br label %.loopexit1397

1426:                                             ; preds = %._crit_edge2670
  %1427 = landingpad { ptr, i32 }
          cleanup
  br label %1430

1428:                                             ; preds = %1425
  %1429 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #10
  br label %1430

1430:                                             ; preds = %1428, %1426
  %.pn968 = phi { ptr, i32 } [ %1429, %1428 ], [ %1427, %1426 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %167) #10
  br label %1431

1431:                                             ; preds = %.loopexit1253, %.loopexit.split-lp1254, %1430, %1423, %1409, %1408
  %.pn970 = phi { ptr, i32 } [ %1424, %1423 ], [ %.pn968, %1430 ], [ %1410, %1409 ], [ %.pn966, %1408 ], [ %lpad.loopexit1255, %.loopexit1253 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp1254 ]
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %160) #10
  br label %1432

1432:                                             ; preds = %1431, %1402
  %.pn970.pn = phi { ptr, i32 } [ %.pn970, %1431 ], [ %1403, %1402 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %160) #10
  br label %.loopexit.split-lp1343

.lr.ph2666:                                       ; preds = %.lr.ph2687
  %1433 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNK3HIR7Pattern4Data13as_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %1434 = getelementptr inbounds i8, ptr %1433, i64 48
  %1435 = getelementptr inbounds i8, ptr %1433, i64 24
  %1436 = getelementptr inbounds i8, ptr %1433, i64 44
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %168) #10
  %1437 = load ptr, ptr %0, align 8, !tbaa !86
  invoke void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80) %168, ptr noundef nonnull align 8 dereferenceable(424) %1437)
          to label %1438 unwind label %1448

1438:                                             ; preds = %.lr.ph2666
  %1439 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12field_path_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %370, ptr noundef nonnull align 8 dereferenceable(24) %369)
          to label %1440 unwind label %.loopexit1258

1440:                                             ; preds = %1438
  %1441 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1433) #10
  %1442 = icmp ult i64 %1441, 128
  br i1 %1442, label %1457, label %1443

1443:                                             ; preds = %1440
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %169) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1444 unwind label %1450

1444:                                             ; preds = %1443
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %171) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_36vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %170, ptr noundef nonnull align 1 dereferenceable(1) %171) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull %170)
          to label %1445 unwind label %1452

1445:                                             ; preds = %1444
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %171) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %169) #10
  %1446 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1446, ptr noundef nonnull @.str.10)
          to label %1447 unwind label %1455

1447:                                             ; preds = %1445
  invoke void @__cxa_throw(ptr nonnull %1446, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %.loopexit.split-lp1259

1448:                                             ; preds = %.lr.ph2666
  %1449 = landingpad { ptr, i32 }
          cleanup
  br label %1557

.loopexit1258:                                    ; preds = %1438, %1457
  %lpad.loopexit1260 = landingpad { ptr, i32 }
          cleanup
  br label %1556

.loopexit.split-lp1259:                           ; preds = %1447
  %lpad.loopexit.split-lp1261 = landingpad { ptr, i32 }
          cleanup
  br label %1556

1450:                                             ; preds = %1443
  %1451 = landingpad { ptr, i32 }
          cleanup
  br label %1454

1452:                                             ; preds = %1444
  %1453 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %171) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %169) #10
  br label %1454

1454:                                             ; preds = %1452, %1450
  %.pn948 = phi { ptr, i32 } [ %1453, %1452 ], [ %1451, %1450 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %169) #10
  br label %1556

1455:                                             ; preds = %1445
  %1456 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1446) #10
  br label %1556

1457:                                             ; preds = %1440
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %370, i8 noundef zeroext 0)
          to label %1458 unwind label %.loopexit1258

1458:                                             ; preds = %1457
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %172) #10
  %1459 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1433) #10
  store ptr %1459, ptr %172, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %173) #10
  %1460 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1433) #10
  store ptr %1460, ptr %173, align 8
  %1461 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef nonnull align 8 dereferenceable(8) %173) #10
  br i1 %1461, label %.lr.ph2660, label %._crit_edge2661

._crit_edge2661:                                  ; preds = %1463, %1458
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %174) #10
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %174, ptr noundef nonnull align 8 dereferenceable(24) %371) #10
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %371) #10
  invoke void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %371, i64 noundef 1)
          to label %1471 unwind label %.loopexit1263

.lr.ph2660:                                       ; preds = %1458, %1463
  %1462 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %172) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %168, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %1462, ptr noundef nonnull align 8 dereferenceable(8) %1368)
          to label %1463 unwind label %1469

1463:                                             ; preds = %.lr.ph2660
  %1464 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %370)
  %1465 = load i8, ptr %1464, align 1, !tbaa !61
  %1466 = add i8 %1465, 1
  store i8 %1466, ptr %1464, align 1, !tbaa !61
  %1467 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %172) #10
  %1468 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef nonnull align 8 dereferenceable(8) %173) #10
  br i1 %1468, label %.lr.ph2660, label %._crit_edge2661

1469:                                             ; preds = %.lr.ph2660
  %1470 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #10
  br label %1556

1471:                                             ; preds = %._crit_edge2661
  %1472 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1434) #10
  %.not950 = icmp eq i64 %1472, 0
  br i1 %.not950, label %1505, label %1473

1473:                                             ; preds = %1471
  %1474 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1434) #10
  %1475 = icmp ult i64 %1474, 128
  br i1 %1475, label %1488, label %1476

1476:                                             ; preds = %1473
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %175) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %175, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1477 unwind label %1481

1477:                                             ; preds = %1476
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %177) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_37vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %176, ptr noundef nonnull align 1 dereferenceable(1) %177) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %175, ptr noundef nonnull %176)
          to label %1478 unwind label %1483

1478:                                             ; preds = %1477
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %176) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %177) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %175) #10
  %1479 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1479, ptr noundef nonnull @.str.10)
          to label %1480 unwind label %1486

1480:                                             ; preds = %1478
  invoke void @__cxa_throw(ptr nonnull %1479, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %.loopexit.split-lp1264

.loopexit1263:                                    ; preds = %._crit_edge2661
  %lpad.loopexit1265 = landingpad { ptr, i32 }
          cleanup
  br label %1555

.loopexit.split-lp1264:                           ; preds = %1480
  %lpad.loopexit.split-lp1266 = landingpad { ptr, i32 }
          cleanup
  br label %1555

1481:                                             ; preds = %1476
  %1482 = landingpad { ptr, i32 }
          cleanup
  br label %1485

1483:                                             ; preds = %1477
  %1484 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %176) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %177) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %175) #10
  br label %1485

1485:                                             ; preds = %1483, %1481
  %.pn951 = phi { ptr, i32 } [ %1484, %1483 ], [ %1482, %1481 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %175) #10
  br label %1555

1486:                                             ; preds = %1478
  %1487 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1479) #10
  br label %1555

1488:                                             ; preds = %1473
  %1489 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1434) #10
  %1490 = trunc i64 %1489 to i8
  %1491 = sub i8 0, %1490
  %1492 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %370)
  store i8 %1491, ptr %1492, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %178) #10
  %1493 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1434) #10
  store ptr %1493, ptr %178, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %179) #10
  %1494 = call ptr @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1434) #10
  store ptr %1494, ptr %179, align 8
  %1495 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull align 8 dereferenceable(8) %179) #10
  br i1 %1495, label %.lr.ph2663, label %._crit_edge2664

._crit_edge2664:                                  ; preds = %1497, %1488
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %179) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %178) #10
  br label %1505

.lr.ph2663:                                       ; preds = %1488, %1497
  %1496 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %178) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %168, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %1496, ptr noundef nonnull align 8 dereferenceable(8) %1368)
          to label %1497 unwind label %1503

1497:                                             ; preds = %.lr.ph2663
  %1498 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %370)
  %1499 = load i8, ptr %1498, align 1, !tbaa !61
  %1500 = add i8 %1499, 1
  store i8 %1500, ptr %1498, align 1, !tbaa !61
  %1501 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %178) #10
  %1502 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull align 8 dereferenceable(8) %179) #10
  br i1 %1502, label %.lr.ph2663, label %._crit_edge2664

1503:                                             ; preds = %.lr.ph2663
  %1504 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %179) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %178) #10
  br label %1555

1505:                                             ; preds = %._crit_edge2664, %1471
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %180) #10
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %180, ptr noundef nonnull align 8 dereferenceable(24) %371) #10
  %1506 = invoke noundef zeroext i1 @_ZNK3HIR14PatternBinding8is_validEv(ptr noundef nonnull align 8 dereferenceable(24) %1435)
          to label %1507 unwind label %.loopexit1268

1507:                                             ; preds = %1505
  br i1 %1506, label %1508, label %1544

1508:                                             ; preds = %1507
  %1509 = load i32, ptr %1436, align 4, !tbaa !99
  %1510 = icmp eq i32 %1509, 0
  br i1 %1510, label %1523, label %1511

1511:                                             ; preds = %1508
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %181) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1512 unwind label %1516

1512:                                             ; preds = %1511
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %183) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_38vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef nonnull align 1 dereferenceable(1) %183) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull %182)
          to label %1513 unwind label %1518

1513:                                             ; preds = %1512
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %183) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %181) #10
  %1514 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1514, ptr noundef nonnull @.str.10)
          to label %1515 unwind label %1521

1515:                                             ; preds = %1513
  invoke void @__cxa_throw(ptr nonnull %1514, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %.loopexit.split-lp1269

.loopexit1268:                                    ; preds = %1505
  %lpad.loopexit1270 = landingpad { ptr, i32 }
          cleanup
  br label %1554

.loopexit.split-lp1269:                           ; preds = %1515
  %lpad.loopexit.split-lp1271 = landingpad { ptr, i32 }
          cleanup
  br label %1554

1516:                                             ; preds = %1511
  %1517 = landingpad { ptr, i32 }
          cleanup
  br label %1520

1518:                                             ; preds = %1512
  %1519 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %183) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #10
  br label %1520

1520:                                             ; preds = %1518, %1516
  %.pn953 = phi { ptr, i32 } [ %1519, %1518 ], [ %1517, %1516 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %181) #10
  br label %1554

1521:                                             ; preds = %1513
  %1522 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1514) #10
  br label %1554

1523:                                             ; preds = %1508
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %184) #10
  invoke void @_ZN12field_path_tC2ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %185, ptr noundef nonnull align 8 dereferenceable(24) %369)
          to label %1524 unwind label %1534

1524:                                             ; preds = %1523
  invoke void @_ZN14PatternBindingC2E12field_path_tRKN3HIR14PatternBindingE(ptr noundef nonnull align 8 dereferenceable(48) %184, ptr noundef nonnull %185, ptr noundef nonnull align 8 dereferenceable(24) %1435)
          to label %1525 unwind label %1536

1525:                                             ; preds = %1524
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %185) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %186) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %187) #10
  %1526 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1433) #10
  store i64 %1526, ptr %187, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %188) #10
  %1527 = call noundef i64 @_ZNKSt6vectorIN3HIR7PatternESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1434) #10
  store i64 %1527, ptr %188, align 8, !tbaa !12
  %1528 = invoke { i64, i64 } @_ZSt9make_pairImmESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef nonnull align 8 dereferenceable(8) %188)
          to label %1529 unwind label %1538

1529:                                             ; preds = %1525
  %1530 = extractvalue { i64, i64 } %1528, 0
  store i64 %1530, ptr %186, align 8
  %1531 = extractvalue { i64, i64 } %1528, 1
  store i64 %1531, ptr %372, align 8
  %1532 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt4pairImmEaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %373, ptr noundef nonnull align 8 dereferenceable(16) %186) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %188) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %186) #10
  call void @_ZN14PatternBindingC2EOS_(ptr noundef nonnull align 8 dereferenceable(48) %189, ptr noundef nonnull align 8 dereferenceable(48) %184) #10
  invoke void @_ZN21PatternRulesetBuilder12push_bindingE14PatternBinding(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %189)
          to label %1533 unwind label %1540

1533:                                             ; preds = %1529
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %189) #10
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %184) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %184) #10
  br label %1544

1534:                                             ; preds = %1523
  %1535 = landingpad { ptr, i32 }
          cleanup
  br label %1543

1536:                                             ; preds = %1524
  %1537 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN12field_path_tD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %185) #10
  br label %1543

1538:                                             ; preds = %1525
  %1539 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %188) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %186) #10
  br label %1542

1540:                                             ; preds = %1529
  %1541 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %189) #10
  br label %1542

1542:                                             ; preds = %1540, %1538
  %.pn955 = phi { ptr, i32 } [ %1541, %1540 ], [ %1539, %1538 ]
  call void @_ZN14PatternBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %184) #10
  br label %1543

1543:                                             ; preds = %1542, %1536, %1534
  %.pn955.pn = phi { ptr, i32 } [ %.pn955, %1542 ], [ %1537, %1536 ], [ %1535, %1534 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %184) #10
  br label %1554

1544:                                             ; preds = %1533, %1507
  %1545 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %174) #10
  %1546 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %180) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %191) #10
  store ptr %174, ptr %191, align 8, !tbaa !6
  store ptr %180, ptr %374, align 8, !tbaa !6
  store ptr %0, ptr %375, align 8, !tbaa !107
  store ptr %1433, ptr %376, align 8, !tbaa !6
  invoke void @"_ZNSt8functionIFvmEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS7_7TypeRefEE4$_39vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %190, ptr noundef nonnull align 8 dereferenceable(32) %191)
          to label %1547 unwind label %1549

1547:                                             ; preds = %1544
  %1548 = mul i64 %1546, %1545
  invoke void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80) %0, i64 noundef %1548, ptr noundef nonnull %190)
          to label %..loopexit1257_crit_edge unwind label %1551

..loopexit1257_crit_edge:                         ; preds = %1547
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %191) #10
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %180) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %180) #10
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %174) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %174) #10
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %168) #10
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %168) #10
  br label %.loopexit1397

1549:                                             ; preds = %1544
  %1550 = landingpad { ptr, i32 }
          cleanup
  br label %1553

1551:                                             ; preds = %1547
  %1552 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #10
  br label %1553

1553:                                             ; preds = %1551, %1549
  %.pn958 = phi { ptr, i32 } [ %1552, %1551 ], [ %1550, %1549 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %191) #10
  br label %1554

1554:                                             ; preds = %.loopexit1268, %.loopexit.split-lp1269, %1553, %1543, %1521, %1520
  %.pn958.pn = phi { ptr, i32 } [ %.pn958, %1553 ], [ %.pn955.pn, %1543 ], [ %1522, %1521 ], [ %.pn953, %1520 ], [ %lpad.loopexit1270, %.loopexit1268 ], [ %lpad.loopexit.split-lp1271, %.loopexit.split-lp1269 ]
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %180) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %180) #10
  br label %1555

1555:                                             ; preds = %.loopexit1263, %.loopexit.split-lp1264, %1554, %1503, %1486, %1485
  %.pn961 = phi { ptr, i32 } [ %1504, %1503 ], [ %.pn958.pn, %1554 ], [ %1487, %1486 ], [ %.pn951, %1485 ], [ %lpad.loopexit1265, %.loopexit1263 ], [ %lpad.loopexit.split-lp1266, %.loopexit.split-lp1264 ]
  call void @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %174) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %174) #10
  br label %1556

1556:                                             ; preds = %.loopexit1258, %.loopexit.split-lp1259, %1555, %1469, %1455, %1454
  %.pn963 = phi { ptr, i32 } [ %1470, %1469 ], [ %.pn961, %1555 ], [ %1456, %1455 ], [ %.pn948, %1454 ], [ %lpad.loopexit1260, %.loopexit1258 ], [ %lpad.loopexit.split-lp1261, %.loopexit.split-lp1259 ]
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %168) #10
  br label %1557

1557:                                             ; preds = %1556, %1448
  %.pn963.pn = phi { ptr, i32 } [ %.pn963, %1556 ], [ %1449, %1448 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %168) #10
  br label %.loopexit.split-lp1343

.lr.ph2657:                                       ; preds = %.lr.ph4767
  %1558 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %402)
  %1559 = getelementptr inbounds i8, ptr %1558, i64 8
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %369, i8 noundef zeroext -1)
          to label %1560 unwind label %.loopexit1349

.loopexit1349:                                    ; preds = %.lr.ph2657
  %lpad.loopexit1351 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.loopexit.split-lp1350:                           ; preds = %1572
  %lpad.loopexit.split-lp1352 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

1560:                                             ; preds = %.lr.ph2657
  %1561 = call noundef i32 @_ZNK3HIR7Pattern4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  switch i32 %1561, label %1567 [
    i32 0, label %1566
    i32 1, label %.preheader1323.split
    i32 3, label %.preheader1325.split
    i32 10, label %.lr.ph2640
  ]

.preheader1325.split:                             ; preds = %1560
  %1562 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR7Pattern4Data6as_RefEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %1563 = getelementptr inbounds i8, ptr %1562, i64 8
  %1564 = call noundef nonnull align 8 dereferenceable(212) ptr @_ZNKSt10unique_ptrIN3HIR7PatternESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1563) #10
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) %1564, ptr noundef nonnull align 8 dereferenceable(8) %1559)
          to label %..loopexit1348_crit_edge unwind label %.split2644, !llvm.loop !109

.preheader1323.split:                             ; preds = %1560
  %1565 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR7Pattern4Data6as_AnyEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  invoke void @_ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(212) @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE13empty_pattern, ptr noundef nonnull align 8 dereferenceable(8) %1559)
          to label %..loopexit1348_crit_edge unwind label %.split2651, !llvm.loop !110

1566:                                             ; preds = %1560
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 1900, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefE) #12
  unreachable

1567:                                             ; preds = %1560
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %192) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1568 unwind label %1573

1568:                                             ; preds = %1567
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %194) #10
  store ptr %275, ptr %194, align 8, !tbaa !6
  %1569 = getelementptr inbounds i8, ptr %194, i64 8
  store ptr %2, ptr %1569, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_40vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %193, ptr noundef nonnull align 8 dereferenceable(16) %194) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull %193)
          to label %1570 unwind label %1575

1570:                                             ; preds = %1568
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %194) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %192) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %192) #10
  %1571 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1571, ptr noundef nonnull @.str.10)
          to label %1572 unwind label %1578

1572:                                             ; preds = %1570
  invoke void @__cxa_throw(ptr nonnull %1571, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %.loopexit.split-lp1350

1573:                                             ; preds = %1567
  %1574 = landingpad { ptr, i32 }
          cleanup
  br label %1577

1575:                                             ; preds = %1568
  %1576 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %194) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %192) #10
  br label %1577

1577:                                             ; preds = %1575, %1573
  %.pn944 = phi { ptr, i32 } [ %1576, %1575 ], [ %1574, %1573 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %192) #10
  br label %.loopexit.split-lp1343

1578:                                             ; preds = %1570
  %1579 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1571) #10
  br label %.loopexit.split-lp1343

.split2651:                                       ; preds = %.preheader1323.split
  %1580 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.split2644:                                       ; preds = %.preheader1325.split
  %1581 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

1582:                                             ; preds = %1636
  %1583 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.lr.ph2640:                                       ; preds = %1560
  %1584 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK3HIR7Pattern4Data8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  %1585 = call noundef zeroext i1 @_ZNK3HIR7Pattern5Value9is_StringEv(ptr noundef nonnull align 8 dereferenceable(104) %1584)
  br i1 %1585, label %1586, label %1602

1586:                                             ; preds = %.lr.ph2640
  %1587 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR7Pattern5Value9as_StringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(104) %1584)
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %197, ptr noundef nonnull align 8 dereferenceable(32) %1587)
          to label %1588 unwind label %1592

1588:                                             ; preds = %1586
  invoke void @_ZN3MIR8ConstantC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %196, ptr noundef nonnull %197)
          to label %1589 unwind label %1594

1589:                                             ; preds = %1588
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %195, ptr noundef nonnull %196)
          to label %1590 unwind label %1596

1590:                                             ; preds = %1589
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %195)
          to label %1591 unwind label %1598

1591:                                             ; preds = %1590
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %195) #10
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %196) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #10
  br label %..loopexit1348_crit_edge

1592:                                             ; preds = %1586
  %1593 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

1594:                                             ; preds = %1588
  %1595 = landingpad { ptr, i32 }
          cleanup
  br label %1601

1596:                                             ; preds = %1589
  %1597 = landingpad { ptr, i32 }
          cleanup
  br label %1600

1598:                                             ; preds = %1590
  %1599 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %195) #10
  br label %1600

1600:                                             ; preds = %1598, %1596
  %.pn939 = phi { ptr, i32 } [ %1599, %1598 ], [ %1597, %1596 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %196) #10
  br label %1601

1601:                                             ; preds = %1600, %1594
  %.pn939.pn = phi { ptr, i32 } [ %.pn939, %1600 ], [ %1595, %1594 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #10
  br label %.loopexit.split-lp1343

1602:                                             ; preds = %.lr.ph2640
  %1603 = call noundef zeroext i1 @_ZNK3HIR7Pattern5Value13is_ByteStringEv(ptr noundef nonnull align 8 dereferenceable(104) %1584)
  br i1 %1603, label %1604, label %1632

1604:                                             ; preds = %1602
  %1605 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR7Pattern5Value13as_ByteStringEv(ptr noundef nonnull align 8 dereferenceable(104) %1584)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %198) #10
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %198) #10
  %1606 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1605) #10
  invoke void @_ZNSt6vectorIhSaIhEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %198, i64 noundef %1606)
          to label %1607 unwind label %1611

1607:                                             ; preds = %1604
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %199) #10
  %1608 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %1605) #10
  store ptr %1608, ptr %199, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %200) #10
  %1609 = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %1605) #10
  store ptr %1609, ptr %200, align 8
  %1610 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef nonnull align 8 dereferenceable(8) %200) #10
  br i1 %1610, label %.lr.ph2637, label %._crit_edge2638

._crit_edge2638:                                  ; preds = %1615, %1607
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %200) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %199) #10
  call void @_ZNSt6vectorIhSaIhEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %204, ptr noundef nonnull align 8 dereferenceable(24) %198) #10
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %203, ptr noundef nonnull %204)
          to label %1620 unwind label %1623

1611:                                             ; preds = %1604
  %1612 = landingpad { ptr, i32 }
          cleanup
  br label %1631

.lr.ph2637:                                       ; preds = %1607, %1615
  %1613 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %199) #10
  %1614 = load i8, ptr %1613, align 1, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %201) #10
  store i8 %1614, ptr %201, align 1, !tbaa !61
  invoke void @_ZNSt6vectorIhSaIhEE9push_backEOh(ptr noundef nonnull align 8 dereferenceable(24) %198, ptr noundef nonnull align 1 dereferenceable(1) %201)
          to label %1615 unwind label %1618

1615:                                             ; preds = %.lr.ph2637
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %201) #10
  %1616 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %199) #10
  %1617 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef nonnull align 8 dereferenceable(8) %200) #10
  br i1 %1617, label %.lr.ph2637, label %._crit_edge2638

1618:                                             ; preds = %.lr.ph2637
  %1619 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %201) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %200) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %199) #10
  br label %1631

1620:                                             ; preds = %._crit_edge2638
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %202, ptr noundef nonnull %203)
          to label %1621 unwind label %1625

1621:                                             ; preds = %1620
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %202)
          to label %1622 unwind label %1627

1622:                                             ; preds = %1621
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %202) #10
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %203) #10
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %204) #10
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %198) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %198) #10
  br label %..loopexit1348_crit_edge

1623:                                             ; preds = %._crit_edge2638
  %1624 = landingpad { ptr, i32 }
          cleanup
  br label %1630

1625:                                             ; preds = %1620
  %1626 = landingpad { ptr, i32 }
          cleanup
  br label %1629

1627:                                             ; preds = %1621
  %1628 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %202) #10
  br label %1629

1629:                                             ; preds = %1627, %1625
  %.pn934 = phi { ptr, i32 } [ %1628, %1627 ], [ %1626, %1625 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %203) #10
  br label %1630

1630:                                             ; preds = %1629, %1623
  %.pn934.pn = phi { ptr, i32 } [ %.pn934, %1629 ], [ %1624, %1623 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %204) #10
  br label %1631

1631:                                             ; preds = %1630, %1618, %1611
  %.pn937 = phi { ptr, i32 } [ %1619, %1618 ], [ %.pn934.pn, %1630 ], [ %1612, %1611 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %198) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %198) #10
  br label %.loopexit.split-lp1343

1632:                                             ; preds = %1602
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %205) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1633 unwind label %1637

1633:                                             ; preds = %1632
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %207) #10
  store ptr %2, ptr %207, align 8, !tbaa !6
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_41vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %206, ptr noundef nonnull align 8 dereferenceable(8) %207) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef nonnull %206)
          to label %1634 unwind label %1639

1634:                                             ; preds = %1633
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %207) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %205) #10
  %1635 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1635, ptr noundef nonnull @.str.10)
          to label %1636 unwind label %1642

1636:                                             ; preds = %1634
  invoke void @__cxa_throw(ptr nonnull %1635, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1582

1637:                                             ; preds = %1632
  %1638 = landingpad { ptr, i32 }
          cleanup
  br label %1641

1639:                                             ; preds = %1633
  %1640 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %207) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %205) #10
  br label %1641

1641:                                             ; preds = %1639, %1637
  %.pn932 = phi { ptr, i32 } [ %1640, %1639 ], [ %1638, %1637 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %205) #10
  br label %.loopexit.split-lp1343

1642:                                             ; preds = %1634
  %1643 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1635) #10
  br label %.loopexit.split-lp1343

..loopexit1348_crit_edge:                         ; preds = %.preheader1325.split, %.preheader1323.split, %1591, %1622
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  br label %.loopexit1397

.loopexit1355.split.split:                        ; preds = %1644
  %lpad.loopexit1357 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.loopexit.split-lp1356:                           ; preds = %1650
  %lpad.loopexit.split-lp1358 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

1644:                                             ; preds = %.preheader1387.split.split
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %208)
          to label %1645 unwind label %.loopexit1355.split.split

1645:                                             ; preds = %1644
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %208)
          to label %..loopexit1354_crit_edge unwind label %.split2451.split

..loopexit1354_crit_edge:                         ; preds = %1645
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %208) #10
  br label %.loopexit1397

.split2451.split:                                 ; preds = %1645
  %1646 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %208) #10
  br label %.loopexit.split-lp1343

.split2449:                                       ; preds = %.preheader1387.split.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %209) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1647 unwind label %1651

1647:                                             ; preds = %.split2449
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %211) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_42vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %210, ptr noundef nonnull align 1 dereferenceable(1) %211) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %209, i32 noundef 0, ptr noundef nonnull %210)
          to label %1648 unwind label %1653

1648:                                             ; preds = %1647
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %211) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %209) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %209) #10
  %1649 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1649, ptr noundef nonnull @.str.59)
          to label %1650 unwind label %1656

1650:                                             ; preds = %1648
  invoke void @__cxa_throw(ptr nonnull %1649, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %.loopexit.split-lp1356

1651:                                             ; preds = %.split2449
  %1652 = landingpad { ptr, i32 }
          cleanup
  br label %1655

1653:                                             ; preds = %1647
  %1654 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %210) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %211) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %209) #10
  br label %1655

1655:                                             ; preds = %1653, %1651
  %.pn928 = phi { ptr, i32 } [ %1654, %1653 ], [ %1652, %1651 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %209) #10
  br label %.loopexit.split-lp1343

1656:                                             ; preds = %1648
  %1657 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1649) #10
  br label %.loopexit.split-lp1343

1658:                                             ; preds = %1663
  %1659 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.split2269:                                       ; preds = %.preheader1389.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %212) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1660 unwind label %1664

1660:                                             ; preds = %.split2269
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %214) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_43vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %213, ptr noundef nonnull align 1 dereferenceable(1) %214) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %212, i32 noundef 0, ptr noundef nonnull %213)
          to label %1661 unwind label %1666

1661:                                             ; preds = %1660
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %213) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %214) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %212) #10
  %1662 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1662, ptr noundef nonnull @.str.59)
          to label %1663 unwind label %1669

1663:                                             ; preds = %1661
  invoke void @__cxa_throw(ptr nonnull %1662, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1658

1664:                                             ; preds = %.split2269
  %1665 = landingpad { ptr, i32 }
          cleanup
  br label %1668

1666:                                             ; preds = %1660
  %1667 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %213) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %214) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #10
  br label %1668

1668:                                             ; preds = %1666, %1664
  %.pn924 = phi { ptr, i32 } [ %1667, %1666 ], [ %1665, %1664 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %212) #10
  br label %.loopexit.split-lp1343

1669:                                             ; preds = %1661
  %1670 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1662) #10
  br label %.loopexit.split-lp1343

1671:                                             ; preds = %1676
  %1672 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.split2091:                                       ; preds = %.preheader1391.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %215) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1673 unwind label %1677

1673:                                             ; preds = %.split2091
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %217) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_44vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %216, ptr noundef nonnull align 1 dereferenceable(1) %217) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %215, i32 noundef 0, ptr noundef nonnull %216)
          to label %1674 unwind label %1679

1674:                                             ; preds = %1673
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %217) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %215) #10
  %1675 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1675, ptr noundef nonnull @.str.59)
          to label %1676 unwind label %1682

1676:                                             ; preds = %1674
  invoke void @__cxa_throw(ptr nonnull %1675, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1671

1677:                                             ; preds = %.split2091
  %1678 = landingpad { ptr, i32 }
          cleanup
  br label %1681

1679:                                             ; preds = %1673
  %1680 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %217) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #10
  br label %1681

1681:                                             ; preds = %1679, %1677
  %.pn920 = phi { ptr, i32 } [ %1680, %1679 ], [ %1678, %1677 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %215) #10
  br label %.loopexit.split-lp1343

1682:                                             ; preds = %1674
  %1683 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1675) #10
  br label %.loopexit.split-lp1343

1684:                                             ; preds = %1689
  %1685 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.split1914:                                       ; preds = %.preheader1393.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %218) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1686 unwind label %1690

1686:                                             ; preds = %.split1914
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %220) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_45vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %219, ptr noundef nonnull align 1 dereferenceable(1) %220) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %218, i32 noundef 0, ptr noundef nonnull %219)
          to label %1687 unwind label %1692

1687:                                             ; preds = %1686
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %220) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #10
  %1688 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1688, ptr noundef nonnull @.str.59)
          to label %1689 unwind label %1695

1689:                                             ; preds = %1687
  invoke void @__cxa_throw(ptr nonnull %1688, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1684

1690:                                             ; preds = %.split1914
  %1691 = landingpad { ptr, i32 }
          cleanup
  br label %1694

1692:                                             ; preds = %1686
  %1693 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %220) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #10
  br label %1694

1694:                                             ; preds = %1692, %1690
  %.pn916 = phi { ptr, i32 } [ %1693, %1692 ], [ %1691, %1690 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #10
  br label %.loopexit.split-lp1343

1695:                                             ; preds = %1687
  %1696 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1688) #10
  br label %.loopexit.split-lp1343

1697:                                             ; preds = %1702
  %1698 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp1343

.split:                                           ; preds = %.preheader1395.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %221) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1699 unwind label %1703

1699:                                             ; preds = %.split
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %223) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS8_7TypeRefEE4$_46vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %222, ptr noundef nonnull align 1 dereferenceable(1) %223) #10
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %221, i32 noundef 0, ptr noundef nonnull %222)
          to label %1700 unwind label %1705

1700:                                             ; preds = %1699
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %223) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #10
  %1701 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1701, ptr noundef nonnull @.str.59)
          to label %1702 unwind label %1708

1702:                                             ; preds = %1700
  invoke void @__cxa_throw(ptr nonnull %1701, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1717 unwind label %1697

1703:                                             ; preds = %.split
  %1704 = landingpad { ptr, i32 }
          cleanup
  br label %1707

1705:                                             ; preds = %1699
  %1706 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %223) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #10
  br label %1707

1707:                                             ; preds = %1705, %1703
  %.pn912 = phi { ptr, i32 } [ %1706, %1705 ], [ %1704, %1703 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %221) #10
  br label %.loopexit.split-lp1343

1708:                                             ; preds = %1700
  %1709 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1701) #10
  br label %.loopexit.split-lp1343

.lr.ph4770:                                       ; preds = %.loopexit1397, %.lr.ph4770
  %.04769 = phi i64 [ %1710, %.lr.ph4770 ], [ 0, %.loopexit1397 ]
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %369)
  %1710 = add nuw nsw i64 %.04769, 1
  %1711 = load i32, ptr %241, align 8, !tbaa !14
  %1712 = zext i32 %1711 to i64
  %1713 = icmp ult i64 %1710, %1712
  br i1 %1713, label %.lr.ph4770, label %.loopexit, !llvm.loop !111

.loopexit:                                        ; preds = %.lr.ph4770, %326, %.loopexit1397, %.preheader, %362
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #10
  ret void

.loopexit.split-lp1343:                           ; preds = %.loopexit1355.split.split, %.loopexit.split-lp1356, %.loopexit1349, %.loopexit.split-lp1350, %.loopexit1240, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %.loopexit1342, %.loopexit.split-lp1343.loopexit.split-lp, %.loopexit.split-lp1343.loopexit, %.loopexit1332, %.loopexit.split-lp1333, %367, %346, %324, %1697, %1707, %1708, %1684, %1694, %1695, %1671, %1681, %1682, %1658, %1668, %1669, %.split2451.split, %1655, %1656, %1577, %1578, %.split2651, %.split2644, %1592, %1601, %1642, %1641, %1631, %1582, %1371, %1383, %1384, %1432, %1557, %.split2680.split, %.split2677.split, %1168, %1169, %1174, %1250, %1251, %1266, %1267, %1282, %1283, %1304, %1329, %1344, %1345, %1367, %1211, %1221, %1222, %.split2711.split, %.split2850.split, %1199, %1198, %1186, %1127, %1137, %1138, %1114, %1124, %1125, %1095, %1111, %1112, %.split3391.split, %.split3388.split, %548, %568, %589, %616, %617, %437, %454, %455, %.split4524.split, %.split4521.split, %515, %509, %500, %494, %486, %480, %464, %531, %.split4462.split, %.split4453.split, %424, %434, %435, %1094, %312
  %.pn1139.pn = phi { ptr, i32 } [ %.pn1139, %312 ], [ %.pn1133, %367 ], [ %325, %324 ], [ %.pn907, %346 ], [ %.pn1042.pn.pn, %1094 ], [ %425, %424 ], [ %436, %435 ], [ %.pn1127, %434 ], [ %438, %437 ], [ %456, %455 ], [ %.pn1123, %454 ], [ %459, %.split4524.split ], [ %457, %.split4521.split ], [ %.pn1118, %515 ], [ %510, %509 ], [ %465, %464 ], [ %.pn1116, %486 ], [ %481, %480 ], [ %.pn1114, %500 ], [ %495, %494 ], [ %524, %.split4462.split ], [ %516, %.split4453.split ], [ %.pn1110, %531 ], [ %618, %617 ], [ %.pn1106, %616 ], [ %590, %589 ], [ %569, %568 ], [ %549, %548 ], [ %1096, %1095 ], [ %1113, %1112 ], [ %.pn1013, %1111 ], [ %1101, %.split3391.split ], [ %1100, %.split3388.split ], [ %1115, %1114 ], [ %1126, %1125 ], [ %.pn1007, %1124 ], [ %1128, %1127 ], [ %1139, %1138 ], [ %.pn1003, %1137 ], [ %1175, %1174 ], [ %1170, %1169 ], [ %.pn979, %1168 ], [ %1187, %1186 ], [ %1200, %1199 ], [ %.pn998, %1198 ], [ %1201, %.split2850.split ], [ %1235, %.split2711.split ], [ %1212, %1211 ], [ %1223, %1222 ], [ %.pn994, %1221 ], [ %1305, %1304 ], [ %1330, %1329 ], [ %.pn989.pn, %1367 ], [ %1346, %1345 ], [ %.pn987, %1344 ], [ %1284, %1283 ], [ %.pn985, %1282 ], [ %1268, %1267 ], [ %.pn983, %1266 ], [ %1252, %1251 ], [ %.pn981, %1250 ], [ %1372, %1371 ], [ %1385, %1384 ], [ %.pn975, %1383 ], [ %.pn963.pn, %1557 ], [ %.pn970.pn, %1432 ], [ %1388, %.split2680.split ], [ %1386, %.split2677.split ], [ %1579, %1578 ], [ %.pn944, %1577 ], [ %1581, %.split2644 ], [ %1580, %.split2651 ], [ %.pn937, %1631 ], [ %1583, %1582 ], [ %1643, %1642 ], [ %.pn932, %1641 ], [ %.pn939.pn, %1601 ], [ %1593, %1592 ], [ %1646, %.split2451.split ], [ %1657, %1656 ], [ %.pn928, %1655 ], [ %1659, %1658 ], [ %1670, %1669 ], [ %.pn924, %1668 ], [ %1672, %1671 ], [ %1683, %1682 ], [ %.pn920, %1681 ], [ %1685, %1684 ], [ %1696, %1695 ], [ %.pn916, %1694 ], [ %1698, %1697 ], [ %1709, %1708 ], [ %.pn912, %1707 ], [ %lpad.loopexit1334, %.loopexit1332 ], [ %lpad.loopexit.split-lp1335, %.loopexit.split-lp1333 ], [ %lpad.loopexit1344, %.loopexit1342 ], [ %lpad.loopexit1380, %.loopexit.split-lp1343.loopexit ], [ %lpad.loopexit.split-lp1381, %.loopexit.split-lp1343.loopexit.split-lp ], [ %lpad.loopexit, %.loopexit1240 ], [ %lpad.loopexit1248, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp1249, %.loopexit.split-lp.loopexit.split-lp ], [ %lpad.loopexit1351, %.loopexit1349 ], [ %lpad.loopexit.split-lp1352, %.loopexit.split-lp1350 ], [ %lpad.loopexit1357, %.loopexit1355.split.split ], [ %lpad.loopexit.split-lp1358, %.loopexit.split-lp1356 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  br label %1714

1714:                                             ; preds = %.loopexit.split-lp1343, %274
  %.pn1144.pn.pn = phi { ptr, i32 } [ %.pn1144.pn, %274 ], [ %.pn1139.pn, %.loopexit.split-lp1343 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #10
  br label %1715

1715:                                             ; preds = %1714, %246
  %.pn1144.pn.pn.pn = phi { ptr, i32 } [ %.pn1144.pn.pn, %1714 ], [ %247, %246 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #10
  br label %1716

1716:                                             ; preds = %1715, %244
  %.pn1144.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn1144.pn.pn.pn, %1715 ], [ %245, %244 ]
  resume { ptr, i32 } %.pn1144.pn.pn.pn.pn

1717:                                             ; preds = %1702, %1689, %1676, %1663, %1650, %1636, %1572, %1515, %1480, %1447, %1401, %1378, %1216, %1193, %1163, %1132, %1119, %1106, %954, %941, %920, %895, %871, %835, %794, %767, %738, %725, %700, %656, %638, %611, %449, %429, %336, %292
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN21PatternRulesetBuilder12push_bindingE14PatternBinding(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN21PatternRulesetBuilder17multiply_rulesetsEmSt8functionIFvmEE(ptr noundef nonnull align 8 dereferenceable(80), i64 noundef, ptr noundef) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef byval(%struct.EncodedLiteralSlice) align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8, ptr noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule9make_BoolEb(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8, i1 noundef zeroext) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24), i8 noundef zeroext) local_unnamed_addr #4 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8) local_unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule12make_VariantENS_12Data_VariantE(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8, ptr noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule15make_ValueRangeENS_15Data_ValueRangeE(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8, ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H17get_pattern_valueES2_S6_RKNS4_5ValueERKNS3_8CoreTypeE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H21get_pattern_value_maxES2_S6_RKNS3_8CoreTypeE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN1H21get_pattern_value_minES2_S6_RKNS3_8CoreTypeE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(212), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEENK4$_13clIS7_EES9_RKT_"(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 noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7 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 #7 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH18push_pattern_tupleERS_S2_RKNS4_4Data14Data_PathTupleESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(172), ptr noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEEN2PH19push_pattern_structERS_S2_RKNS4_4Data14Data_PathNamedESt8functionIFS9_S9_EE(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(137), ptr noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9

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

declare noundef zeroext i1 @_ZNK3HIR4Enum8is_valueEv(ptr noundef nonnull align 8 dereferenceable(200)) local_unnamed_addr #2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR17pattern_get_tupleERK4SpanRKNS_4PathERKNS_7Pattern11PathBindingE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #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 #7 align 2

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(212) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEdeEv(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(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7PatternESt6vectorIS2_SaIS2_EEEppEv(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(72) ptr @_ZNK3HIR7Pattern4Data13as_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #7 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR14PatternBinding8is_validEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZSt9make_pairImmESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!"branch_weights", i32 1, i32 1048575}
!6 = !{!7, !7, i64 0}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !7, i64 16}
!11 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE3$_0", !7, i64 0, !7, i64 8, !7, i64 16}
!12 = !{!13, !13, i64 0}
!13 = !{!"long", !8, i64 0}
!14 = !{!15, !22, i64 208}
!15 = !{!"_ZTSN3HIR7PatternE", !16, i64 0, !20, i64 24, !22, i64 208}
!16 = !{!"_ZTSSt6vectorIN3HIR14PatternBindingESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIN3HIR14PatternBindingESaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN3HIR14PatternBindingESaIS1_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN3HIR14PatternBindingESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!20 = !{!"_ZTSN3HIR7Pattern4DataE", !21, i64 0, !8, i64 8}
!21 = !{!"_ZTSN3HIR7Pattern4Data3TagE", !8, i64 0}
!22 = !{!"int", !8, i64 0}
!23 = !{!24, !22, i64 20}
!24 = !{!"_ZTSN3HIR14PatternBindingE", !25, i64 0, !26, i64 4, !27, i64 8, !22, i64 16, !22, i64 20}
!25 = !{!"bool", !8, i64 0}
!26 = !{!"_ZTSN3HIR14PatternBinding4TypeE", !8, i64 0}
!27 = !{!"_ZTS8RcString", !7, i64 0}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = !{!32, !7, i64 88}
!32 = !{!"_ZTSN3HIR7Pattern5Value10Data_NamedE", !33, i64 0, !7, i64 88}
!33 = !{!"_ZTSN3HIR4PathE", !34, i64 0}
!34 = !{!"_ZTSN3HIR4Path4DataE", !35, i64 0, !8, i64 8}
!35 = !{!"_ZTSN3HIR4Path4Data3TagE", !8, i64 0}
!36 = distinct !{!36, !29}
!37 = !{!38, !7, i64 0}
!38 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE3$_3", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!39 = distinct !{!39, !29}
!40 = distinct !{!40, !29}
!41 = distinct !{!41, !29}
!42 = distinct !{!42, !29}
!43 = distinct !{!43, !29}
!44 = distinct !{!44, !29}
!45 = !{!46, !46, i64 0}
!46 = !{!"_ZTSN3HIR8CoreTypeE", !8, i64 0}
!47 = !{!48, !25, i64 80}
!48 = !{!"_ZTSN11PatternRule15Data_ValueRangeE", !49, i64 0, !49, i64 40, !25, i64 80}
!49 = !{!"_ZTSN3MIR8ConstantE", !50, i64 0, !8, i64 8}
!50 = !{!"_ZTSN3MIR8Constant3TagE", !8, i64 0}
!51 = !{!52, !25, i64 16}
!52 = !{!"_ZTSN3HIR7Pattern4Data10Data_RangeE", !53, i64 0, !53, i64 8, !25, i64 16}
!53 = !{!"_ZTSSt10unique_ptrIN3HIR7Pattern5ValueESt14default_deleteIS2_EE", !54, i64 0}
!54 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR7Pattern5ValueESt14default_deleteIS2_ELb1ELb1EE", !55, i64 0}
!55 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR7Pattern5ValueESt14default_deleteIS2_EE", !56, i64 0}
!56 = !{!"_ZTSSt5tupleIJPN3HIR7Pattern5ValueESt14default_deleteIS2_EEE", !57, i64 0}
!57 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR7Pattern5ValueESt14default_deleteIS2_EEE", !58, i64 0}
!58 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR7Pattern5ValueELb0EE", !7, i64 0}
!59 = !{i8 0, i8 2}
!60 = !{}
!61 = !{!8, !8, i64 0}
!62 = distinct !{!62, !29}
!63 = distinct !{!63, !29}
!64 = !{!65, !7, i64 24}
!65 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE4$_13", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!66 = !{!67, !7, i64 8}
!67 = !{!"_ZTS21PatternRulesetBuilder", !7, i64 0, !7, i64 8, !68, i64 16, !13, i64 40, !13, i64 48, !72, i64 56}
!68 = !{!"_ZTSSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!72 = !{!"_ZTS12field_path_t", !73, i64 0}
!73 = !{!"_ZTSSt6vectorIhSaIhEE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!77 = distinct !{!77, !29}
!78 = !{!79, !22, i64 8}
!79 = !{!"_ZTSN3HIR7Pattern11PathBinding9Data_EnumE", !7, i64 0, !22, i64 8}
!80 = !{!81, !22, i64 0}
!81 = !{!"_ZTSN11PatternRule12Data_VariantE", !22, i64 0, !82, i64 8}
!82 = !{!"_ZTSSt6vectorI11PatternRuleSaIS0_EE", !83, i64 0}
!83 = !{!"_ZTSSt12_Vector_baseI11PatternRuleSaIS0_EE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE12_Vector_implE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!86 = !{!67, !7, i64 0}
!87 = !{!88, !7, i64 8}
!88 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE4$_21", !7, i64 0, !7, i64 8, !7, i64 16}
!89 = !{!79, !7, i64 0}
!90 = !{!91, !25, i64 8}
!91 = !{!"_ZTSN3HIR4Enum11DataVariantE", !27, i64 0, !25, i64 8, !92, i64 16}
!92 = !{!"_ZTSN3HIR7TypeRefE", !7, i64 0}
!93 = distinct !{!93, !29}
!94 = !{!95, !7, i64 8}
!95 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE4$_22", !7, i64 0, !7, i64 8, !7, i64 16}
!96 = !{!22, !22, i64 0}
!97 = distinct !{!97, !29}
!98 = distinct !{!98, !29}
!99 = !{!100, !22, i64 44}
!100 = !{!"_ZTSN3HIR7Pattern4Data15Data_SplitSliceE", !101, i64 0, !24, i64 24, !101, i64 48}
!101 = !{!"_ZTSSt6vectorIN3HIR7PatternESaIS1_EE", !102, i64 0}
!102 = !{!"_ZTSSt12_Vector_baseIN3HIR7PatternESaIS1_EE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseIN3HIR7PatternESaIS1_EE12_Vector_implE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseIN3HIR7PatternESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!105 = !{!106, !7, i64 8}
!106 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE4$_35", !7, i64 0, !7, i64 8, !7, i64 16}
!107 = !{!108, !7, i64 16}
!108 = !{!"_ZTSZN21PatternRulesetBuilder11append_fromERK4SpanRKN3HIR7PatternERKNS3_7TypeRefEE4$_39", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!109 = distinct !{!109, !29}
!110 = distinct !{!110, !29}
!111 = distinct !{!111, !29}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass