; 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.EncodedLiteralSlice = type { ptr, i64, i64 }
%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.222 = type { ptr, ptr, ptr }
%struct.Span = type { ptr }
%class.anon.274 = type { i8 }
%class.anon.276 = type { i8 }
%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.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 }
%"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] }
%"struct.MIR::Constant::Data_Float" = type { double, i32 }
%"struct.MIR::Constant::Data_Uint" = type <{ %class.U128, i32, [4 x i8] }>
%class.U128 = type { i64, i64 }
%"struct.MIR::Constant::Data_Int" = type <{ %class.S128, i32, [4 x i8] }>
%class.S128 = type { %class.U128 }
%class.anon.278 = type { i8 }
%class.anon.280 = type { ptr }
%class.anon.286 = type { ptr, ptr }
%class.anon.287 = type { ptr }
%class.anon.288 = type { ptr }
%"struct.PatternRule::Data_Any" = type { i8 }
%class.anon.289 = type { ptr }
%class.anon.290 = type { ptr }
%class.anon.291 = type { ptr }
%class.anon.292 = type { ptr }
%"struct.std::pair.293" = type <{ i32, i8, [3 x i8] }>
%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.HIR::TypeRef" = type { ptr }
%class.anon.295 = type { i8 }
%"struct.PatternRule::Data_Variant" = type { i32, %"class.std::vector.136" }
%class.anon.297 = type { ptr }
%class.anon.298 = type { ptr }
%class.anon.299 = type { ptr }
%class.anon.300 = type { ptr }
%class.anon.301 = type { ptr }
%class.anon.302 = type { i8 }
%class.anon.304 = type { i8 }
%class.anon.306 = type { ptr }
%class.anon.307 = type { i8 }
%class.anon.309 = type { i8 }
%class.anon.311 = type { i8 }
%"class.std::allocator.5" = type { i8 }
%class.anon.313 = type { i8 }
%class.anon.315 = type { i8 }
%class.anon.317 = type { i8 }
%struct.MonomorphState = type { %class.MonomorphiserPP, %"class.HIR::TypeRef", ptr, ptr, %"struct.HIR::PathParams" }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.319" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.319" = type { %"struct.std::_Vector_base.320" }
%"struct.std::_Vector_base.320" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.StaticTraitResolve::ValuePtr" = type { i32, %"union.StaticTraitResolve::ValuePtr::DataUnion" }
%"union.StaticTraitResolve::ValuePtr::DataUnion" = type { %"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" }
%"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" = type { ptr, i64 }
%class.anon.324 = type { ptr, ptr }
%class.anon.336 = type { ptr }
%class.anon.337 = type { i8 }
%class.anon.339 = type { i8 }
%class.anon.341 = type { i8 }
%"class.std::allocator.2" = type { i8 }
%class.anon.343 = type { i8 }
%class.anon.345 = type { i8 }
%class.anon.347 = type { i8 }
%class.anon.349 = type { ptr, ptr, ptr }
%class.anon.350 = type { i8 }
%class.anon.352 = type { i8 }
%class.anon.354 = type { i8 }
%class.anon.356 = type { i8 }
%struct.TypeRepr = type { i64, i64, %"class.TypeRepr::VariantMode", %"class.std::vector.281" }
%"class.TypeRepr::VariantMode" = type { i32, %"union.TypeRepr::VariantMode::DataUnion" }
%"union.TypeRepr::VariantMode::DataUnion" = type { %"struct.TypeRepr::VariantMode::Data_Values" }
%"struct.TypeRepr::VariantMode::Data_Values" = type { %"struct.TypeRepr::FieldPath", %"class.std::vector.146" }
%"struct.TypeRepr::FieldPath" = type { i64, i64, %"class.std::vector.146" }
%"class.std::vector.146" = type { %"struct.std::_Vector_base.147" }
%"struct.std::_Vector_base.147" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.281" = type { %"struct.std::_Vector_base.282" }
%"struct.std::_Vector_base.282" = type { %"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl" }
%"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl" = type { %"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TypeRepr::Field, std::allocator<TypeRepr::Field>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.TypeRepr::Field" = type { i64, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.115" }
%"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::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = 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 }
%"struct.PatternRulesetBuilder::Ruleset" = type { i8, %"class.std::vector.136", %"class.std::vector.141" }
%"class.std::vector.141" = type { %"struct.std::_Vector_base.142" }
%"struct.std::_Vector_base.142" = type { %"struct.std::_Vector_base<PatternBinding, std::allocator<PatternBinding>>::_Vector_impl" }
%"struct.std::_Vector_base<PatternBinding, std::allocator<PatternBinding>>::_Vector_impl" = type { %"struct.std::_Vector_base<PatternBinding, std::allocator<PatternBinding>>::_Vector_impl_data" }
%"struct.std::_Vector_base<PatternBinding, std::allocator<PatternBinding>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.10", [8 x i8] }
%"class.std::unique_ptr.10" = type { %"struct.std::__uniq_ptr_data.11" }
%"struct.std::__uniq_ptr_data.11" = type { %"class.std::__uniq_ptr_impl.12" }
%"class.std::__uniq_ptr_impl.12" = type { %"class.std::tuple.13" }
%"class.std::tuple.13" = type { %"struct.std::_Tuple_impl.14" }
%"struct.std::_Tuple_impl.14" = type { %"struct.std::_Head_base.17" }
%"struct.std::_Head_base.17" = type { ptr }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::LifetimeRef" = type { i32 }
%struct.Reloc = type { i64, i64, %"class.std::unique_ptr", %"class.std::__cxx11::basic_string" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.9" }
%"struct.std::_Head_base.9" = type { ptr }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }
%"class.HIR::Static" = type { %"class.HIR::GenericParams", %"struct.HIR::Linkage", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i8, i8, i8, %"class.std::map.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 }
%"struct.HIR::Linkage" = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"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 }

@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
@__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE = external hidden unnamed_addr constant [16 x i8], align 1
@__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE = external hidden unnamed_addr constant [103 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [24 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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) #0

; 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 #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

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

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

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

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

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

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

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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #7

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

; 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 #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %class.TraceLog, align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.222, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i8, align 1
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i8, align 1
  %17 = alloca ptr, align 8
  %18 = alloca %struct.Span, align 8
  %19 = alloca %"class.std::function", align 8
  %20 = alloca %class.anon.274, align 1
  %21 = alloca i8, align 1
  %22 = alloca ptr, align 8
  %23 = alloca %struct.Span, align 8
  %24 = alloca %"class.std::function", align 8
  %25 = alloca %class.anon.276, align 1
  %26 = alloca i8, align 1
  %27 = alloca ptr, align 8
  %28 = alloca %class.PatternRule, align 8
  %29 = alloca %"class.MIR::Constant", align 8
  %30 = alloca %"struct.MIR::Constant::Data_Float", align 8
  %31 = alloca %class.PatternRule, align 8
  %32 = alloca %"class.MIR::Constant", align 8
  %33 = alloca %"struct.MIR::Constant::Data_Float", align 8
  %34 = alloca %class.PatternRule, align 8
  %35 = alloca %"class.MIR::Constant", align 8
  %36 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %37 = alloca %class.PatternRule, align 8
  %38 = alloca %"class.MIR::Constant", align 8
  %39 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %40 = alloca %class.PatternRule, align 8
  %41 = alloca %"class.MIR::Constant", align 8
  %42 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %43 = alloca %class.PatternRule, align 8
  %44 = alloca %"class.MIR::Constant", align 8
  %45 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %46 = alloca %class.PatternRule, align 8
  %47 = alloca %"class.MIR::Constant", align 8
  %48 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %49 = alloca %class.PatternRule, align 8
  %50 = alloca %"class.MIR::Constant", align 8
  %51 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %52 = alloca %class.PatternRule, align 8
  %53 = alloca %"class.MIR::Constant", align 8
  %54 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %55 = alloca %class.PatternRule, align 8
  %56 = alloca %"class.MIR::Constant", align 8
  %57 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %58 = alloca %class.PatternRule, align 8
  %59 = alloca %"class.MIR::Constant", align 8
  %60 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %61 = alloca %class.PatternRule, align 8
  %62 = alloca %"class.MIR::Constant", align 8
  %63 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %64 = alloca %class.PatternRule, align 8
  %65 = alloca %"class.MIR::Constant", align 8
  %66 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %67 = alloca %class.PatternRule, align 8
  %68 = alloca %"class.MIR::Constant", align 8
  %69 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %70 = alloca %class.PatternRule, align 8
  %71 = alloca %class.U128, align 8
  %72 = alloca %class.PatternRule, align 8
  %73 = alloca %"class.MIR::Constant", align 8
  %74 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %75 = alloca %struct.Span, align 8
  %76 = alloca %"class.std::function", align 8
  %77 = alloca %class.anon.278, align 1
  %78 = alloca i8, align 1
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca %struct.Span, align 8
  %82 = alloca %"class.std::function", align 8
  %83 = alloca %class.anon.280, align 8
  %84 = alloca %struct.Span, align 8
  %85 = alloca %"class.std::function", align 8
  %86 = alloca %class.anon.286, align 8
  %87 = alloca i32, align 4
  %88 = alloca %struct.EncodedLiteralSlice, align 8
  %89 = alloca i8, align 1
  %90 = alloca ptr, align 8
  %91 = alloca i8, align 1
  %92 = alloca ptr, align 8
  %93 = alloca i8, align 1
  %94 = alloca ptr, align 8
  %95 = alloca %struct.Span, align 8
  %96 = alloca %"class.std::function", align 8
  %97 = alloca %class.anon.287, align 8
  %98 = alloca i8, align 1
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca %struct.Span, align 8
  %102 = alloca %"class.std::function", align 8
  %103 = alloca %class.anon.288, align 8
  %104 = alloca %class.PatternRule, align 8
  %105 = alloca %"struct.PatternRule::Data_Any", align 1
  %106 = alloca i8, align 1
  %107 = alloca ptr, align 8
  %108 = alloca ptr, align 8
  %109 = alloca %struct.Span, align 8
  %110 = alloca %"class.std::function", align 8
  %111 = alloca %class.anon.289, align 8
  %112 = alloca i64, align 8
  %113 = alloca %struct.EncodedLiteralSlice, align 8
  %114 = alloca i8, align 1
  %115 = alloca ptr, align 8
  %116 = alloca ptr, align 8
  %117 = alloca %struct.Span, align 8
  %118 = alloca %"class.std::function", align 8
  %119 = alloca %class.anon.290, align 8
  %120 = alloca i8, align 1
  %121 = alloca ptr, align 8
  %122 = alloca ptr, align 8
  %123 = alloca %struct.Span, align 8
  %124 = alloca %"class.std::function", align 8
  %125 = alloca %class.anon.291, align 8
  %126 = alloca i8, align 1
  %127 = alloca ptr, align 8
  %128 = alloca ptr, align 8
  %129 = alloca %struct.Span, align 8
  %130 = alloca %"class.std::function", align 8
  %131 = alloca %class.anon.292, align 8
  %132 = alloca %"struct.std::pair.293", align 4
  %133 = alloca i32, align 4
  %134 = alloca i8, align 1
  %135 = alloca %struct.PatternRulesetBuilder, align 8
  %136 = alloca ptr, align 8
  %137 = alloca %struct.EncodedLiteralSlice, align 8
  %138 = alloca %"class.HIR::TypeRef", align 8
  %139 = alloca i1, align 1
  %140 = alloca i1, align 1
  %141 = alloca ptr, align 8
  %142 = alloca i64, align 8
  %143 = alloca %struct.EncodedLiteralSlice, align 8
  %144 = alloca %struct.EncodedLiteralSlice, align 8
  %145 = alloca %struct.Span, align 8
  %146 = alloca %"class.std::function", align 8
  %147 = alloca %class.anon.295, align 1
  %148 = alloca %class.PatternRule, align 8
  %149 = alloca %"struct.PatternRule::Data_Variant", align 8
  %150 = alloca i8, align 1
  %151 = alloca ptr, align 8
  %152 = alloca ptr, align 8
  %153 = alloca %struct.Span, align 8
  %154 = alloca %"class.std::function", align 8
  %155 = alloca %class.anon.297, align 8
  %156 = alloca %class.PatternRule, align 8
  %157 = alloca %"struct.PatternRule::Data_Any", align 1
  %158 = alloca i8, align 1
  %159 = alloca ptr, align 8
  %160 = alloca ptr, align 8
  %161 = alloca %struct.Span, align 8
  %162 = alloca %"class.std::function", align 8
  %163 = alloca %class.anon.298, align 8
  %164 = alloca i8, align 1
  %165 = alloca ptr, align 8
  %166 = alloca ptr, align 8
  %167 = alloca %struct.Span, align 8
  %168 = alloca %"class.std::function", align 8
  %169 = alloca %class.anon.299, align 8
  %170 = alloca i8, align 1
  %171 = alloca ptr, align 8
  %172 = alloca i64, align 8
  %173 = alloca %struct.Span, align 8
  %174 = alloca %"class.std::function", align 8
  %175 = alloca %class.anon.300, align 8
  %176 = alloca i64, align 8
  %177 = alloca i32, align 4
  %178 = alloca %struct.EncodedLiteralSlice, align 8
  %179 = alloca i8, align 1
  %180 = alloca ptr, align 8
  %181 = alloca ptr, align 8
  %182 = alloca %struct.Span, align 8
  %183 = alloca %"class.std::function", align 8
  %184 = alloca %class.anon.301, align 8
  %185 = alloca i8, align 1
  %186 = alloca ptr, align 8
  %187 = alloca i32, align 4
  %188 = alloca i32, align 4
  %189 = alloca i64, align 8
  %190 = alloca %class.U128, align 8
  %191 = alloca i64, align 8
  %192 = alloca %class.U128, align 8
  %193 = alloca %struct.EncodedLiteralSlice, align 8
  %194 = alloca ptr, align 8
  %195 = alloca %struct.Span, align 8
  %196 = alloca %"class.std::function", align 8
  %197 = alloca %class.anon.302, align 1
  %198 = alloca %struct.Span, align 8
  %199 = alloca %"class.std::function", align 8
  %200 = alloca %class.anon.304, align 1
  %201 = alloca %struct.Span, align 8
  %202 = alloca %"class.std::function", align 8
  %203 = alloca %class.anon.306, align 8
  %204 = alloca %struct.Span, align 8
  %205 = alloca %"class.std::function", align 8
  %206 = alloca %class.anon.307, align 1
  %207 = alloca %struct.Span, align 8
  %208 = alloca %"class.std::function", align 8
  %209 = alloca %class.anon.309, align 1
  %210 = alloca %struct.Span, align 8
  %211 = alloca %"class.std::function", align 8
  %212 = alloca %class.anon.311, align 1
  %213 = alloca %class.PatternRule, align 8
  %214 = alloca %"class.MIR::Constant", align 8
  %215 = alloca %"class.std::__cxx11::basic_string", align 8
  %216 = alloca %"class.std::allocator.5", align 1
  %217 = alloca i32, align 4
  %218 = alloca i32, align 4
  %219 = alloca i64, align 8
  %220 = alloca %class.U128, align 8
  %221 = alloca i64, align 8
  %222 = alloca %class.U128, align 8
  %223 = alloca %struct.EncodedLiteralSlice, align 8
  %224 = alloca ptr, align 8
  %225 = alloca %struct.Span, align 8
  %226 = alloca %"class.std::function", align 8
  %227 = alloca %class.anon.313, align 1
  %228 = alloca %struct.Span, align 8
  %229 = alloca %"class.std::function", align 8
  %230 = alloca %class.anon.315, align 1
  %231 = alloca %struct.Span, align 8
  %232 = alloca %"class.std::function", align 8
  %233 = alloca %class.anon.317, align 1
  %234 = alloca %struct.MonomorphState, align 8
  %235 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %236 = alloca %struct.Span, align 8
  %237 = alloca %"class.std::function", align 8
  %238 = alloca %class.anon.324, align 8
  %239 = alloca ptr, align 8
  %240 = alloca %struct.Span, align 8
  %241 = alloca %"class.std::function", align 8
  %242 = alloca %class.anon.336, align 8
  %243 = alloca ptr, align 8
  %244 = alloca %struct.Span, align 8
  %245 = alloca %"class.std::function", align 8
  %246 = alloca %class.anon.337, align 1
  %247 = alloca %struct.Span, align 8
  %248 = alloca %"class.std::function", align 8
  %249 = alloca %class.anon.339, align 1
  %250 = alloca %struct.Span, align 8
  %251 = alloca %"class.std::function", align 8
  %252 = alloca %class.anon.341, align 1
  %253 = alloca %class.PatternRule, align 8
  %254 = alloca %"class.MIR::Constant", align 8
  %255 = alloca %"class.std::vector.0", align 8
  %256 = alloca %"class.std::allocator.2", align 1
  %257 = alloca %struct.Span, align 8
  %258 = alloca %"class.std::function", align 8
  %259 = alloca %class.anon.343, align 1
  %260 = alloca %struct.Span, align 8
  %261 = alloca %"class.std::function", align 8
  %262 = alloca %class.anon.345, align 1
  %263 = alloca %struct.Span, align 8
  %264 = alloca %"class.std::function", align 8
  %265 = alloca %class.anon.347, align 1
  %266 = alloca %class.PatternRule, align 8
  %267 = alloca %"class.MIR::Constant", align 8
  %268 = alloca %"class.std::vector.0", align 8
  %269 = alloca %"class.std::allocator.2", align 1
  %270 = alloca ptr, align 8
  %271 = alloca %struct.Span, align 8
  %272 = alloca %"class.std::function", align 8
  %273 = alloca %class.anon.349, align 8
  %274 = alloca i8, align 1
  %275 = alloca ptr, align 8
  %276 = alloca %class.PatternRule, align 8
  %277 = alloca %"class.MIR::Constant", align 8
  %278 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %279 = alloca i8, align 1
  %280 = alloca ptr, align 8
  %281 = alloca %struct.Span, align 8
  %282 = alloca %"class.std::function", align 8
  %283 = alloca %class.anon.350, align 1
  %284 = alloca i8, align 1
  %285 = alloca ptr, align 8
  %286 = alloca %struct.Span, align 8
  %287 = alloca %"class.std::function", align 8
  %288 = alloca %class.anon.352, align 1
  %289 = alloca i8, align 1
  %290 = alloca ptr, align 8
  %291 = alloca %struct.Span, align 8
  %292 = alloca %"class.std::function", align 8
  %293 = alloca %class.anon.354, align 1
  %294 = alloca i8, align 1
  %295 = alloca ptr, align 8
  %296 = alloca %struct.Span, align 8
  %297 = alloca %"class.std::function", align 8
  %298 = alloca %class.anon.356, align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %3, ptr %7, align 8, !tbaa !5
  %299 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %8) #9
  %300 = call noundef zeroext i1 @_Z13debug_enabledv()
  %301 = zext i1 %300 to i64
  %302 = select i1 %300, ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #9
  %303 = getelementptr inbounds %class.anon.222, ptr %10, i32 0, i32 0
  store ptr %2, ptr %303, align 8, !tbaa !5
  %304 = getelementptr inbounds %class.anon.222, ptr %10, i32 0, i32 1
  %305 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %305, ptr %304, align 8, !tbaa !5
  %306 = getelementptr inbounds %class.anon.222, ptr %10, i32 0, i32 2
  store ptr %299, ptr %306, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(24) %10)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef %302, ptr noundef %9)
          to label %307 unwind label %312

307:                                              ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #9
  store i8 1, ptr %13, align 1, !tbaa !11
  br label %308

308:                                              ; preds = %3003, %307
  %309 = load i8, ptr %13, align 1, !tbaa !11, !range !13, !noundef !14
  %310 = trunc i8 %309 to i1
  br i1 %310, label %316, label %311

311:                                              ; preds = %308
  store i32 2, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #9
  br label %3004

312:                                              ; preds = %4
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %11, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #9
  br label %3005

316:                                              ; preds = %308
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  %317 = load ptr, ptr %7, align 8, !tbaa !5
  %318 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %317)
          to label %319 unwind label %324

319:                                              ; preds = %316
  store ptr %318, ptr %15, align 8, !tbaa !5
  br label %320

320:                                              ; preds = %3000, %319
  %321 = load i8, ptr %13, align 1, !tbaa !11, !range !13, !noundef !14
  %322 = trunc i8 %321 to i1
  br i1 %322, label %328, label %323

323:                                              ; preds = %320
  store i32 5, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  br label %3002

324:                                              ; preds = %328, %316
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %11, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %12, align 4
  br label %3001

328:                                              ; preds = %320
  %329 = load ptr, ptr %15, align 8, !tbaa !5
  %330 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %329)
          to label %331 unwind label %324

331:                                              ; preds = %328
  switch i32 %330, label %2999 [
    i32 0, label %332
    i32 1, label %333
    i32 2, label %378
    i32 3, label %423
    i32 10, label %851
    i32 4, label %986
    i32 5, label %1639
    i32 6, label %1696
    i32 7, label %1747
    i32 8, label %1798
    i32 9, label %1902
    i32 11, label %1953
    i32 12, label %2771
    i32 13, label %2819
    i32 14, label %2864
    i32 15, label %2909
    i32 16, label %2954
  ]

332:                                              ; preds = %331
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 941, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE) #10
  unreachable

333:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #9
  store i8 1, ptr %16, align 1, !tbaa !11
  br label %334

334:                                              ; preds = %376, %333
  %335 = load i8, ptr %16, align 1, !tbaa !11, !range !13, !noundef !14
  %336 = trunc i8 %335 to i1
  br i1 %336, label %338, label %337

337:                                              ; preds = %334
  store i32 9, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #9
  br label %377

338:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  %339 = load ptr, ptr %15, align 8, !tbaa !5
  %340 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %339)
          to label %341 unwind label %347

341:                                              ; preds = %338
  store ptr %340, ptr %17, align 8, !tbaa !5
  br label %342

342:                                              ; preds = %373, %341
  %343 = load ptr, ptr %17, align 8, !tbaa !5
  %344 = load i8, ptr %16, align 1, !tbaa !11, !range !13, !noundef !14
  %345 = trunc i8 %344 to i1
  br i1 %345, label %351, label %346

346:                                              ; preds = %342
  store i32 12, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  br label %375

347:                                              ; preds = %357, %338
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %11, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %12, align 4
  br label %374

351:                                              ; preds = %342
  br label %352

352:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %353 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %353)
          to label %354 unwind label %358

354:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef %19)
          to label %355 unwind label %362

355:                                              ; preds = %354
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  %356 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %356, ptr noundef @.str.10)
          to label %357 unwind label %367

357:                                              ; preds = %355
  invoke void @__cxa_throw(ptr %356, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %347

358:                                              ; preds = %352
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %11, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %12, align 4
  br label %366

362:                                              ; preds = %354
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %11, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  br label %366

366:                                              ; preds = %362, %358
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %374

367:                                              ; preds = %355
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %11, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %12, align 4
  call void @__cxa_free_exception(ptr %356) #9
  br label %374

371:                                              ; No predecessors!
  br label %372

372:                                              ; preds = %371
  br label %373

373:                                              ; preds = %372
  store i8 0, ptr %16, align 1, !tbaa !11
  br label %342, !llvm.loop !15

374:                                              ; preds = %367, %366, %347
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #9
  br label %3001

375:                                              ; preds = %346
  br label %376

376:                                              ; preds = %375
  store i8 0, ptr %16, align 1, !tbaa !11
  br label %334, !llvm.loop !17

377:                                              ; preds = %337
  br label %2999

378:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #9
  store i8 1, ptr %21, align 1, !tbaa !11
  br label %379

379:                                              ; preds = %421, %378
  %380 = load i8, ptr %21, align 1, !tbaa !11, !range !13, !noundef !14
  %381 = trunc i8 %380 to i1
  br i1 %381, label %383, label %382

382:                                              ; preds = %379
  store i32 17, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  br label %422

383:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %384 = load ptr, ptr %15, align 8, !tbaa !5
  %385 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %384)
          to label %386 unwind label %392

386:                                              ; preds = %383
  store ptr %385, ptr %22, align 8, !tbaa !5
  br label %387

387:                                              ; preds = %418, %386
  %388 = load ptr, ptr %22, align 8, !tbaa !5
  %389 = load i8, ptr %21, align 1, !tbaa !11, !range !13, !noundef !14
  %390 = trunc i8 %389 to i1
  br i1 %390, label %396, label %391

391:                                              ; preds = %387
  store i32 20, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %420

392:                                              ; preds = %402, %383
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %11, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %12, align 4
  br label %419

396:                                              ; preds = %387
  br label %397

397:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %398 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %398)
          to label %399 unwind label %403

399:                                              ; preds = %397
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %24)
          to label %400 unwind label %407

400:                                              ; preds = %399
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  %401 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %401, ptr noundef @.str.10)
          to label %402 unwind label %412

402:                                              ; preds = %400
  invoke void @__cxa_throw(ptr %401, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %392

403:                                              ; preds = %397
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %11, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %12, align 4
  br label %411

407:                                              ; preds = %399
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %11, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  br label %411

411:                                              ; preds = %407, %403
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  br label %419

412:                                              ; preds = %400
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %11, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %12, align 4
  call void @__cxa_free_exception(ptr %401) #9
  br label %419

416:                                              ; No predecessors!
  br label %417

417:                                              ; preds = %416
  br label %418

418:                                              ; preds = %417
  store i8 0, ptr %21, align 1, !tbaa !11
  br label %387, !llvm.loop !18

419:                                              ; preds = %412, %411, %392
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  br label %3001

420:                                              ; preds = %391
  br label %421

421:                                              ; preds = %420
  store i8 0, ptr %21, align 1, !tbaa !11
  br label %379, !llvm.loop !19

422:                                              ; preds = %382
  br label %2999

423:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #9
  store i8 1, ptr %26, align 1, !tbaa !11
  br label %424

424:                                              ; preds = %849, %423
  %425 = load i8, ptr %26, align 1, !tbaa !11, !range !13, !noundef !14
  %426 = trunc i8 %425 to i1
  br i1 %426, label %428, label %427

427:                                              ; preds = %424
  store i32 25, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  br label %850

428:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %429 = load ptr, ptr %15, align 8, !tbaa !5
  %430 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %429)
          to label %431 unwind label %437

431:                                              ; preds = %428
  store ptr %430, ptr %27, align 8, !tbaa !5
  br label %432

432:                                              ; preds = %846, %431
  %433 = load ptr, ptr %27, align 8, !tbaa !5
  %434 = load i8, ptr %26, align 1, !tbaa !11, !range !13, !noundef !14
  %435 = trunc i8 %434 to i1
  br i1 %435, label %441, label %436

436:                                              ; preds = %432
  store i32 28, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %848

437:                                              ; preds = %829, %803, %800, %759, %755, %752, %731, %728, %707, %704, %683, %680, %659, %656, %635, %632, %612, %608, %605, %585, %582, %562, %559, %539, %536, %516, %513, %493, %490, %470, %467, %447, %444, %428
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %11, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %12, align 4
  br label %847

441:                                              ; preds = %432
  %442 = load ptr, ptr %27, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !20
  switch i32 %443, label %845 [
    i32 12, label %444
    i32 13, label %467
    i32 2, label %490
    i32 4, label %513
    i32 6, label %536
    i32 8, label %559
    i32 10, label %582
    i32 0, label %605
    i32 3, label %632
    i32 5, label %656
    i32 7, label %680
    i32 9, label %704
    i32 11, label %728
    i32 1, label %752
    i32 14, label %780
    i32 15, label %800
    i32 16, label %823
  ]

444:                                              ; preds = %441
  %445 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %30, i32 0, i32 0
  %446 = invoke noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 4)
          to label %447 unwind label %437

447:                                              ; preds = %444
  store double %446, ptr %445, align 8, !tbaa !22
  %448 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %30, i32 0, i32 1
  %449 = load ptr, ptr %27, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !20
  store i32 %450, ptr %448, align 8, !tbaa !25
  %451 = getelementptr inbounds { double, i32 }, ptr %30, i32 0, i32 0
  %452 = load double, ptr %451, align 8
  %453 = getelementptr inbounds { double, i32 }, ptr %30, i32 0, i32 1
  %454 = load i32, ptr %453, align 8
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %29, double %452, i32 %454)
          to label %455 unwind label %437

455:                                              ; preds = %447
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %28, ptr noundef %29)
          to label %456 unwind label %458

456:                                              ; preds = %455
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %28)
          to label %457 unwind label %462

457:                                              ; preds = %456
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %28) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #9
  br label %845

458:                                              ; preds = %455
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %11, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %12, align 4
  br label %466

462:                                              ; preds = %456
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %11, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %28) #9
  br label %466

466:                                              ; preds = %462, %458
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #9
  br label %847

467:                                              ; preds = %441
  %468 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %33, i32 0, i32 0
  %469 = invoke noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 8)
          to label %470 unwind label %437

470:                                              ; preds = %467
  store double %469, ptr %468, align 8, !tbaa !22
  %471 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %33, i32 0, i32 1
  %472 = load ptr, ptr %27, align 8, !tbaa !5
  %473 = load i32, ptr %472, align 4, !tbaa !20
  store i32 %473, ptr %471, align 8, !tbaa !25
  %474 = getelementptr inbounds { double, i32 }, ptr %33, i32 0, i32 0
  %475 = load double, ptr %474, align 8
  %476 = getelementptr inbounds { double, i32 }, ptr %33, i32 0, i32 1
  %477 = load i32, ptr %476, align 8
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %32, double %475, i32 %477)
          to label %478 unwind label %437

478:                                              ; preds = %470
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %31, ptr noundef %32)
          to label %479 unwind label %481

479:                                              ; preds = %478
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %31)
          to label %480 unwind label %485

480:                                              ; preds = %479
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %31) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #9
  br label %845

481:                                              ; preds = %478
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %11, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %12, align 4
  br label %489

485:                                              ; preds = %479
  %486 = landingpad { ptr, i32 }
          cleanup
  %487 = extractvalue { ptr, i32 } %486, 0
  store ptr %487, ptr %11, align 8
  %488 = extractvalue { ptr, i32 } %486, 1
  store i32 %488, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %31) #9
  br label %489

489:                                              ; preds = %485, %481
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #9
  br label %847

490:                                              ; preds = %441
  %491 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %36, i32 0, i32 0
  %492 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1)
          to label %493 unwind label %437

493:                                              ; preds = %490
  %494 = getelementptr inbounds { i64, i64 }, ptr %491, i32 0, i32 0
  %495 = extractvalue { i64, i64 } %492, 0
  store i64 %495, ptr %494, align 8
  %496 = getelementptr inbounds { i64, i64 }, ptr %491, i32 0, i32 1
  %497 = extractvalue { i64, i64 } %492, 1
  store i64 %497, ptr %496, align 8
  %498 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %36, i32 0, i32 1
  %499 = load ptr, ptr %27, align 8, !tbaa !5
  %500 = load i32, ptr %499, align 4, !tbaa !20
  store i32 %500, ptr %498, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %35, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %36)
          to label %501 unwind label %437

501:                                              ; preds = %493
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %34, ptr noundef %35)
          to label %502 unwind label %504

502:                                              ; preds = %501
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %34)
          to label %503 unwind label %508

503:                                              ; preds = %502
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %34) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #9
  br label %845

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

508:                                              ; preds = %502
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %11, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %34) #9
  br label %512

512:                                              ; preds = %508, %504
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %35) #9
  br label %847

513:                                              ; preds = %441
  %514 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %39, i32 0, i32 0
  %515 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 2)
          to label %516 unwind label %437

516:                                              ; preds = %513
  %517 = getelementptr inbounds { i64, i64 }, ptr %514, i32 0, i32 0
  %518 = extractvalue { i64, i64 } %515, 0
  store i64 %518, ptr %517, align 8
  %519 = getelementptr inbounds { i64, i64 }, ptr %514, i32 0, i32 1
  %520 = extractvalue { i64, i64 } %515, 1
  store i64 %520, ptr %519, align 8
  %521 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %39, i32 0, i32 1
  %522 = load ptr, ptr %27, align 8, !tbaa !5
  %523 = load i32, ptr %522, align 4, !tbaa !20
  store i32 %523, ptr %521, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %38, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %39)
          to label %524 unwind label %437

524:                                              ; preds = %516
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %37, ptr noundef %38)
          to label %525 unwind label %527

525:                                              ; preds = %524
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %37)
          to label %526 unwind label %531

526:                                              ; preds = %525
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %37) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #9
  br label %845

527:                                              ; preds = %524
  %528 = landingpad { ptr, i32 }
          cleanup
  %529 = extractvalue { ptr, i32 } %528, 0
  store ptr %529, ptr %11, align 8
  %530 = extractvalue { ptr, i32 } %528, 1
  store i32 %530, ptr %12, align 4
  br label %535

531:                                              ; preds = %525
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %11, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %37) #9
  br label %535

535:                                              ; preds = %531, %527
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #9
  br label %847

536:                                              ; preds = %441
  %537 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %42, i32 0, i32 0
  %538 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 4)
          to label %539 unwind label %437

539:                                              ; preds = %536
  %540 = getelementptr inbounds { i64, i64 }, ptr %537, i32 0, i32 0
  %541 = extractvalue { i64, i64 } %538, 0
  store i64 %541, ptr %540, align 8
  %542 = getelementptr inbounds { i64, i64 }, ptr %537, i32 0, i32 1
  %543 = extractvalue { i64, i64 } %538, 1
  store i64 %543, ptr %542, align 8
  %544 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %42, i32 0, i32 1
  %545 = load ptr, ptr %27, align 8, !tbaa !5
  %546 = load i32, ptr %545, align 4, !tbaa !20
  store i32 %546, ptr %544, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %41, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %42)
          to label %547 unwind label %437

547:                                              ; preds = %539
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %40, ptr noundef %41)
          to label %548 unwind label %550

548:                                              ; preds = %547
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %40)
          to label %549 unwind label %554

549:                                              ; preds = %548
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %40) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #9
  br label %845

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

554:                                              ; preds = %548
  %555 = landingpad { ptr, i32 }
          cleanup
  %556 = extractvalue { ptr, i32 } %555, 0
  store ptr %556, ptr %11, align 8
  %557 = extractvalue { ptr, i32 } %555, 1
  store i32 %557, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %40) #9
  br label %558

558:                                              ; preds = %554, %550
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #9
  br label %847

559:                                              ; preds = %441
  %560 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %45, i32 0, i32 0
  %561 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 8)
          to label %562 unwind label %437

562:                                              ; preds = %559
  %563 = getelementptr inbounds { i64, i64 }, ptr %560, i32 0, i32 0
  %564 = extractvalue { i64, i64 } %561, 0
  store i64 %564, ptr %563, align 8
  %565 = getelementptr inbounds { i64, i64 }, ptr %560, i32 0, i32 1
  %566 = extractvalue { i64, i64 } %561, 1
  store i64 %566, ptr %565, align 8
  %567 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %45, i32 0, i32 1
  %568 = load ptr, ptr %27, align 8, !tbaa !5
  %569 = load i32, ptr %568, align 4, !tbaa !20
  store i32 %569, ptr %567, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %44, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %45)
          to label %570 unwind label %437

570:                                              ; preds = %562
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %43, ptr noundef %44)
          to label %571 unwind label %573

571:                                              ; preds = %570
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %43)
          to label %572 unwind label %577

572:                                              ; preds = %571
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %43) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %44) #9
  br label %845

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

577:                                              ; preds = %571
  %578 = landingpad { ptr, i32 }
          cleanup
  %579 = extractvalue { ptr, i32 } %578, 0
  store ptr %579, ptr %11, align 8
  %580 = extractvalue { ptr, i32 } %578, 1
  store i32 %580, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %43) #9
  br label %581

581:                                              ; preds = %577, %573
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %44) #9
  br label %847

582:                                              ; preds = %441
  %583 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %48, i32 0, i32 0
  %584 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 16)
          to label %585 unwind label %437

585:                                              ; preds = %582
  %586 = getelementptr inbounds { i64, i64 }, ptr %583, i32 0, i32 0
  %587 = extractvalue { i64, i64 } %584, 0
  store i64 %587, ptr %586, align 8
  %588 = getelementptr inbounds { i64, i64 }, ptr %583, i32 0, i32 1
  %589 = extractvalue { i64, i64 } %584, 1
  store i64 %589, ptr %588, align 8
  %590 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %48, i32 0, i32 1
  %591 = load ptr, ptr %27, align 8, !tbaa !5
  %592 = load i32, ptr %591, align 4, !tbaa !20
  store i32 %592, ptr %590, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %47, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %48)
          to label %593 unwind label %437

593:                                              ; preds = %585
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %46, ptr noundef %47)
          to label %594 unwind label %596

594:                                              ; preds = %593
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %46)
          to label %595 unwind label %600

595:                                              ; preds = %594
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %46) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %47) #9
  br label %845

596:                                              ; preds = %593
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %11, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %12, align 4
  br label %604

600:                                              ; preds = %594
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %11, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %46) #9
  br label %604

604:                                              ; preds = %600, %596
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %47) #9
  br label %847

605:                                              ; preds = %441
  %606 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %51, i32 0, i32 0
  %607 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %608 unwind label %437

608:                                              ; preds = %605
  %609 = udiv i32 %607, 8
  %610 = zext i32 %609 to i64
  %611 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %610)
          to label %612 unwind label %437

612:                                              ; preds = %608
  %613 = getelementptr inbounds { i64, i64 }, ptr %606, i32 0, i32 0
  %614 = extractvalue { i64, i64 } %611, 0
  store i64 %614, ptr %613, align 8
  %615 = getelementptr inbounds { i64, i64 }, ptr %606, i32 0, i32 1
  %616 = extractvalue { i64, i64 } %611, 1
  store i64 %616, ptr %615, align 8
  %617 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %51, i32 0, i32 1
  %618 = load ptr, ptr %27, align 8, !tbaa !5
  %619 = load i32, ptr %618, align 4, !tbaa !20
  store i32 %619, ptr %617, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %50, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %51)
          to label %620 unwind label %437

620:                                              ; preds = %612
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %49, ptr noundef %50)
          to label %621 unwind label %623

621:                                              ; preds = %620
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %49)
          to label %622 unwind label %627

622:                                              ; preds = %621
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %49) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %50) #9
  br label %845

623:                                              ; preds = %620
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %11, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %12, align 4
  br label %631

627:                                              ; preds = %621
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %11, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %49) #9
  br label %631

631:                                              ; preds = %627, %623
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %50) #9
  br label %847

632:                                              ; preds = %441
  %633 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %54, i32 0, i32 0
  %634 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1)
          to label %635 unwind label %437

635:                                              ; preds = %632
  %636 = getelementptr inbounds %class.S128, ptr %633, i32 0, i32 0
  %637 = getelementptr inbounds { i64, i64 }, ptr %636, i32 0, i32 0
  %638 = extractvalue { i64, i64 } %634, 0
  store i64 %638, ptr %637, align 8
  %639 = getelementptr inbounds { i64, i64 }, ptr %636, i32 0, i32 1
  %640 = extractvalue { i64, i64 } %634, 1
  store i64 %640, ptr %639, align 8
  %641 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %54, i32 0, i32 1
  %642 = load ptr, ptr %27, align 8, !tbaa !5
  %643 = load i32, ptr %642, align 4, !tbaa !20
  store i32 %643, ptr %641, align 8, !tbaa !30
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %53, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %54)
          to label %644 unwind label %437

644:                                              ; preds = %635
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %52, ptr noundef %53)
          to label %645 unwind label %647

645:                                              ; preds = %644
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %52)
          to label %646 unwind label %651

646:                                              ; preds = %645
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %52) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #9
  br label %845

647:                                              ; preds = %644
  %648 = landingpad { ptr, i32 }
          cleanup
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %11, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %12, align 4
  br label %655

651:                                              ; preds = %645
  %652 = landingpad { ptr, i32 }
          cleanup
  %653 = extractvalue { ptr, i32 } %652, 0
  store ptr %653, ptr %11, align 8
  %654 = extractvalue { ptr, i32 } %652, 1
  store i32 %654, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %52) #9
  br label %655

655:                                              ; preds = %651, %647
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #9
  br label %847

656:                                              ; preds = %441
  %657 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %57, i32 0, i32 0
  %658 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 2)
          to label %659 unwind label %437

659:                                              ; preds = %656
  %660 = getelementptr inbounds %class.S128, ptr %657, i32 0, i32 0
  %661 = getelementptr inbounds { i64, i64 }, ptr %660, i32 0, i32 0
  %662 = extractvalue { i64, i64 } %658, 0
  store i64 %662, ptr %661, align 8
  %663 = getelementptr inbounds { i64, i64 }, ptr %660, i32 0, i32 1
  %664 = extractvalue { i64, i64 } %658, 1
  store i64 %664, ptr %663, align 8
  %665 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %57, i32 0, i32 1
  %666 = load ptr, ptr %27, align 8, !tbaa !5
  %667 = load i32, ptr %666, align 4, !tbaa !20
  store i32 %667, ptr %665, align 8, !tbaa !30
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %56, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %57)
          to label %668 unwind label %437

668:                                              ; preds = %659
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %55, ptr noundef %56)
          to label %669 unwind label %671

669:                                              ; preds = %668
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %55)
          to label %670 unwind label %675

670:                                              ; preds = %669
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %55) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %56) #9
  br label %845

671:                                              ; preds = %668
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %11, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %12, align 4
  br label %679

675:                                              ; preds = %669
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %11, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %55) #9
  br label %679

679:                                              ; preds = %675, %671
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %56) #9
  br label %847

680:                                              ; preds = %441
  %681 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %60, i32 0, i32 0
  %682 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 4)
          to label %683 unwind label %437

683:                                              ; preds = %680
  %684 = getelementptr inbounds %class.S128, ptr %681, i32 0, i32 0
  %685 = getelementptr inbounds { i64, i64 }, ptr %684, i32 0, i32 0
  %686 = extractvalue { i64, i64 } %682, 0
  store i64 %686, ptr %685, align 8
  %687 = getelementptr inbounds { i64, i64 }, ptr %684, i32 0, i32 1
  %688 = extractvalue { i64, i64 } %682, 1
  store i64 %688, ptr %687, align 8
  %689 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %60, i32 0, i32 1
  %690 = load ptr, ptr %27, align 8, !tbaa !5
  %691 = load i32, ptr %690, align 4, !tbaa !20
  store i32 %691, ptr %689, align 8, !tbaa !30
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %59, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %60)
          to label %692 unwind label %437

692:                                              ; preds = %683
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %58, ptr noundef %59)
          to label %693 unwind label %695

693:                                              ; preds = %692
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %58)
          to label %694 unwind label %699

694:                                              ; preds = %693
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %58) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %59) #9
  br label %845

695:                                              ; preds = %692
  %696 = landingpad { ptr, i32 }
          cleanup
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %11, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %12, align 4
  br label %703

699:                                              ; preds = %693
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %11, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %58) #9
  br label %703

703:                                              ; preds = %699, %695
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %59) #9
  br label %847

704:                                              ; preds = %441
  %705 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %63, i32 0, i32 0
  %706 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 8)
          to label %707 unwind label %437

707:                                              ; preds = %704
  %708 = getelementptr inbounds %class.S128, ptr %705, i32 0, i32 0
  %709 = getelementptr inbounds { i64, i64 }, ptr %708, i32 0, i32 0
  %710 = extractvalue { i64, i64 } %706, 0
  store i64 %710, ptr %709, align 8
  %711 = getelementptr inbounds { i64, i64 }, ptr %708, i32 0, i32 1
  %712 = extractvalue { i64, i64 } %706, 1
  store i64 %712, ptr %711, align 8
  %713 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %63, i32 0, i32 1
  %714 = load ptr, ptr %27, align 8, !tbaa !5
  %715 = load i32, ptr %714, align 4, !tbaa !20
  store i32 %715, ptr %713, align 8, !tbaa !30
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %62, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %63)
          to label %716 unwind label %437

716:                                              ; preds = %707
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %61, ptr noundef %62)
          to label %717 unwind label %719

717:                                              ; preds = %716
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %61)
          to label %718 unwind label %723

718:                                              ; preds = %717
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %61) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %62) #9
  br label %845

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

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

727:                                              ; preds = %723, %719
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %62) #9
  br label %847

728:                                              ; preds = %441
  %729 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %66, i32 0, i32 0
  %730 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 16)
          to label %731 unwind label %437

731:                                              ; preds = %728
  %732 = getelementptr inbounds %class.S128, ptr %729, i32 0, i32 0
  %733 = getelementptr inbounds { i64, i64 }, ptr %732, i32 0, i32 0
  %734 = extractvalue { i64, i64 } %730, 0
  store i64 %734, ptr %733, align 8
  %735 = getelementptr inbounds { i64, i64 }, ptr %732, i32 0, i32 1
  %736 = extractvalue { i64, i64 } %730, 1
  store i64 %736, ptr %735, align 8
  %737 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %66, i32 0, i32 1
  %738 = load ptr, ptr %27, align 8, !tbaa !5
  %739 = load i32, ptr %738, align 4, !tbaa !20
  store i32 %739, ptr %737, align 8, !tbaa !30
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %65, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %66)
          to label %740 unwind label %437

740:                                              ; preds = %731
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %64, ptr noundef %65)
          to label %741 unwind label %743

741:                                              ; preds = %740
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %64)
          to label %742 unwind label %747

742:                                              ; preds = %741
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %64) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %65) #9
  br label %845

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

747:                                              ; preds = %741
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %11, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %64) #9
  br label %751

751:                                              ; preds = %747, %743
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %65) #9
  br label %847

752:                                              ; preds = %441
  %753 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %69, i32 0, i32 0
  %754 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %755 unwind label %437

755:                                              ; preds = %752
  %756 = udiv i32 %754, 8
  %757 = zext i32 %756 to i64
  %758 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %757)
          to label %759 unwind label %437

759:                                              ; preds = %755
  %760 = getelementptr inbounds %class.S128, ptr %753, i32 0, i32 0
  %761 = getelementptr inbounds { i64, i64 }, ptr %760, i32 0, i32 0
  %762 = extractvalue { i64, i64 } %758, 0
  store i64 %762, ptr %761, align 8
  %763 = getelementptr inbounds { i64, i64 }, ptr %760, i32 0, i32 1
  %764 = extractvalue { i64, i64 } %758, 1
  store i64 %764, ptr %763, align 8
  %765 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %69, i32 0, i32 1
  %766 = load ptr, ptr %27, align 8, !tbaa !5
  %767 = load i32, ptr %766, align 4, !tbaa !20
  store i32 %767, ptr %765, align 8, !tbaa !30
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %68, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %69)
          to label %768 unwind label %437

768:                                              ; preds = %759
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %67, ptr noundef %68)
          to label %769 unwind label %771

769:                                              ; preds = %768
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %67)
          to label %770 unwind label %775

770:                                              ; preds = %769
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %67) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %68) #9
  br label %845

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

775:                                              ; preds = %769
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %11, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %67) #9
  br label %779

779:                                              ; preds = %775, %771
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %68) #9
  br label %847

780:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #9
  %781 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1)
          to label %782 unwind label %791

782:                                              ; preds = %780
  %783 = getelementptr inbounds { i64, i64 }, ptr %71, i32 0, i32 0
  %784 = extractvalue { i64, i64 } %781, 0
  store i64 %784, ptr %783, align 8
  %785 = getelementptr inbounds { i64, i64 }, ptr %71, i32 0, i32 1
  %786 = extractvalue { i64, i64 } %781, 1
  store i64 %786, ptr %785, align 8
  %787 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %71, i32 noundef 0)
          to label %788 unwind label %791

788:                                              ; preds = %782
  invoke void @_ZN11PatternRule9make_BoolEb(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %70, i1 noundef zeroext %787)
          to label %789 unwind label %791

789:                                              ; preds = %788
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %70)
          to label %790 unwind label %795

790:                                              ; preds = %789
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %70) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #9
  br label %845

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

795:                                              ; preds = %789
  %796 = landingpad { ptr, i32 }
          cleanup
  %797 = extractvalue { ptr, i32 } %796, 0
  store ptr %797, ptr %11, align 8
  %798 = extractvalue { ptr, i32 } %796, 1
  store i32 %798, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %70) #9
  br label %799

799:                                              ; preds = %795, %791
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #9
  br label %847

800:                                              ; preds = %441
  %801 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %74, i32 0, i32 0
  %802 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 4)
          to label %803 unwind label %437

803:                                              ; preds = %800
  %804 = getelementptr inbounds { i64, i64 }, ptr %801, i32 0, i32 0
  %805 = extractvalue { i64, i64 } %802, 0
  store i64 %805, ptr %804, align 8
  %806 = getelementptr inbounds { i64, i64 }, ptr %801, i32 0, i32 1
  %807 = extractvalue { i64, i64 } %802, 1
  store i64 %807, ptr %806, align 8
  %808 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %74, i32 0, i32 1
  %809 = load ptr, ptr %27, align 8, !tbaa !5
  %810 = load i32, ptr %809, align 4, !tbaa !20
  store i32 %810, ptr %808, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %73, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %74)
          to label %811 unwind label %437

811:                                              ; preds = %803
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %72, ptr noundef %73)
          to label %812 unwind label %814

812:                                              ; preds = %811
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %72)
          to label %813 unwind label %818

813:                                              ; preds = %812
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %72) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %73) #9
  br label %845

814:                                              ; preds = %811
  %815 = landingpad { ptr, i32 }
          cleanup
  %816 = extractvalue { ptr, i32 } %815, 0
  store ptr %816, ptr %11, align 8
  %817 = extractvalue { ptr, i32 } %815, 1
  store i32 %817, ptr %12, align 4
  br label %822

818:                                              ; preds = %812
  %819 = landingpad { ptr, i32 }
          cleanup
  %820 = extractvalue { ptr, i32 } %819, 0
  store ptr %820, ptr %11, align 8
  %821 = extractvalue { ptr, i32 } %819, 1
  store i32 %821, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %72) #9
  br label %822

822:                                              ; preds = %818, %814
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %73) #9
  br label %847

823:                                              ; preds = %441
  br label %824

824:                                              ; preds = %823
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #9
  %825 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %825)
          to label %826 unwind label %830

826:                                              ; preds = %824
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 1 dereferenceable(1) %77) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef %76)
          to label %827 unwind label %834

827:                                              ; preds = %826
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #9
  %828 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %828, ptr noundef @.str.10)
          to label %829 unwind label %839

829:                                              ; preds = %827
  invoke void @__cxa_throw(ptr %828, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %437

830:                                              ; preds = %824
  %831 = landingpad { ptr, i32 }
          cleanup
  %832 = extractvalue { ptr, i32 } %831, 0
  store ptr %832, ptr %11, align 8
  %833 = extractvalue { ptr, i32 } %831, 1
  store i32 %833, ptr %12, align 4
  br label %838

834:                                              ; preds = %826
  %835 = landingpad { ptr, i32 }
          cleanup
  %836 = extractvalue { ptr, i32 } %835, 0
  store ptr %836, ptr %11, align 8
  %837 = extractvalue { ptr, i32 } %835, 1
  store i32 %837, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #9
  br label %838

838:                                              ; preds = %834, %830
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #9
  br label %847

839:                                              ; preds = %827
  %840 = landingpad { ptr, i32 }
          cleanup
  %841 = extractvalue { ptr, i32 } %840, 0
  store ptr %841, ptr %11, align 8
  %842 = extractvalue { ptr, i32 } %840, 1
  store i32 %842, ptr %12, align 4
  call void @__cxa_free_exception(ptr %828) #9
  br label %847

843:                                              ; No predecessors!
  br label %844

844:                                              ; preds = %843
  br label %845

845:                                              ; preds = %844, %813, %790, %770, %742, %718, %694, %670, %646, %622, %595, %572, %549, %526, %503, %480, %457, %441
  br label %846

846:                                              ; preds = %845
  store i8 0, ptr %26, align 1, !tbaa !11
  br label %432, !llvm.loop !33

847:                                              ; preds = %839, %838, %822, %799, %779, %751, %727, %703, %679, %655, %631, %604, %581, %558, %535, %512, %489, %466, %437
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  br label %3001

848:                                              ; preds = %436
  br label %849

849:                                              ; preds = %848
  store i8 0, ptr %26, align 1, !tbaa !11
  br label %424, !llvm.loop !34

850:                                              ; preds = %427
  br label %2999

851:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #9
  store i8 1, ptr %78, align 1, !tbaa !11
  br label %852

852:                                              ; preds = %984, %851
  %853 = load i8, ptr %78, align 1, !tbaa !11, !range !13, !noundef !14
  %854 = trunc i8 %853 to i1
  br i1 %854, label %856, label %855

855:                                              ; preds = %852
  store i32 34, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  br label %985

856:                                              ; preds = %852
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #9
  %857 = load ptr, ptr %15, align 8, !tbaa !5
  %858 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %857)
          to label %859 unwind label %865

859:                                              ; preds = %856
  store ptr %858, ptr %79, align 8, !tbaa !5
  br label %860

860:                                              ; preds = %980, %859
  %861 = load ptr, ptr %79, align 8, !tbaa !5
  %862 = load i8, ptr %78, align 1, !tbaa !11, !range !13, !noundef !14
  %863 = trunc i8 %862 to i1
  br i1 %863, label %869, label %864

864:                                              ; preds = %860
  store i32 37, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  br label %983

865:                                              ; preds = %856
  %866 = landingpad { ptr, i32 }
          cleanup
  %867 = extractvalue { ptr, i32 } %866, 0
  store ptr %867, ptr %11, align 8
  %868 = extractvalue { ptr, i32 } %866, 1
  store i32 %868, ptr %12, align 4
  br label %982

869:                                              ; preds = %860
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #9
  %870 = load ptr, ptr %6, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 0
  %872 = load ptr, ptr %871, align 8, !tbaa !35
  %873 = load ptr, ptr %7, align 8, !tbaa !5
  %874 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %870, ptr noundef nonnull align 8 dereferenceable(424) %872, ptr noundef nonnull align 8 dereferenceable(8) %873)
          to label %875 unwind label %887

875:                                              ; preds = %869
  store ptr %874, ptr %80, align 8, !tbaa !5
  br label %876

876:                                              ; preds = %875
  %877 = load ptr, ptr %80, align 8, !tbaa !5
  %878 = icmp ne ptr %877, null
  br i1 %878, label %904, label %879

879:                                              ; preds = %876
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #9
  %880 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %880)
          to label %881 unwind label %891

881:                                              ; preds = %879
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #9
  %882 = getelementptr inbounds %class.anon.280, ptr %83, i32 0, i32 0
  %883 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %883, ptr %882, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 8 dereferenceable(8) %83) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef %82)
          to label %884 unwind label %895

884:                                              ; preds = %881
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  %885 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %885, ptr noundef @.str.10)
          to label %886 unwind label %900

886:                                              ; preds = %884
  invoke void @__cxa_throw(ptr %885, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %887

887:                                              ; preds = %977, %938, %922, %886, %869
  %888 = landingpad { ptr, i32 }
          cleanup
  %889 = extractvalue { ptr, i32 } %888, 0
  store ptr %889, ptr %11, align 8
  %890 = extractvalue { ptr, i32 } %888, 1
  store i32 %890, ptr %12, align 4
  br label %981

891:                                              ; preds = %879
  %892 = landingpad { ptr, i32 }
          cleanup
  %893 = extractvalue { ptr, i32 } %892, 0
  store ptr %893, ptr %11, align 8
  %894 = extractvalue { ptr, i32 } %892, 1
  store i32 %894, ptr %12, align 4
  br label %899

895:                                              ; preds = %881
  %896 = landingpad { ptr, i32 }
          cleanup
  %897 = extractvalue { ptr, i32 } %896, 0
  store ptr %897, ptr %11, align 8
  %898 = extractvalue { ptr, i32 } %896, 1
  store i32 %898, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  br label %899

899:                                              ; preds = %895, %891
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  br label %981

900:                                              ; preds = %884
  %901 = landingpad { ptr, i32 }
          cleanup
  %902 = extractvalue { ptr, i32 } %901, 0
  store ptr %902, ptr %11, align 8
  %903 = extractvalue { ptr, i32 } %901, 1
  store i32 %903, ptr %12, align 4
  call void @__cxa_free_exception(ptr %885) #9
  br label %981

904:                                              ; preds = %876
  br label %905

905:                                              ; preds = %904
  br label %906

906:                                              ; preds = %905
  br label %907

907:                                              ; preds = %906
  %908 = load ptr, ptr %79, align 8, !tbaa !5
  %909 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %908) #9
  %910 = load ptr, ptr %80, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.TypeRepr, ptr %910, i32 0, i32 3
  %912 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %911) #9
  %913 = icmp eq i64 %909, %912
  br i1 %913, label %936, label %914

914:                                              ; preds = %907
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #9
  %915 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %915)
          to label %916 unwind label %923

916:                                              ; preds = %914
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #9
  %917 = getelementptr inbounds %class.anon.286, ptr %86, i32 0, i32 0
  %918 = load ptr, ptr %79, align 8, !tbaa !5
  store ptr %918, ptr %917, align 8, !tbaa !5
  %919 = getelementptr inbounds %class.anon.286, ptr %86, i32 0, i32 1
  store ptr %80, ptr %919, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(16) %86) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef %85)
          to label %920 unwind label %927

920:                                              ; preds = %916
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  %921 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %921, ptr noundef @.str.10)
          to label %922 unwind label %932

922:                                              ; preds = %920
  invoke void @__cxa_throw(ptr %921, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %887

923:                                              ; preds = %914
  %924 = landingpad { ptr, i32 }
          cleanup
  %925 = extractvalue { ptr, i32 } %924, 0
  store ptr %925, ptr %11, align 8
  %926 = extractvalue { ptr, i32 } %924, 1
  store i32 %926, ptr %12, align 4
  br label %931

927:                                              ; preds = %916
  %928 = landingpad { ptr, i32 }
          cleanup
  %929 = extractvalue { ptr, i32 } %928, 0
  store ptr %929, ptr %11, align 8
  %930 = extractvalue { ptr, i32 } %928, 1
  store i32 %930, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #9
  br label %931

931:                                              ; preds = %927, %923
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  br label %981

932:                                              ; preds = %920
  %933 = landingpad { ptr, i32 }
          cleanup
  %934 = extractvalue { ptr, i32 } %933, 0
  store ptr %934, ptr %11, align 8
  %935 = extractvalue { ptr, i32 } %933, 1
  store i32 %935, ptr %12, align 4
  call void @__cxa_free_exception(ptr %921) #9
  br label %981

936:                                              ; preds = %907
  br label %937

937:                                              ; preds = %936
  br label %938

938:                                              ; preds = %937
  %939 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %939, i8 noundef zeroext 0)
          to label %940 unwind label %887

940:                                              ; preds = %938
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #9
  store i32 0, ptr %87, align 4, !tbaa !46
  br label %941

941:                                              ; preds = %970, %940
  %942 = load i32, ptr %87, align 4, !tbaa !46
  %943 = zext i32 %942 to i64
  %944 = load ptr, ptr %79, align 8, !tbaa !5
  %945 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %944) #9
  %946 = icmp ult i64 %943, %945
  br i1 %946, label %948, label %947

947:                                              ; preds = %941
  store i32 44, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #9
  br label %977

948:                                              ; preds = %941
  %949 = load ptr, ptr %6, align 8, !tbaa !5
  %950 = load ptr, ptr %80, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.TypeRepr, ptr %950, i32 0, i32 3
  %952 = load i32, ptr %87, align 4, !tbaa !46
  %953 = zext i32 %952 to i64
  %954 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %951, i64 noundef %953) #9
  %955 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %954, i32 0, i32 0
  %956 = load i64, ptr %955, align 8, !tbaa !48
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %88, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %956)
          to label %957 unwind label %973

957:                                              ; preds = %948
  %958 = load ptr, ptr %80, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.TypeRepr, ptr %958, i32 0, i32 3
  %960 = load i32, ptr %87, align 4, !tbaa !46
  %961 = zext i32 %960 to i64
  %962 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %959, i64 noundef %961) #9
  %963 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %962, i32 0, i32 1
  invoke void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef nonnull align 8 dereferenceable(8) %949, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %88, ptr noundef nonnull align 8 dereferenceable(8) %963)
          to label %964 unwind label %973

964:                                              ; preds = %957
  %965 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  %966 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %965)
          to label %967 unwind label %973

967:                                              ; preds = %964
  %968 = load i8, ptr %966, align 1, !tbaa !51
  %969 = add i8 %968, 1
  store i8 %969, ptr %966, align 1, !tbaa !51
  br label %970

970:                                              ; preds = %967
  %971 = load i32, ptr %87, align 4, !tbaa !46
  %972 = add i32 %971, 1
  store i32 %972, ptr %87, align 4, !tbaa !46
  br label %941, !llvm.loop !52

973:                                              ; preds = %964, %957, %948
  %974 = landingpad { ptr, i32 }
          cleanup
  %975 = extractvalue { ptr, i32 } %974, 0
  store ptr %975, ptr %11, align 8
  %976 = extractvalue { ptr, i32 } %974, 1
  store i32 %976, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #9
  br label %981

977:                                              ; preds = %947
  %978 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %978)
          to label %979 unwind label %887

979:                                              ; preds = %977
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  br label %980

980:                                              ; preds = %979
  store i8 0, ptr %78, align 1, !tbaa !11
  br label %860, !llvm.loop !53

981:                                              ; preds = %973, %932, %931, %900, %899, %887
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  br label %982

982:                                              ; preds = %981, %865
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  br label %3001

983:                                              ; preds = %864
  br label %984

984:                                              ; preds = %983
  store i8 0, ptr %78, align 1, !tbaa !11
  br label %852, !llvm.loop !54

985:                                              ; preds = %855
  br label %2999

986:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #9
  store i8 1, ptr %89, align 1, !tbaa !11
  br label %987

987:                                              ; preds = %1637, %986
  %988 = load i8, ptr %89, align 1, !tbaa !11, !range !13, !noundef !14
  %989 = trunc i8 %988 to i1
  br i1 %989, label %991, label %990

990:                                              ; preds = %987
  store i32 47, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  br label %1638

991:                                              ; preds = %987
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #9
  %992 = load ptr, ptr %15, align 8, !tbaa !5
  %993 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %992)
          to label %994 unwind label %1000

994:                                              ; preds = %991
  store ptr %993, ptr %90, align 8, !tbaa !5
  br label %995

995:                                              ; preds = %1634, %994
  %996 = load ptr, ptr %90, align 8, !tbaa !5
  %997 = load i8, ptr %89, align 1, !tbaa !11, !range !13, !noundef !14
  %998 = trunc i8 %997 to i1
  br i1 %998, label %1004, label %999

999:                                              ; preds = %995
  store i32 50, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  br label %1636

1000:                                             ; preds = %991
  %1001 = landingpad { ptr, i32 }
          cleanup
  %1002 = extractvalue { ptr, i32 } %1001, 0
  store ptr %1002, ptr %11, align 8
  %1003 = extractvalue { ptr, i32 } %1001, 1
  store i32 %1003, ptr %12, align 4
  br label %1635

1004:                                             ; preds = %995
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #9
  store i8 1, ptr %91, align 1, !tbaa !11
  br label %1005

1005:                                             ; preds = %1632, %1004
  %1006 = load i8, ptr %91, align 1, !tbaa !11, !range !13, !noundef !14
  %1007 = trunc i8 %1006 to i1
  br i1 %1007, label %1009, label %1008

1008:                                             ; preds = %1005
  store i32 53, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #9
  br label %1633

1009:                                             ; preds = %1005
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #9
  %1010 = load ptr, ptr %90, align 8, !tbaa !5
  %1011 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1010, i32 0, i32 1
  store ptr %1011, ptr %92, align 8, !tbaa !5
  br label %1012

1012:                                             ; preds = %1629, %1009
  %1013 = load i8, ptr %91, align 1, !tbaa !11, !range !13, !noundef !14
  %1014 = trunc i8 %1013 to i1
  br i1 %1014, label %1016, label %1015

1015:                                             ; preds = %1012
  store i32 56, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  br label %1631

1016:                                             ; preds = %1012
  %1017 = load ptr, ptr %92, align 8, !tbaa !5
  %1018 = invoke noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %1017)
          to label %1019 unwind label %1020

1019:                                             ; preds = %1016
  switch i32 %1018, label %1628 [
    i32 0, label %1024
    i32 1, label %1025
    i32 2, label %1072
    i32 4, label %1129
    i32 3, label %1230
    i32 5, label %1281
    i32 6, label %1332
  ]

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

1024:                                             ; preds = %1019
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 987, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE) #10
  unreachable

1025:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #9
  store i8 1, ptr %93, align 1, !tbaa !11
  br label %1026

1026:                                             ; preds = %1070, %1025
  %1027 = load i8, ptr %93, align 1, !tbaa !11, !range !13, !noundef !14
  %1028 = trunc i8 %1027 to i1
  br i1 %1028, label %1030, label %1029

1029:                                             ; preds = %1026
  store i32 60, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #9
  br label %1071

1030:                                             ; preds = %1026
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #9
  %1031 = load ptr, ptr %92, align 8, !tbaa !5
  %1032 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %1031)
          to label %1033 unwind label %1039

1033:                                             ; preds = %1030
  store ptr %1032, ptr %94, align 8, !tbaa !5
  br label %1034

1034:                                             ; preds = %1067, %1033
  %1035 = load ptr, ptr %94, align 8, !tbaa !5
  %1036 = load i8, ptr %93, align 1, !tbaa !11, !range !13, !noundef !14
  %1037 = trunc i8 %1036 to i1
  br i1 %1037, label %1043, label %1038

1038:                                             ; preds = %1034
  store i32 63, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  br label %1069

1039:                                             ; preds = %1051, %1030
  %1040 = landingpad { ptr, i32 }
          cleanup
  %1041 = extractvalue { ptr, i32 } %1040, 0
  store ptr %1041, ptr %11, align 8
  %1042 = extractvalue { ptr, i32 } %1040, 1
  store i32 %1042, ptr %12, align 4
  br label %1068

1043:                                             ; preds = %1034
  br label %1044

1044:                                             ; preds = %1043
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #9
  %1045 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(8) %1045)
          to label %1046 unwind label %1052

1046:                                             ; preds = %1044
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #9
  %1047 = getelementptr inbounds %class.anon.287, ptr %97, i32 0, i32 0
  %1048 = load ptr, ptr %90, align 8, !tbaa !5
  store ptr %1048, ptr %1047, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 8 dereferenceable(8) %97) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef %96)
          to label %1049 unwind label %1056

1049:                                             ; preds = %1046
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #9
  %1050 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1050, ptr noundef @.str.10)
          to label %1051 unwind label %1061

1051:                                             ; preds = %1049
  invoke void @__cxa_throw(ptr %1050, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1039

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

1056:                                             ; preds = %1046
  %1057 = landingpad { ptr, i32 }
          cleanup
  %1058 = extractvalue { ptr, i32 } %1057, 0
  store ptr %1058, ptr %11, align 8
  %1059 = extractvalue { ptr, i32 } %1057, 1
  store i32 %1059, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #9
  br label %1060

1060:                                             ; preds = %1056, %1052
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #9
  br label %1068

1061:                                             ; preds = %1049
  %1062 = landingpad { ptr, i32 }
          cleanup
  %1063 = extractvalue { ptr, i32 } %1062, 0
  store ptr %1063, ptr %11, align 8
  %1064 = extractvalue { ptr, i32 } %1062, 1
  store i32 %1064, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1050) #9
  br label %1068

1065:                                             ; No predecessors!
  br label %1066

1066:                                             ; preds = %1065
  br label %1067

1067:                                             ; preds = %1066
  store i8 0, ptr %93, align 1, !tbaa !11
  br label %1034, !llvm.loop !55

1068:                                             ; preds = %1061, %1060, %1039
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #9
  br label %1630

1069:                                             ; preds = %1038
  br label %1070

1070:                                             ; preds = %1069
  store i8 0, ptr %93, align 1, !tbaa !11
  br label %1026, !llvm.loop !56

1071:                                             ; preds = %1029
  br label %1628

1072:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 1, ptr %98) #9
  store i8 1, ptr %98, align 1, !tbaa !11
  br label %1073

1073:                                             ; preds = %1127, %1072
  %1074 = load i8, ptr %98, align 1, !tbaa !11, !range !13, !noundef !14
  %1075 = trunc i8 %1074 to i1
  br i1 %1075, label %1077, label %1076

1076:                                             ; preds = %1073
  store i32 68, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #9
  br label %1128

1077:                                             ; preds = %1073
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #9
  %1078 = load ptr, ptr %92, align 8, !tbaa !5
  %1079 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %1078)
          to label %1080 unwind label %1086

1080:                                             ; preds = %1077
  store ptr %1079, ptr %99, align 8, !tbaa !5
  br label %1081

1081:                                             ; preds = %1120, %1080
  %1082 = load ptr, ptr %99, align 8, !tbaa !5
  %1083 = load i8, ptr %98, align 1, !tbaa !11, !range !13, !noundef !14
  %1084 = trunc i8 %1083 to i1
  br i1 %1084, label %1090, label %1085

1085:                                             ; preds = %1081
  store i32 71, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  br label %1126

1086:                                             ; preds = %1117, %1077
  %1087 = landingpad { ptr, i32 }
          cleanup
  %1088 = extractvalue { ptr, i32 } %1087, 0
  store ptr %1088, ptr %11, align 8
  %1089 = extractvalue { ptr, i32 } %1087, 1
  store i32 %1089, ptr %12, align 4
  br label %1125

1090:                                             ; preds = %1081
  br label %1091

1091:                                             ; preds = %1090
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #9
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #9
  %1092 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %1092)
          to label %1093 unwind label %1098

1093:                                             ; preds = %1091
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #9
  %1094 = getelementptr inbounds %class.anon.288, ptr %103, i32 0, i32 0
  store ptr %100, ptr %1094, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(8) %103) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef %102)
          to label %1095 unwind label %1102

1095:                                             ; preds = %1093
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  %1096 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1096, ptr noundef @.str.5)
          to label %1097 unwind label %1107

1097:                                             ; preds = %1095
  invoke void @__cxa_throw(ptr %1096, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1111

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

1102:                                             ; preds = %1093
  %1103 = landingpad { ptr, i32 }
          cleanup
  %1104 = extractvalue { ptr, i32 } %1103, 0
  store ptr %1104, ptr %11, align 8
  %1105 = extractvalue { ptr, i32 } %1103, 1
  store i32 %1105, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #9
  br label %1106

1106:                                             ; preds = %1102, %1098
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  br label %1115

1107:                                             ; preds = %1095
  %1108 = landingpad { ptr, i32 }
          cleanup
  %1109 = extractvalue { ptr, i32 } %1108, 0
  store ptr %1109, ptr %11, align 8
  %1110 = extractvalue { ptr, i32 } %1108, 1
  store i32 %1110, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1096) #9
  br label %1115

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

1115:                                             ; preds = %1111, %1107, %1106
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #9
  br label %1125

1116:                                             ; No predecessors!
  br label %1117

1117:                                             ; preds = %1116
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %104)
          to label %1118 unwind label %1086

1118:                                             ; preds = %1117
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %104)
          to label %1119 unwind label %1121

1119:                                             ; preds = %1118
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %104) #9
  br label %1120

1120:                                             ; preds = %1119
  store i8 0, ptr %98, align 1, !tbaa !11
  br label %1081, !llvm.loop !57

1121:                                             ; preds = %1118
  %1122 = landingpad { ptr, i32 }
          cleanup
  %1123 = extractvalue { ptr, i32 } %1122, 0
  store ptr %1123, ptr %11, align 8
  %1124 = extractvalue { ptr, i32 } %1122, 1
  store i32 %1124, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %104) #9
  br label %1125

1125:                                             ; preds = %1121, %1115, %1086
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %98) #9
  br label %1630

1126:                                             ; preds = %1085
  br label %1127

1127:                                             ; preds = %1126
  store i8 0, ptr %98, align 1, !tbaa !11
  br label %1073, !llvm.loop !58

1128:                                             ; preds = %1076
  br label %1628

1129:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #9
  store i8 1, ptr %106, align 1, !tbaa !11
  br label %1130

1130:                                             ; preds = %1228, %1129
  %1131 = load i8, ptr %106, align 1, !tbaa !11, !range !13, !noundef !14
  %1132 = trunc i8 %1131 to i1
  br i1 %1132, label %1134, label %1133

1133:                                             ; preds = %1130
  store i32 76, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #9
  br label %1229

1134:                                             ; preds = %1130
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #9
  %1135 = load ptr, ptr %92, align 8, !tbaa !5
  %1136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1135)
          to label %1137 unwind label %1143

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

1138:                                             ; preds = %1224, %1137
  %1139 = load ptr, ptr %107, align 8, !tbaa !5
  %1140 = load i8, ptr %106, align 1, !tbaa !11, !range !13, !noundef !14
  %1141 = trunc i8 %1140 to i1
  br i1 %1141, label %1147, label %1142

1142:                                             ; preds = %1138
  store i32 79, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #9
  br label %1227

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

1147:                                             ; preds = %1138
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #9
  %1148 = load ptr, ptr %6, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 0
  %1150 = load ptr, ptr %1149, align 8, !tbaa !35
  %1151 = load ptr, ptr %7, align 8, !tbaa !5
  %1152 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1148, ptr noundef nonnull align 8 dereferenceable(424) %1150, ptr noundef nonnull align 8 dereferenceable(8) %1151)
          to label %1153 unwind label %1165

1153:                                             ; preds = %1147
  store ptr %1152, ptr %108, align 8, !tbaa !5
  br label %1154

1154:                                             ; preds = %1153
  %1155 = load ptr, ptr %108, align 8, !tbaa !5
  %1156 = icmp ne ptr %1155, null
  br i1 %1156, label %1182, label %1157

1157:                                             ; preds = %1154
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #9
  %1158 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %1158)
          to label %1159 unwind label %1169

1159:                                             ; preds = %1157
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #9
  %1160 = getelementptr inbounds %class.anon.289, ptr %111, i32 0, i32 0
  %1161 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1161, ptr %1160, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 8 dereferenceable(8) %111) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef %110)
          to label %1162 unwind label %1173

1162:                                             ; preds = %1159
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #9
  %1163 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1163, ptr noundef @.str.10)
          to label %1164 unwind label %1178

1164:                                             ; preds = %1162
  invoke void @__cxa_throw(ptr %1163, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1165

1165:                                             ; preds = %1221, %1184, %1164, %1147
  %1166 = landingpad { ptr, i32 }
          cleanup
  %1167 = extractvalue { ptr, i32 } %1166, 0
  store ptr %1167, ptr %11, align 8
  %1168 = extractvalue { ptr, i32 } %1166, 1
  store i32 %1168, ptr %12, align 4
  br label %1225

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

1173:                                             ; preds = %1159
  %1174 = landingpad { ptr, i32 }
          cleanup
  %1175 = extractvalue { ptr, i32 } %1174, 0
  store ptr %1175, ptr %11, align 8
  %1176 = extractvalue { ptr, i32 } %1174, 1
  store i32 %1176, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #9
  br label %1177

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

1178:                                             ; preds = %1162
  %1179 = landingpad { ptr, i32 }
          cleanup
  %1180 = extractvalue { ptr, i32 } %1179, 0
  store ptr %1180, ptr %11, align 8
  %1181 = extractvalue { ptr, i32 } %1179, 1
  store i32 %1181, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1163) #9
  br label %1225

1182:                                             ; preds = %1154
  br label %1183

1183:                                             ; preds = %1182
  br label %1184

1184:                                             ; preds = %1183
  %1185 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %1185, i8 noundef zeroext 0)
          to label %1186 unwind label %1165

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

1187:                                             ; preds = %1214, %1186
  %1188 = load i64, ptr %112, align 8, !tbaa !59
  %1189 = load ptr, ptr %108, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.TypeRepr, ptr %1189, i32 0, i32 3
  %1191 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1190) #9
  %1192 = icmp ult i64 %1188, %1191
  br i1 %1192, label %1194, label %1193

1193:                                             ; preds = %1187
  store i32 84, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  br label %1221

1194:                                             ; preds = %1187
  %1195 = load ptr, ptr %6, align 8, !tbaa !5
  %1196 = load ptr, ptr %108, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct.TypeRepr, ptr %1196, i32 0, i32 3
  %1198 = load i64, ptr %112, align 8, !tbaa !59
  %1199 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1197, i64 noundef %1198) #9
  %1200 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1199, i32 0, i32 0
  %1201 = load i64, ptr %1200, align 8, !tbaa !48
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %113, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %1201)
          to label %1202 unwind label %1217

1202:                                             ; preds = %1194
  %1203 = load ptr, ptr %108, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct.TypeRepr, ptr %1203, i32 0, i32 3
  %1205 = load i64, ptr %112, align 8, !tbaa !59
  %1206 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1204, i64 noundef %1205) #9
  %1207 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1206, i32 0, i32 1
  invoke void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef nonnull align 8 dereferenceable(8) %1195, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %113, ptr noundef nonnull align 8 dereferenceable(8) %1207)
          to label %1208 unwind label %1217

1208:                                             ; preds = %1202
  %1209 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  %1210 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1209)
          to label %1211 unwind label %1217

1211:                                             ; preds = %1208
  %1212 = load i8, ptr %1210, align 1, !tbaa !51
  %1213 = add i8 %1212, 1
  store i8 %1213, ptr %1210, align 1, !tbaa !51
  br label %1214

1214:                                             ; preds = %1211
  %1215 = load i64, ptr %112, align 8, !tbaa !59
  %1216 = add i64 %1215, 1
  store i64 %1216, ptr %112, align 8, !tbaa !59
  br label %1187, !llvm.loop !60

1217:                                             ; preds = %1208, %1202, %1194
  %1218 = landingpad { ptr, i32 }
          cleanup
  %1219 = extractvalue { ptr, i32 } %1218, 0
  store ptr %1219, ptr %11, align 8
  %1220 = extractvalue { ptr, i32 } %1218, 1
  store i32 %1220, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  br label %1225

1221:                                             ; preds = %1193
  %1222 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %1222)
          to label %1223 unwind label %1165

1223:                                             ; preds = %1221
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #9
  br label %1224

1224:                                             ; preds = %1223
  store i8 0, ptr %106, align 1, !tbaa !11
  br label %1138, !llvm.loop !61

1225:                                             ; preds = %1217, %1178, %1177, %1165
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #9
  br label %1226

1226:                                             ; preds = %1225, %1143
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #9
  br label %1630

1227:                                             ; preds = %1142
  br label %1228

1228:                                             ; preds = %1227
  store i8 0, ptr %106, align 1, !tbaa !11
  br label %1130, !llvm.loop !62

1229:                                             ; preds = %1133
  br label %1628

1230:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #9
  store i8 1, ptr %114, align 1, !tbaa !11
  br label %1231

1231:                                             ; preds = %1279, %1230
  %1232 = load i8, ptr %114, align 1, !tbaa !11, !range !13, !noundef !14
  %1233 = trunc i8 %1232 to i1
  br i1 %1233, label %1235, label %1234

1234:                                             ; preds = %1231
  store i32 87, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #9
  br label %1280

1235:                                             ; preds = %1231
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #9
  %1236 = load ptr, ptr %92, align 8, !tbaa !5
  %1237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %1236)
          to label %1238 unwind label %1244

1238:                                             ; preds = %1235
  store ptr %1237, ptr %115, align 8, !tbaa !5
  br label %1239

1239:                                             ; preds = %1276, %1238
  %1240 = load ptr, ptr %115, align 8, !tbaa !5
  %1241 = load i8, ptr %114, align 1, !tbaa !11, !range !13, !noundef !14
  %1242 = trunc i8 %1241 to i1
  br i1 %1242, label %1248, label %1243

1243:                                             ; preds = %1239
  store i32 90, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #9
  br label %1278

1244:                                             ; preds = %1235
  %1245 = landingpad { ptr, i32 }
          cleanup
  %1246 = extractvalue { ptr, i32 } %1245, 0
  store ptr %1246, ptr %11, align 8
  %1247 = extractvalue { ptr, i32 } %1245, 1
  store i32 %1247, ptr %12, align 4
  br label %1277

1248:                                             ; preds = %1239
  br label %1249

1249:                                             ; preds = %1248
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #9
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %116, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #9
  %1250 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef nonnull align 8 dereferenceable(8) %1250)
          to label %1251 unwind label %1256

1251:                                             ; preds = %1249
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #9
  %1252 = getelementptr inbounds %class.anon.290, ptr %119, i32 0, i32 0
  store ptr %116, ptr %1252, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull align 8 dereferenceable(8) %119) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef %118)
          to label %1253 unwind label %1260

1253:                                             ; preds = %1251
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #9
  %1254 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1254, ptr noundef @.str.5)
          to label %1255 unwind label %1265

1255:                                             ; preds = %1253
  invoke void @__cxa_throw(ptr %1254, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1269

1256:                                             ; preds = %1249
  %1257 = landingpad { ptr, i32 }
          cleanup
  %1258 = extractvalue { ptr, i32 } %1257, 0
  store ptr %1258, ptr %11, align 8
  %1259 = extractvalue { ptr, i32 } %1257, 1
  store i32 %1259, ptr %12, align 4
  br label %1264

1260:                                             ; preds = %1251
  %1261 = landingpad { ptr, i32 }
          cleanup
  %1262 = extractvalue { ptr, i32 } %1261, 0
  store ptr %1262, ptr %11, align 8
  %1263 = extractvalue { ptr, i32 } %1261, 1
  store i32 %1263, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #9
  br label %1264

1264:                                             ; preds = %1260, %1256
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #9
  br label %1273

1265:                                             ; preds = %1253
  %1266 = landingpad { ptr, i32 }
          cleanup
  %1267 = extractvalue { ptr, i32 } %1266, 0
  store ptr %1267, ptr %11, align 8
  %1268 = extractvalue { ptr, i32 } %1266, 1
  store i32 %1268, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1254) #9
  br label %1273

1269:                                             ; preds = %1255
  %1270 = landingpad { ptr, i32 }
          cleanup
  %1271 = extractvalue { ptr, i32 } %1270, 0
  store ptr %1271, ptr %11, align 8
  %1272 = extractvalue { ptr, i32 } %1270, 1
  store i32 %1272, ptr %12, align 4
  br label %1273

1273:                                             ; preds = %1269, %1265, %1264
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #9
  br label %1277

1274:                                             ; No predecessors!
  br label %1275

1275:                                             ; preds = %1274
  br label %1276

1276:                                             ; preds = %1275
  store i8 0, ptr %114, align 1, !tbaa !11
  br label %1239, !llvm.loop !63

1277:                                             ; preds = %1273, %1244
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #9
  br label %1630

1278:                                             ; preds = %1243
  br label %1279

1279:                                             ; preds = %1278
  store i8 0, ptr %114, align 1, !tbaa !11
  br label %1231, !llvm.loop !64

1280:                                             ; preds = %1234
  br label %1628

1281:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 1, ptr %120) #9
  store i8 1, ptr %120, align 1, !tbaa !11
  br label %1282

1282:                                             ; preds = %1330, %1281
  %1283 = load i8, ptr %120, align 1, !tbaa !11, !range !13, !noundef !14
  %1284 = trunc i8 %1283 to i1
  br i1 %1284, label %1286, label %1285

1285:                                             ; preds = %1282
  store i32 95, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #9
  br label %1331

1286:                                             ; preds = %1282
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #9
  %1287 = load ptr, ptr %92, align 8, !tbaa !5
  %1288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %1287)
          to label %1289 unwind label %1295

1289:                                             ; preds = %1286
  store ptr %1288, ptr %121, align 8, !tbaa !5
  br label %1290

1290:                                             ; preds = %1327, %1289
  %1291 = load ptr, ptr %121, align 8, !tbaa !5
  %1292 = load i8, ptr %120, align 1, !tbaa !11, !range !13, !noundef !14
  %1293 = trunc i8 %1292 to i1
  br i1 %1293, label %1299, label %1294

1294:                                             ; preds = %1290
  store i32 98, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #9
  br label %1329

1295:                                             ; preds = %1286
  %1296 = landingpad { ptr, i32 }
          cleanup
  %1297 = extractvalue { ptr, i32 } %1296, 0
  store ptr %1297, ptr %11, align 8
  %1298 = extractvalue { ptr, i32 } %1296, 1
  store i32 %1298, ptr %12, align 4
  br label %1328

1299:                                             ; preds = %1290
  br label %1300

1300:                                             ; preds = %1299
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #9
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #9
  %1301 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull align 8 dereferenceable(8) %1301)
          to label %1302 unwind label %1307

1302:                                             ; preds = %1300
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #9
  %1303 = getelementptr inbounds %class.anon.291, ptr %125, i32 0, i32 0
  store ptr %122, ptr %1303, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull align 8 dereferenceable(8) %125) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef %124)
          to label %1304 unwind label %1311

1304:                                             ; preds = %1302
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  %1305 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1305, ptr noundef @.str.5)
          to label %1306 unwind label %1316

1306:                                             ; preds = %1304
  invoke void @__cxa_throw(ptr %1305, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1320

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

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

1315:                                             ; preds = %1311, %1307
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  br label %1324

1316:                                             ; preds = %1304
  %1317 = landingpad { ptr, i32 }
          cleanup
  %1318 = extractvalue { ptr, i32 } %1317, 0
  store ptr %1318, ptr %11, align 8
  %1319 = extractvalue { ptr, i32 } %1317, 1
  store i32 %1319, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1305) #9
  br label %1324

1320:                                             ; preds = %1306
  %1321 = landingpad { ptr, i32 }
          cleanup
  %1322 = extractvalue { ptr, i32 } %1321, 0
  store ptr %1322, ptr %11, align 8
  %1323 = extractvalue { ptr, i32 } %1321, 1
  store i32 %1323, ptr %12, align 4
  br label %1324

1324:                                             ; preds = %1320, %1316, %1315
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  br label %1328

1325:                                             ; No predecessors!
  br label %1326

1326:                                             ; preds = %1325
  br label %1327

1327:                                             ; preds = %1326
  store i8 0, ptr %120, align 1, !tbaa !11
  br label %1290, !llvm.loop !65

1328:                                             ; preds = %1324, %1295
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #9
  br label %1630

1329:                                             ; preds = %1294
  br label %1330

1330:                                             ; preds = %1329
  store i8 0, ptr %120, align 1, !tbaa !11
  br label %1282, !llvm.loop !66

1331:                                             ; preds = %1285
  br label %1628

1332:                                             ; preds = %1019
  call void @llvm.lifetime.start.p0(i64 1, ptr %126) #9
  store i8 1, ptr %126, align 1, !tbaa !11
  br label %1333

1333:                                             ; preds = %1626, %1332
  %1334 = load i8, ptr %126, align 1, !tbaa !11, !range !13, !noundef !14
  %1335 = trunc i8 %1334 to i1
  br i1 %1335, label %1337, label %1336

1336:                                             ; preds = %1333
  store i32 103, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #9
  br label %1627

1337:                                             ; preds = %1333
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #9
  %1338 = load ptr, ptr %92, align 8, !tbaa !5
  %1339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %1338)
          to label %1340 unwind label %1346

1340:                                             ; preds = %1337
  store ptr %1339, ptr %127, align 8, !tbaa !5
  br label %1341

1341:                                             ; preds = %1610, %1340
  %1342 = load ptr, ptr %127, align 8, !tbaa !5
  %1343 = load i8, ptr %126, align 1, !tbaa !11, !range !13, !noundef !14
  %1344 = trunc i8 %1343 to i1
  br i1 %1344, label %1350, label %1345

1345:                                             ; preds = %1341
  store i32 106, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #9
  br label %1625

1346:                                             ; preds = %1337
  %1347 = landingpad { ptr, i32 }
          cleanup
  %1348 = extractvalue { ptr, i32 } %1347, 0
  store ptr %1348, ptr %11, align 8
  %1349 = extractvalue { ptr, i32 } %1347, 1
  store i32 %1349, ptr %12, align 4
  br label %1624

1350:                                             ; preds = %1341
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #9
  %1351 = load ptr, ptr %6, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 0
  %1353 = load ptr, ptr %1352, align 8, !tbaa !35
  %1354 = load ptr, ptr %7, align 8, !tbaa !5
  %1355 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1351, ptr noundef nonnull align 8 dereferenceable(424) %1353, ptr noundef nonnull align 8 dereferenceable(8) %1354)
          to label %1356 unwind label %1368

1356:                                             ; preds = %1350
  store ptr %1355, ptr %128, align 8, !tbaa !5
  br label %1357

1357:                                             ; preds = %1356
  %1358 = load ptr, ptr %128, align 8, !tbaa !5
  %1359 = icmp ne ptr %1358, null
  br i1 %1359, label %1385, label %1360

1360:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #9
  %1361 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull align 8 dereferenceable(8) %1361)
          to label %1362 unwind label %1372

1362:                                             ; preds = %1360
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #9
  %1363 = getelementptr inbounds %class.anon.292, ptr %131, i32 0, i32 0
  %1364 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1364, ptr %1363, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef nonnull align 8 dereferenceable(8) %131) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef %130)
          to label %1365 unwind label %1376

1365:                                             ; preds = %1362
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #9
  %1366 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1366, ptr noundef @.str.10)
          to label %1367 unwind label %1381

1367:                                             ; preds = %1365
  invoke void @__cxa_throw(ptr %1366, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1368

1368:                                             ; preds = %1367, %1350
  %1369 = landingpad { ptr, i32 }
          cleanup
  %1370 = extractvalue { ptr, i32 } %1369, 0
  store ptr %1370, ptr %11, align 8
  %1371 = extractvalue { ptr, i32 } %1369, 1
  store i32 %1371, ptr %12, align 4
  br label %1623

1372:                                             ; preds = %1360
  %1373 = landingpad { ptr, i32 }
          cleanup
  %1374 = extractvalue { ptr, i32 } %1373, 0
  store ptr %1374, ptr %11, align 8
  %1375 = extractvalue { ptr, i32 } %1373, 1
  store i32 %1375, ptr %12, align 4
  br label %1380

1376:                                             ; preds = %1362
  %1377 = landingpad { ptr, i32 }
          cleanup
  %1378 = extractvalue { ptr, i32 } %1377, 0
  store ptr %1378, ptr %11, align 8
  %1379 = extractvalue { ptr, i32 } %1377, 1
  store i32 %1379, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #9
  br label %1380

1380:                                             ; preds = %1376, %1372
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #9
  br label %1623

1381:                                             ; preds = %1365
  %1382 = landingpad { ptr, i32 }
          cleanup
  %1383 = extractvalue { ptr, i32 } %1382, 0
  store ptr %1383, ptr %11, align 8
  %1384 = extractvalue { ptr, i32 } %1382, 1
  store i32 %1384, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1366) #9
  br label %1623

1385:                                             ; preds = %1357
  br label %1386

1386:                                             ; preds = %1385
  br label %1387

1387:                                             ; preds = %1386
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #9
  %1388 = load ptr, ptr %128, align 8, !tbaa !5
  %1389 = load ptr, ptr %6, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 0
  %1391 = load ptr, ptr %1390, align 8, !tbaa !35
  %1392 = invoke i64 @_ZNK8TypeRepr16get_enum_variantERK4SpanRK18StaticTraitResolveRK19EncodedLiteralSlice(ptr noundef nonnull align 8 dereferenceable(112) %1388, ptr noundef nonnull align 8 dereferenceable(8) %1389, ptr noundef nonnull align 8 dereferenceable(424) %1391, ptr noundef nonnull align 8 dereferenceable(24) %2)
          to label %1393 unwind label %1468

1393:                                             ; preds = %1387
  %1394 = trunc i64 %1392 to i40
  store i40 %1394, ptr %132, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #9
  %1395 = getelementptr inbounds %"struct.std::pair.293", ptr %132, i32 0, i32 0
  %1396 = load i32, ptr %1395, align 4, !tbaa !67
  store i32 %1396, ptr %133, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #9
  %1397 = getelementptr inbounds %"struct.std::pair.293", ptr %132, i32 0, i32 1
  %1398 = load i8, ptr %1397, align 4, !tbaa !69, !range !13, !noundef !14
  %1399 = trunc i8 %1398 to i1
  %1400 = zext i1 %1399 to i8
  store i8 %1400, ptr %134, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 80, ptr %135) #9
  %1401 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 0
  %1402 = load ptr, ptr %1401, align 8, !tbaa !35
  invoke void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80) %135, ptr noundef nonnull align 8 dereferenceable(424) %1402)
          to label %1403 unwind label %1472

1403:                                             ; preds = %1393
  %1404 = load ptr, ptr %128, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.TypeRepr, ptr %1404, i32 0, i32 3
  %1406 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1405) #9
  %1407 = icmp ugt i64 %1406, 1
  br i1 %1407, label %1413, label %1408

1408:                                             ; preds = %1403
  %1409 = load ptr, ptr %128, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.TypeRepr, ptr %1409, i32 0, i32 2
  %1411 = invoke noundef zeroext i1 @_ZNK8TypeRepr11VariantMode7is_NoneEv(ptr noundef nonnull align 8 dereferenceable(72) %1410)
          to label %1412 unwind label %1476

1412:                                             ; preds = %1408
  br i1 %1411, label %1413, label %1575

1413:                                             ; preds = %1412, %1403
  %1414 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  %1415 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %135, i32 0, i32 5
  %1416 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12field_path_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %1415, ptr noundef nonnull align 8 dereferenceable(24) %1414)
          to label %1417 unwind label %1476

1417:                                             ; preds = %1413
  %1418 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %135, i32 0, i32 5
  %1419 = load i32, ptr %133, align 4, !tbaa !46
  %1420 = trunc i32 %1419 to i8
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %1418, i8 noundef zeroext %1420)
          to label %1421 unwind label %1476

1421:                                             ; preds = %1417
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #9
  %1422 = load ptr, ptr %128, align 8, !tbaa !5
  %1423 = getelementptr inbounds %struct.TypeRepr, ptr %1422, i32 0, i32 3
  %1424 = load i32, ptr %133, align 4, !tbaa !46
  %1425 = zext i32 %1424 to i64
  %1426 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1423, i64 noundef %1425) #9
  %1427 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1426, i32 0, i32 1
  store ptr %1427, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %137) #9
  %1428 = load ptr, ptr %128, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.TypeRepr, ptr %1428, i32 0, i32 3
  %1430 = load i32, ptr %133, align 4, !tbaa !46
  %1431 = zext i32 %1430 to i64
  %1432 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1429, i64 noundef %1431) #9
  %1433 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1432, i32 0, i32 0
  %1434 = load i64, ptr %1433, align 8, !tbaa !48
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %137, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %1434)
          to label %1435 unwind label %1480

1435:                                             ; preds = %1421
  %1436 = load i8, ptr %134, align 1, !tbaa !11, !range !13, !noundef !14
  %1437 = trunc i8 %1436 to i1
  store i1 false, ptr %139, align 1
  store i1 false, ptr %140, align 1
  br i1 %1437, label %1438, label %1443

1438:                                             ; preds = %1435
  %1439 = load ptr, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #9
  store i1 true, ptr %139, align 1
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %138)
          to label %1440 unwind label %1484

1440:                                             ; preds = %1438
  store i1 true, ptr %140, align 1
  %1441 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1439, ptr noundef nonnull align 8 dereferenceable(8) %138)
          to label %1442 unwind label %1488

1442:                                             ; preds = %1440
  br label %1443

1443:                                             ; preds = %1442, %1435
  %1444 = phi i1 [ false, %1435 ], [ %1441, %1442 ]
  %1445 = load i1, ptr %140, align 1
  br i1 %1445, label %1446, label %1447

1446:                                             ; preds = %1443
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #9
  br label %1447

1447:                                             ; preds = %1446, %1443
  %1448 = load i1, ptr %139, align 1
  br i1 %1448, label %1449, label %1450

1449:                                             ; preds = %1447
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #9
  br label %1450

1450:                                             ; preds = %1449, %1447
  br i1 %1444, label %1451, label %1569

1451:                                             ; preds = %1450
  br label %1452

1452:                                             ; preds = %1451
  %1453 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1454 unwind label %1480

1454:                                             ; preds = %1452
  br i1 %1453, label %1455, label %1499

1455:                                             ; preds = %1454
  %1456 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !46
  %1457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1456, ptr noundef @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE)
          to label %1458 unwind label %1480

1458:                                             ; preds = %1455
  %1459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1457, ptr noundef @.str.56)
          to label %1460 unwind label %1480

1460:                                             ; preds = %1458
  %1461 = load ptr, ptr %136, align 8, !tbaa !5
  %1462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1459, ptr noundef nonnull align 8 dereferenceable(8) %1461)
          to label %1463 unwind label %1480

1463:                                             ; preds = %1460
  %1464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1462, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1465 unwind label %1480

1465:                                             ; preds = %1463
  %1466 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1464, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1467 unwind label %1480

1467:                                             ; preds = %1465
  br label %1499

1468:                                             ; preds = %1387
  %1469 = landingpad { ptr, i32 }
          cleanup
  %1470 = extractvalue { ptr, i32 } %1469, 0
  store ptr %1470, ptr %11, align 8
  %1471 = extractvalue { ptr, i32 } %1469, 1
  store i32 %1471, ptr %12, align 4
  br label %1622

1472:                                             ; preds = %1393
  %1473 = landingpad { ptr, i32 }
          cleanup
  %1474 = extractvalue { ptr, i32 } %1473, 0
  store ptr %1474, ptr %11, align 8
  %1475 = extractvalue { ptr, i32 } %1473, 1
  store i32 %1475, ptr %12, align 4
  br label %1621

1476:                                             ; preds = %1585, %1417, %1413, %1408
  %1477 = landingpad { ptr, i32 }
          cleanup
  %1478 = extractvalue { ptr, i32 } %1477, 0
  store ptr %1478, ptr %11, align 8
  %1479 = extractvalue { ptr, i32 } %1477, 1
  store i32 %1479, ptr %12, align 4
  br label %1620

1480:                                             ; preds = %1569, %1465, %1463, %1460, %1458, %1455, %1452, %1421
  %1481 = landingpad { ptr, i32 }
          cleanup
  %1482 = extractvalue { ptr, i32 } %1481, 0
  store ptr %1482, ptr %11, align 8
  %1483 = extractvalue { ptr, i32 } %1481, 1
  store i32 %1483, ptr %12, align 4
  br label %1574

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

1488:                                             ; preds = %1440
  %1489 = landingpad { ptr, i32 }
          cleanup
  %1490 = extractvalue { ptr, i32 } %1489, 0
  store ptr %1490, ptr %11, align 8
  %1491 = extractvalue { ptr, i32 } %1489, 1
  store i32 %1491, ptr %12, align 4
  %1492 = load i1, ptr %140, align 1
  br i1 %1492, label %1493, label %1494

1493:                                             ; preds = %1488
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %138) #9
  br label %1494

1494:                                             ; preds = %1493, %1488
  br label %1495

1495:                                             ; preds = %1494, %1484
  %1496 = load i1, ptr %139, align 1
  br i1 %1496, label %1497, label %1498

1497:                                             ; preds = %1495
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #9
  br label %1498

1498:                                             ; preds = %1497, %1495
  br label %1574

1499:                                             ; preds = %1467, %1454
  br label %1500

1500:                                             ; preds = %1499
  br label %1501

1501:                                             ; preds = %1500
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #9
  %1502 = load ptr, ptr %6, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 0
  %1504 = load ptr, ptr %1503, align 8, !tbaa !35
  %1505 = load ptr, ptr %136, align 8, !tbaa !5
  %1506 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1502, ptr noundef nonnull align 8 dereferenceable(424) %1504, ptr noundef nonnull align 8 dereferenceable(8) %1505)
          to label %1507 unwind label %1514

1507:                                             ; preds = %1501
  store ptr %1506, ptr %141, align 8, !tbaa !5
  %1508 = load ptr, ptr %141, align 8, !tbaa !5
  %1509 = getelementptr inbounds %struct.TypeRepr, ptr %1508, i32 0, i32 2
  %1510 = invoke noundef zeroext i1 @_ZNK8TypeRepr11VariantMode7is_NoneEv(ptr noundef nonnull align 8 dereferenceable(72) %1509)
          to label %1511 unwind label %1514

1511:                                             ; preds = %1507
  br i1 %1510, label %1512, label %1513

1512:                                             ; preds = %1511
  br label %1519

1513:                                             ; preds = %1511
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.17, i32 noundef 1038, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE) #10
  unreachable

1514:                                             ; preds = %1565, %1527, %1507, %1501
  %1515 = landingpad { ptr, i32 }
          cleanup
  %1516 = extractvalue { ptr, i32 } %1515, 0
  store ptr %1516, ptr %11, align 8
  %1517 = extractvalue { ptr, i32 } %1515, 1
  store i32 %1517, ptr %12, align 4
  br label %1568

1518:                                             ; No predecessors!
  br label %1519

1519:                                             ; preds = %1518, %1512
  %1520 = load ptr, ptr %141, align 8, !tbaa !5
  %1521 = getelementptr inbounds %struct.TypeRepr, ptr %1520, i32 0, i32 3
  %1522 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1521) #9
  %1523 = icmp ugt i64 %1522, 0
  br i1 %1523, label %1524, label %1525

1524:                                             ; preds = %1519
  br label %1527

1525:                                             ; preds = %1519
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.17, i32 noundef 1039, ptr noundef @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE) #10
  unreachable

1526:                                             ; No predecessors!
  br label %1527

1527:                                             ; preds = %1526, %1524
  %1528 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %135, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %1528, i8 noundef zeroext 0)
          to label %1529 unwind label %1514

1529:                                             ; preds = %1527
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #9
  store i64 0, ptr %142, align 8, !tbaa !59
  br label %1530

1530:                                             ; preds = %1558, %1529
  %1531 = load i64, ptr %142, align 8, !tbaa !59
  %1532 = load ptr, ptr %141, align 8, !tbaa !5
  %1533 = getelementptr inbounds %struct.TypeRepr, ptr %1532, i32 0, i32 3
  %1534 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1533) #9
  %1535 = sub i64 %1534, 1
  %1536 = icmp ult i64 %1531, %1535
  br i1 %1536, label %1538, label %1537

1537:                                             ; preds = %1530
  store i32 113, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #9
  br label %1565

1538:                                             ; preds = %1530
  %1539 = load ptr, ptr %6, align 8, !tbaa !5
  %1540 = load ptr, ptr %141, align 8, !tbaa !5
  %1541 = getelementptr inbounds %struct.TypeRepr, ptr %1540, i32 0, i32 3
  %1542 = load i64, ptr %142, align 8, !tbaa !59
  %1543 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1541, i64 noundef %1542) #9
  %1544 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1543, i32 0, i32 0
  %1545 = load i64, ptr %1544, align 8, !tbaa !48
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %143, ptr noundef nonnull align 8 dereferenceable(24) %137, i64 noundef %1545)
          to label %1546 unwind label %1561

1546:                                             ; preds = %1538
  %1547 = load ptr, ptr %141, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct.TypeRepr, ptr %1547, i32 0, i32 3
  %1549 = load i64, ptr %142, align 8, !tbaa !59
  %1550 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1548, i64 noundef %1549) #9
  %1551 = getelementptr inbounds %"struct.TypeRepr::Field", ptr %1550, i32 0, i32 1
  invoke void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %135, ptr noundef nonnull align 8 dereferenceable(8) %1539, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %143, ptr noundef nonnull align 8 dereferenceable(8) %1551)
          to label %1552 unwind label %1561

1552:                                             ; preds = %1546
  %1553 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %135, i32 0, i32 5
  %1554 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1553)
          to label %1555 unwind label %1561

1555:                                             ; preds = %1552
  %1556 = load i8, ptr %1554, align 1, !tbaa !51
  %1557 = add i8 %1556, 1
  store i8 %1557, ptr %1554, align 1, !tbaa !51
  br label %1558

1558:                                             ; preds = %1555
  %1559 = load i64, ptr %142, align 8, !tbaa !59
  %1560 = add i64 %1559, 1
  store i64 %1560, ptr %142, align 8, !tbaa !59
  br label %1530, !llvm.loop !70

1561:                                             ; preds = %1552, %1546, %1538
  %1562 = landingpad { ptr, i32 }
          cleanup
  %1563 = extractvalue { ptr, i32 } %1562, 0
  store ptr %1563, ptr %11, align 8
  %1564 = extractvalue { ptr, i32 } %1562, 1
  store i32 %1564, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #9
  br label %1568

1565:                                             ; preds = %1537
  %1566 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %135, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %1566)
          to label %1567 unwind label %1514

1567:                                             ; preds = %1565
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #9
  br label %1573

1568:                                             ; preds = %1561, %1514
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #9
  br label %1574

1569:                                             ; preds = %1450
  %1570 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %144, ptr align 8 %137, i64 24, i1 false), !tbaa.struct !71
  %1571 = load ptr, ptr %136, align 8, !tbaa !5
  invoke void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %135, ptr noundef nonnull align 8 dereferenceable(8) %1570, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %144, ptr noundef nonnull align 8 dereferenceable(8) %1571)
          to label %1572 unwind label %1480

1572:                                             ; preds = %1569
  br label %1573

1573:                                             ; preds = %1572, %1567
  call void @llvm.lifetime.end.p0(i64 24, ptr %137) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #9
  br label %1575

1574:                                             ; preds = %1568, %1498, %1480
  call void @llvm.lifetime.end.p0(i64 24, ptr %137) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #9
  br label %1620

1575:                                             ; preds = %1573, %1412
  br label %1576

1576:                                             ; preds = %1575
  %1577 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %135, i32 0, i32 2
  %1578 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1577) #9
  %1579 = icmp eq i64 %1578, 1
  br i1 %1579, label %1599, label %1580

1580:                                             ; preds = %1576
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #9
  %1581 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %1581)
          to label %1582 unwind label %1586

1582:                                             ; preds = %1580
  call void @llvm.lifetime.start.p0(i64 1, ptr %147) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 1 dereferenceable(1) %147) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef %146)
          to label %1583 unwind label %1590

1583:                                             ; preds = %1582
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #9
  %1584 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1584, ptr noundef @.str.10)
          to label %1585 unwind label %1595

1585:                                             ; preds = %1583
  invoke void @__cxa_throw(ptr %1584, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1476

1586:                                             ; preds = %1580
  %1587 = landingpad { ptr, i32 }
          cleanup
  %1588 = extractvalue { ptr, i32 } %1587, 0
  store ptr %1588, ptr %11, align 8
  %1589 = extractvalue { ptr, i32 } %1587, 1
  store i32 %1589, ptr %12, align 4
  br label %1594

1590:                                             ; preds = %1582
  %1591 = landingpad { ptr, i32 }
          cleanup
  %1592 = extractvalue { ptr, i32 } %1591, 0
  store ptr %1592, ptr %11, align 8
  %1593 = extractvalue { ptr, i32 } %1591, 1
  store i32 %1593, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %145) #9
  br label %1594

1594:                                             ; preds = %1590, %1586
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #9
  br label %1620

1595:                                             ; preds = %1583
  %1596 = landingpad { ptr, i32 }
          cleanup
  %1597 = extractvalue { ptr, i32 } %1596, 0
  store ptr %1597, ptr %11, align 8
  %1598 = extractvalue { ptr, i32 } %1596, 1
  store i32 %1598, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1584) #9
  br label %1620

1599:                                             ; preds = %1576
  br label %1600

1600:                                             ; preds = %1599
  br label %1601

1601:                                             ; preds = %1600
  %1602 = getelementptr inbounds %"struct.PatternRule::Data_Variant", ptr %149, i32 0, i32 0
  %1603 = load i32, ptr %133, align 4, !tbaa !46
  store i32 %1603, ptr %1602, align 8, !tbaa !72
  %1604 = getelementptr inbounds %"struct.PatternRule::Data_Variant", ptr %149, i32 0, i32 1
  %1605 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %135, i32 0, i32 2
  %1606 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1605, i64 noundef 0) #9
  %1607 = getelementptr inbounds %"struct.PatternRulesetBuilder::Ruleset", ptr %1606, i32 0, i32 1
  call void @_ZNSt6vectorI11PatternRuleSaIS0_EEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(24) %1604, ptr noundef nonnull align 8 dereferenceable(24) %1607) #9
  invoke void @_ZN11PatternRule12make_VariantENS_12Data_VariantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %148, ptr noundef %149)
          to label %1608 unwind label %1611

1608:                                             ; preds = %1601
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %148)
          to label %1609 unwind label %1615

1609:                                             ; preds = %1608
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %148) #9
  call void @_ZN11PatternRule12Data_VariantD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #9
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %135) #9
  call void @llvm.lifetime.end.p0(i64 80, ptr %135) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #9
  br label %1610

1610:                                             ; preds = %1609
  store i8 0, ptr %126, align 1, !tbaa !11
  br label %1341, !llvm.loop !78

1611:                                             ; preds = %1601
  %1612 = landingpad { ptr, i32 }
          cleanup
  %1613 = extractvalue { ptr, i32 } %1612, 0
  store ptr %1613, ptr %11, align 8
  %1614 = extractvalue { ptr, i32 } %1612, 1
  store i32 %1614, ptr %12, align 4
  br label %1619

1615:                                             ; preds = %1608
  %1616 = landingpad { ptr, i32 }
          cleanup
  %1617 = extractvalue { ptr, i32 } %1616, 0
  store ptr %1617, ptr %11, align 8
  %1618 = extractvalue { ptr, i32 } %1616, 1
  store i32 %1618, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %148) #9
  br label %1619

1619:                                             ; preds = %1615, %1611
  call void @_ZN11PatternRule12Data_VariantD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #9
  br label %1620

1620:                                             ; preds = %1619, %1595, %1594, %1574, %1476
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %135) #9
  br label %1621

1621:                                             ; preds = %1620, %1472
  call void @llvm.lifetime.end.p0(i64 80, ptr %135) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #9
  br label %1622

1622:                                             ; preds = %1621, %1468
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #9
  br label %1623

1623:                                             ; preds = %1622, %1381, %1380, %1368
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #9
  br label %1624

1624:                                             ; preds = %1623, %1346
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %126) #9
  br label %1630

1625:                                             ; preds = %1345
  br label %1626

1626:                                             ; preds = %1625
  store i8 0, ptr %126, align 1, !tbaa !11
  br label %1333, !llvm.loop !79

1627:                                             ; preds = %1336
  br label %1628

1628:                                             ; preds = %1627, %1331, %1280, %1229, %1128, %1071, %1019
  br label %1629

1629:                                             ; preds = %1628
  store i8 0, ptr %91, align 1, !tbaa !11
  br label %1012, !llvm.loop !80

1630:                                             ; preds = %1624, %1328, %1277, %1226, %1125, %1068, %1020
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #9
  br label %1635

1631:                                             ; preds = %1015
  br label %1632

1632:                                             ; preds = %1631
  store i8 0, ptr %91, align 1, !tbaa !11
  br label %1005, !llvm.loop !81

1633:                                             ; preds = %1008
  br label %1634

1634:                                             ; preds = %1633
  store i8 0, ptr %89, align 1, !tbaa !11
  br label %995, !llvm.loop !82

1635:                                             ; preds = %1630, %1000
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  br label %3001

1636:                                             ; preds = %999
  br label %1637

1637:                                             ; preds = %1636
  store i8 0, ptr %89, align 1, !tbaa !11
  br label %987, !llvm.loop !83

1638:                                             ; preds = %990
  br label %2999

1639:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %150) #9
  store i8 1, ptr %150, align 1, !tbaa !11
  br label %1640

1640:                                             ; preds = %1694, %1639
  %1641 = load i8, ptr %150, align 1, !tbaa !11, !range !13, !noundef !14
  %1642 = trunc i8 %1641 to i1
  br i1 %1642, label %1644, label %1643

1643:                                             ; preds = %1640
  store i32 118, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %150) #9
  br label %1695

1644:                                             ; preds = %1640
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #9
  %1645 = load ptr, ptr %15, align 8, !tbaa !5
  %1646 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1645)
          to label %1647 unwind label %1653

1647:                                             ; preds = %1644
  store ptr %1646, ptr %151, align 8, !tbaa !5
  br label %1648

1648:                                             ; preds = %1687, %1647
  %1649 = load ptr, ptr %151, align 8, !tbaa !5
  %1650 = load i8, ptr %150, align 1, !tbaa !11, !range !13, !noundef !14
  %1651 = trunc i8 %1650 to i1
  br i1 %1651, label %1657, label %1652

1652:                                             ; preds = %1648
  store i32 121, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #9
  br label %1693

1653:                                             ; preds = %1684, %1644
  %1654 = landingpad { ptr, i32 }
          cleanup
  %1655 = extractvalue { ptr, i32 } %1654, 0
  store ptr %1655, ptr %11, align 8
  %1656 = extractvalue { ptr, i32 } %1654, 1
  store i32 %1656, ptr %12, align 4
  br label %1692

1657:                                             ; preds = %1648
  br label %1658

1658:                                             ; preds = %1657
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #9
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #9
  %1659 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(8) %1659)
          to label %1660 unwind label %1665

1660:                                             ; preds = %1658
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #9
  %1661 = getelementptr inbounds %class.anon.297, ptr %155, i32 0, i32 0
  store ptr %152, ptr %1661, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef nonnull align 8 dereferenceable(8) %155) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef %154)
          to label %1662 unwind label %1669

1662:                                             ; preds = %1660
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #9
  %1663 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1663, ptr noundef @.str.5)
          to label %1664 unwind label %1674

1664:                                             ; preds = %1662
  invoke void @__cxa_throw(ptr %1663, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1678

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

1669:                                             ; preds = %1660
  %1670 = landingpad { ptr, i32 }
          cleanup
  %1671 = extractvalue { ptr, i32 } %1670, 0
  store ptr %1671, ptr %11, align 8
  %1672 = extractvalue { ptr, i32 } %1670, 1
  store i32 %1672, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %153) #9
  br label %1673

1673:                                             ; preds = %1669, %1665
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #9
  br label %1682

1674:                                             ; preds = %1662
  %1675 = landingpad { ptr, i32 }
          cleanup
  %1676 = extractvalue { ptr, i32 } %1675, 0
  store ptr %1676, ptr %11, align 8
  %1677 = extractvalue { ptr, i32 } %1675, 1
  store i32 %1677, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1663) #9
  br label %1682

1678:                                             ; preds = %1664
  %1679 = landingpad { ptr, i32 }
          cleanup
  %1680 = extractvalue { ptr, i32 } %1679, 0
  store ptr %1680, ptr %11, align 8
  %1681 = extractvalue { ptr, i32 } %1679, 1
  store i32 %1681, ptr %12, align 4
  br label %1682

1682:                                             ; preds = %1678, %1674, %1673
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #9
  br label %1692

1683:                                             ; No predecessors!
  br label %1684

1684:                                             ; preds = %1683
  invoke void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %156)
          to label %1685 unwind label %1653

1685:                                             ; preds = %1684
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %156)
          to label %1686 unwind label %1688

1686:                                             ; preds = %1685
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %156) #9
  br label %1687

1687:                                             ; preds = %1686
  store i8 0, ptr %150, align 1, !tbaa !11
  br label %1648, !llvm.loop !84

1688:                                             ; preds = %1685
  %1689 = landingpad { ptr, i32 }
          cleanup
  %1690 = extractvalue { ptr, i32 } %1689, 0
  store ptr %1690, ptr %11, align 8
  %1691 = extractvalue { ptr, i32 } %1689, 1
  store i32 %1691, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %156) #9
  br label %1692

1692:                                             ; preds = %1688, %1682, %1653
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %150) #9
  br label %3001

1693:                                             ; preds = %1652
  br label %1694

1694:                                             ; preds = %1693
  store i8 0, ptr %150, align 1, !tbaa !11
  br label %1640, !llvm.loop !85

1695:                                             ; preds = %1643
  br label %2999

1696:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %158) #9
  store i8 1, ptr %158, align 1, !tbaa !11
  br label %1697

1697:                                             ; preds = %1745, %1696
  %1698 = load i8, ptr %158, align 1, !tbaa !11, !range !13, !noundef !14
  %1699 = trunc i8 %1698 to i1
  br i1 %1699, label %1701, label %1700

1700:                                             ; preds = %1697
  store i32 126, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %158) #9
  br label %1746

1701:                                             ; preds = %1697
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #9
  %1702 = load ptr, ptr %15, align 8, !tbaa !5
  %1703 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1702)
          to label %1704 unwind label %1710

1704:                                             ; preds = %1701
  store ptr %1703, ptr %159, align 8, !tbaa !5
  br label %1705

1705:                                             ; preds = %1742, %1704
  %1706 = load ptr, ptr %159, align 8, !tbaa !5
  %1707 = load i8, ptr %158, align 1, !tbaa !11, !range !13, !noundef !14
  %1708 = trunc i8 %1707 to i1
  br i1 %1708, label %1714, label %1709

1709:                                             ; preds = %1705
  store i32 129, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #9
  br label %1744

1710:                                             ; preds = %1701
  %1711 = landingpad { ptr, i32 }
          cleanup
  %1712 = extractvalue { ptr, i32 } %1711, 0
  store ptr %1712, ptr %11, align 8
  %1713 = extractvalue { ptr, i32 } %1711, 1
  store i32 %1713, ptr %12, align 4
  br label %1743

1714:                                             ; preds = %1705
  br label %1715

1715:                                             ; preds = %1714
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #9
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %160, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #9
  %1716 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull align 8 dereferenceable(8) %1716)
          to label %1717 unwind label %1722

1717:                                             ; preds = %1715
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #9
  %1718 = getelementptr inbounds %class.anon.298, ptr %163, i32 0, i32 0
  store ptr %160, ptr %1718, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %162, ptr noundef nonnull align 8 dereferenceable(8) %163) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef %162)
          to label %1719 unwind label %1726

1719:                                             ; preds = %1717
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #9
  %1720 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1720, ptr noundef @.str.5)
          to label %1721 unwind label %1731

1721:                                             ; preds = %1719
  invoke void @__cxa_throw(ptr %1720, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1735

1722:                                             ; preds = %1715
  %1723 = landingpad { ptr, i32 }
          cleanup
  %1724 = extractvalue { ptr, i32 } %1723, 0
  store ptr %1724, ptr %11, align 8
  %1725 = extractvalue { ptr, i32 } %1723, 1
  store i32 %1725, ptr %12, align 4
  br label %1730

1726:                                             ; preds = %1717
  %1727 = landingpad { ptr, i32 }
          cleanup
  %1728 = extractvalue { ptr, i32 } %1727, 0
  store ptr %1728, ptr %11, align 8
  %1729 = extractvalue { ptr, i32 } %1727, 1
  store i32 %1729, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %162) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #9
  br label %1730

1730:                                             ; preds = %1726, %1722
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #9
  br label %1739

1731:                                             ; preds = %1719
  %1732 = landingpad { ptr, i32 }
          cleanup
  %1733 = extractvalue { ptr, i32 } %1732, 0
  store ptr %1733, ptr %11, align 8
  %1734 = extractvalue { ptr, i32 } %1732, 1
  store i32 %1734, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1720) #9
  br label %1739

1735:                                             ; preds = %1721
  %1736 = landingpad { ptr, i32 }
          cleanup
  %1737 = extractvalue { ptr, i32 } %1736, 0
  store ptr %1737, ptr %11, align 8
  %1738 = extractvalue { ptr, i32 } %1736, 1
  store i32 %1738, ptr %12, align 4
  br label %1739

1739:                                             ; preds = %1735, %1731, %1730
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #9
  br label %1743

1740:                                             ; No predecessors!
  br label %1741

1741:                                             ; preds = %1740
  br label %1742

1742:                                             ; preds = %1741
  store i8 0, ptr %158, align 1, !tbaa !11
  br label %1705, !llvm.loop !86

1743:                                             ; preds = %1739, %1710
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %158) #9
  br label %3001

1744:                                             ; preds = %1709
  br label %1745

1745:                                             ; preds = %1744
  store i8 0, ptr %158, align 1, !tbaa !11
  br label %1697, !llvm.loop !87

1746:                                             ; preds = %1700
  br label %2999

1747:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %164) #9
  store i8 1, ptr %164, align 1, !tbaa !11
  br label %1748

1748:                                             ; preds = %1796, %1747
  %1749 = load i8, ptr %164, align 1, !tbaa !11, !range !13, !noundef !14
  %1750 = trunc i8 %1749 to i1
  br i1 %1750, label %1752, label %1751

1751:                                             ; preds = %1748
  store i32 134, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #9
  br label %1797

1752:                                             ; preds = %1748
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #9
  %1753 = load ptr, ptr %15, align 8, !tbaa !5
  %1754 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %1753)
          to label %1755 unwind label %1761

1755:                                             ; preds = %1752
  store ptr %1754, ptr %165, align 8, !tbaa !5
  br label %1756

1756:                                             ; preds = %1793, %1755
  %1757 = load ptr, ptr %165, align 8, !tbaa !5
  %1758 = load i8, ptr %164, align 1, !tbaa !11, !range !13, !noundef !14
  %1759 = trunc i8 %1758 to i1
  br i1 %1759, label %1765, label %1760

1760:                                             ; preds = %1756
  store i32 137, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #9
  br label %1795

1761:                                             ; preds = %1752
  %1762 = landingpad { ptr, i32 }
          cleanup
  %1763 = extractvalue { ptr, i32 } %1762, 0
  store ptr %1763, ptr %11, align 8
  %1764 = extractvalue { ptr, i32 } %1762, 1
  store i32 %1764, ptr %12, align 4
  br label %1794

1765:                                             ; preds = %1756
  br label %1766

1766:                                             ; preds = %1765
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #9
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %166, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #9
  %1767 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull align 8 dereferenceable(8) %1767)
          to label %1768 unwind label %1773

1768:                                             ; preds = %1766
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #9
  %1769 = getelementptr inbounds %class.anon.299, ptr %169, i32 0, i32 0
  store ptr %166, ptr %1769, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %168, ptr noundef nonnull align 8 dereferenceable(8) %169) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef %168)
          to label %1770 unwind label %1777

1770:                                             ; preds = %1768
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #9
  %1771 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1771, ptr noundef @.str.5)
          to label %1772 unwind label %1782

1772:                                             ; preds = %1770
  invoke void @__cxa_throw(ptr %1771, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1786

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

1777:                                             ; preds = %1768
  %1778 = landingpad { ptr, i32 }
          cleanup
  %1779 = extractvalue { ptr, i32 } %1778, 0
  store ptr %1779, ptr %11, align 8
  %1780 = extractvalue { ptr, i32 } %1778, 1
  store i32 %1780, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #9
  br label %1781

1781:                                             ; preds = %1777, %1773
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #9
  br label %1790

1782:                                             ; preds = %1770
  %1783 = landingpad { ptr, i32 }
          cleanup
  %1784 = extractvalue { ptr, i32 } %1783, 0
  store ptr %1784, ptr %11, align 8
  %1785 = extractvalue { ptr, i32 } %1783, 1
  store i32 %1785, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1771) #9
  br label %1790

1786:                                             ; preds = %1772
  %1787 = landingpad { ptr, i32 }
          cleanup
  %1788 = extractvalue { ptr, i32 } %1787, 0
  store ptr %1788, ptr %11, align 8
  %1789 = extractvalue { ptr, i32 } %1787, 1
  store i32 %1789, ptr %12, align 4
  br label %1790

1790:                                             ; preds = %1786, %1782, %1781
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #9
  br label %1794

1791:                                             ; No predecessors!
  br label %1792

1792:                                             ; preds = %1791
  br label %1793

1793:                                             ; preds = %1792
  store i8 0, ptr %164, align 1, !tbaa !11
  br label %1756, !llvm.loop !88

1794:                                             ; preds = %1790, %1761
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %164) #9
  br label %3001

1795:                                             ; preds = %1760
  br label %1796

1796:                                             ; preds = %1795
  store i8 0, ptr %164, align 1, !tbaa !11
  br label %1748, !llvm.loop !89

1797:                                             ; preds = %1751
  br label %2999

1798:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %170) #9
  store i8 1, ptr %170, align 1, !tbaa !11
  br label %1799

1799:                                             ; preds = %1900, %1798
  %1800 = load i8, ptr %170, align 1, !tbaa !11, !range !13, !noundef !14
  %1801 = trunc i8 %1800 to i1
  br i1 %1801, label %1803, label %1802

1802:                                             ; preds = %1799
  store i32 142, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #9
  br label %1901

1803:                                             ; preds = %1799
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #9
  %1804 = load ptr, ptr %15, align 8, !tbaa !5
  %1805 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1804)
          to label %1806 unwind label %1812

1806:                                             ; preds = %1803
  store ptr %1805, ptr %171, align 8, !tbaa !5
  br label %1807

1807:                                             ; preds = %1891, %1806
  %1808 = load ptr, ptr %171, align 8, !tbaa !5
  %1809 = load i8, ptr %170, align 1, !tbaa !11, !range !13, !noundef !14
  %1810 = trunc i8 %1809 to i1
  br i1 %1810, label %1816, label %1811

1811:                                             ; preds = %1807
  store i32 145, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #9
  br label %1899

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

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

1817:                                             ; preds = %1816
  %1818 = load ptr, ptr %6, align 8, !tbaa !5
  %1819 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 0
  %1820 = load ptr, ptr %1819, align 8, !tbaa !35
  %1821 = load ptr, ptr %171, align 8, !tbaa !5
  %1822 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1821, i32 0, i32 0
  %1823 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %1818, ptr noundef nonnull align 8 dereferenceable(424) %1820, ptr noundef nonnull align 8 dereferenceable(8) %1822, ptr noundef nonnull align 8 dereferenceable(8) %172)
          to label %1824 unwind label %1833

1824:                                             ; preds = %1817
  br i1 %1823, label %1850, label %1825

1825:                                             ; preds = %1824
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #9
  %1826 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull align 8 dereferenceable(8) %1826)
          to label %1827 unwind label %1837

1827:                                             ; preds = %1825
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #9
  %1828 = getelementptr inbounds %class.anon.300, ptr %175, i32 0, i32 0
  %1829 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1829, ptr %1828, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull align 8 dereferenceable(8) %175) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef %174)
          to label %1830 unwind label %1841

1830:                                             ; preds = %1827
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #9
  %1831 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1831, ptr noundef @.str.10)
          to label %1832 unwind label %1846

1832:                                             ; preds = %1830
  invoke void @__cxa_throw(ptr %1831, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1833

1833:                                             ; preds = %1852, %1832, %1817
  %1834 = landingpad { ptr, i32 }
          cleanup
  %1835 = extractvalue { ptr, i32 } %1834, 0
  store ptr %1835, ptr %11, align 8
  %1836 = extractvalue { ptr, i32 } %1834, 1
  store i32 %1836, ptr %12, align 4
  br label %1897

1837:                                             ; preds = %1825
  %1838 = landingpad { ptr, i32 }
          cleanup
  %1839 = extractvalue { ptr, i32 } %1838, 0
  store ptr %1839, ptr %11, align 8
  %1840 = extractvalue { ptr, i32 } %1838, 1
  store i32 %1840, ptr %12, align 4
  br label %1845

1841:                                             ; preds = %1827
  %1842 = landingpad { ptr, i32 }
          cleanup
  %1843 = extractvalue { ptr, i32 } %1842, 0
  store ptr %1843, ptr %11, align 8
  %1844 = extractvalue { ptr, i32 } %1842, 1
  store i32 %1844, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %173) #9
  br label %1845

1845:                                             ; preds = %1841, %1837
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #9
  br label %1897

1846:                                             ; preds = %1830
  %1847 = landingpad { ptr, i32 }
          cleanup
  %1848 = extractvalue { ptr, i32 } %1847, 0
  store ptr %1848, ptr %11, align 8
  %1849 = extractvalue { ptr, i32 } %1847, 1
  store i32 %1849, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1831) #9
  br label %1897

1850:                                             ; preds = %1824
  br label %1851

1851:                                             ; preds = %1850
  br label %1852

1852:                                             ; preds = %1851
  %1853 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %1853, i8 noundef zeroext 0)
          to label %1854 unwind label %1833

1854:                                             ; preds = %1852
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #9
  store i64 0, ptr %176, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 4, ptr %177) #9
  store i32 0, ptr %177, align 4, !tbaa !46
  br label %1855

1855:                                             ; preds = %1885, %1854
  %1856 = load i32, ptr %177, align 4, !tbaa !46
  %1857 = zext i32 %1856 to i64
  %1858 = load ptr, ptr %171, align 8, !tbaa !5
  %1859 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1858, i32 0, i32 1
  %1860 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %1859)
          to label %1861 unwind label %1865

1861:                                             ; preds = %1855
  %1862 = load i64, ptr %1860, align 8, !tbaa !59
  %1863 = icmp ult i64 %1857, %1862
  br i1 %1863, label %1869, label %1864

1864:                                             ; preds = %1861
  store i32 150, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #9
  br label %1888

1865:                                             ; preds = %1876, %1873, %1869, %1855
  %1866 = landingpad { ptr, i32 }
          cleanup
  %1867 = extractvalue { ptr, i32 } %1866, 0
  store ptr %1867, ptr %11, align 8
  %1868 = extractvalue { ptr, i32 } %1866, 1
  store i32 %1868, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #9
  br label %1896

1869:                                             ; preds = %1861
  %1870 = load ptr, ptr %6, align 8, !tbaa !5
  %1871 = load i64, ptr %176, align 8, !tbaa !59
  %1872 = load i64, ptr %172, align 8, !tbaa !59
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %178, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %1871, i64 noundef %1872)
          to label %1873 unwind label %1865

1873:                                             ; preds = %1869
  %1874 = load ptr, ptr %171, align 8, !tbaa !5
  %1875 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1874, i32 0, i32 0
  invoke void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef nonnull align 8 dereferenceable(8) %1870, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %178, ptr noundef nonnull align 8 dereferenceable(8) %1875)
          to label %1876 unwind label %1865

1876:                                             ; preds = %1873
  %1877 = load i64, ptr %172, align 8, !tbaa !59
  %1878 = load i64, ptr %176, align 8, !tbaa !59
  %1879 = add i64 %1878, %1877
  store i64 %1879, ptr %176, align 8, !tbaa !59
  %1880 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  %1881 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %1880)
          to label %1882 unwind label %1865

1882:                                             ; preds = %1876
  %1883 = load i8, ptr %1881, align 1, !tbaa !51
  %1884 = add i8 %1883, 1
  store i8 %1884, ptr %1881, align 1, !tbaa !51
  br label %1885

1885:                                             ; preds = %1882
  %1886 = load i32, ptr %177, align 4, !tbaa !46
  %1887 = add i32 %1886, 1
  store i32 %1887, ptr %177, align 4, !tbaa !46
  br label %1855, !llvm.loop !90

1888:                                             ; preds = %1864
  %1889 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %1889)
          to label %1890 unwind label %1892

1890:                                             ; preds = %1888
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #9
  br label %1891

1891:                                             ; preds = %1890
  store i8 0, ptr %170, align 1, !tbaa !11
  br label %1807, !llvm.loop !91

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

1896:                                             ; preds = %1892, %1865
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #9
  br label %1897

1897:                                             ; preds = %1896, %1846, %1845, %1833
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #9
  br label %1898

1898:                                             ; preds = %1897, %1812
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %170) #9
  br label %3001

1899:                                             ; preds = %1811
  br label %1900

1900:                                             ; preds = %1899
  store i8 0, ptr %170, align 1, !tbaa !11
  br label %1799, !llvm.loop !92

1901:                                             ; preds = %1802
  br label %2999

1902:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %179) #9
  store i8 1, ptr %179, align 1, !tbaa !11
  br label %1903

1903:                                             ; preds = %1951, %1902
  %1904 = load i8, ptr %179, align 1, !tbaa !11, !range !13, !noundef !14
  %1905 = trunc i8 %1904 to i1
  br i1 %1905, label %1907, label %1906

1906:                                             ; preds = %1903
  store i32 153, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #9
  br label %1952

1907:                                             ; preds = %1903
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #9
  %1908 = load ptr, ptr %15, align 8, !tbaa !5
  %1909 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1908)
          to label %1910 unwind label %1916

1910:                                             ; preds = %1907
  store ptr %1909, ptr %180, align 8, !tbaa !5
  br label %1911

1911:                                             ; preds = %1948, %1910
  %1912 = load ptr, ptr %180, align 8, !tbaa !5
  %1913 = load i8, ptr %179, align 1, !tbaa !11, !range !13, !noundef !14
  %1914 = trunc i8 %1913 to i1
  br i1 %1914, label %1920, label %1915

1915:                                             ; preds = %1911
  store i32 156, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #9
  br label %1950

1916:                                             ; preds = %1907
  %1917 = landingpad { ptr, i32 }
          cleanup
  %1918 = extractvalue { ptr, i32 } %1917, 0
  store ptr %1918, ptr %11, align 8
  %1919 = extractvalue { ptr, i32 } %1917, 1
  store i32 %1919, ptr %12, align 4
  br label %1949

1920:                                             ; preds = %1911
  br label %1921

1921:                                             ; preds = %1920
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #9
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %181, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #9
  %1922 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(8) %1922)
          to label %1923 unwind label %1928

1923:                                             ; preds = %1921
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #9
  %1924 = getelementptr inbounds %class.anon.301, ptr %184, i32 0, i32 0
  store ptr %181, ptr %1924, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %183, ptr noundef nonnull align 8 dereferenceable(8) %184) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef %183)
          to label %1925 unwind label %1932

1925:                                             ; preds = %1923
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #9
  %1926 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1926, ptr noundef @.str.5)
          to label %1927 unwind label %1937

1927:                                             ; preds = %1925
  invoke void @__cxa_throw(ptr %1926, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %1941

1928:                                             ; preds = %1921
  %1929 = landingpad { ptr, i32 }
          cleanup
  %1930 = extractvalue { ptr, i32 } %1929, 0
  store ptr %1930, ptr %11, align 8
  %1931 = extractvalue { ptr, i32 } %1929, 1
  store i32 %1931, ptr %12, align 4
  br label %1936

1932:                                             ; preds = %1923
  %1933 = landingpad { ptr, i32 }
          cleanup
  %1934 = extractvalue { ptr, i32 } %1933, 0
  store ptr %1934, ptr %11, align 8
  %1935 = extractvalue { ptr, i32 } %1933, 1
  store i32 %1935, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #9
  br label %1936

1936:                                             ; preds = %1932, %1928
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #9
  br label %1945

1937:                                             ; preds = %1925
  %1938 = landingpad { ptr, i32 }
          cleanup
  %1939 = extractvalue { ptr, i32 } %1938, 0
  store ptr %1939, ptr %11, align 8
  %1940 = extractvalue { ptr, i32 } %1938, 1
  store i32 %1940, ptr %12, align 4
  call void @__cxa_free_exception(ptr %1926) #9
  br label %1945

1941:                                             ; preds = %1927
  %1942 = landingpad { ptr, i32 }
          cleanup
  %1943 = extractvalue { ptr, i32 } %1942, 0
  store ptr %1943, ptr %11, align 8
  %1944 = extractvalue { ptr, i32 } %1942, 1
  store i32 %1944, ptr %12, align 4
  br label %1945

1945:                                             ; preds = %1941, %1937, %1936
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #9
  br label %1949

1946:                                             ; No predecessors!
  br label %1947

1947:                                             ; preds = %1946
  br label %1948

1948:                                             ; preds = %1947
  store i8 0, ptr %179, align 1, !tbaa !11
  br label %1911, !llvm.loop !93

1949:                                             ; preds = %1945, %1916
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %179) #9
  br label %3001

1950:                                             ; preds = %1915
  br label %1951

1951:                                             ; preds = %1950
  store i8 0, ptr %179, align 1, !tbaa !11
  br label %1903, !llvm.loop !94

1952:                                             ; preds = %1906
  br label %2999

1953:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %185) #9
  store i8 1, ptr %185, align 1, !tbaa !11
  br label %1954

1954:                                             ; preds = %2769, %1953
  %1955 = load i8, ptr %185, align 1, !tbaa !11, !range !13, !noundef !14
  %1956 = trunc i8 %1955 to i1
  br i1 %1956, label %1958, label %1957

1957:                                             ; preds = %1954
  store i32 161, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #9
  br label %2770

1958:                                             ; preds = %1954
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #9
  %1959 = load ptr, ptr %15, align 8, !tbaa !5
  %1960 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1959)
          to label %1961 unwind label %1967

1961:                                             ; preds = %1958
  store ptr %1960, ptr %186, align 8, !tbaa !5
  br label %1962

1962:                                             ; preds = %2766, %1961
  %1963 = load ptr, ptr %186, align 8, !tbaa !5
  %1964 = load i8, ptr %185, align 1, !tbaa !11, !range !13, !noundef !14
  %1965 = trunc i8 %1964 to i1
  br i1 %1965, label %1971, label %1966

1966:                                             ; preds = %1962
  store i32 164, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #9
  br label %2768

1967:                                             ; preds = %2763, %2244, %2240, %2237, %2233, %1971, %1958
  %1968 = landingpad { ptr, i32 }
          cleanup
  %1969 = extractvalue { ptr, i32 } %1968, 0
  store ptr %1969, ptr %11, align 8
  %1970 = extractvalue { ptr, i32 } %1968, 1
  store i32 %1970, ptr %12, align 4
  br label %2767

1971:                                             ; preds = %1962
  %1972 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %1972, i8 noundef zeroext -1)
          to label %1973 unwind label %1967

1973:                                             ; preds = %1971
  %1974 = load ptr, ptr %186, align 8, !tbaa !5
  %1975 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %1974, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 4, ptr %187) #9
  store i32 16, ptr %187, align 4, !tbaa !20
  %1976 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %1975, ptr noundef nonnull align 4 dereferenceable(4) %187)
          to label %1977 unwind label %2018

1977:                                             ; preds = %1973
  call void @llvm.lifetime.end.p0(i64 4, ptr %187) #9
  br i1 %1976, label %1978, label %2233

1978:                                             ; preds = %1977
  call void @llvm.lifetime.start.p0(i64 4, ptr %188) #9
  %1979 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1980 unwind label %2022

1980:                                             ; preds = %1978
  %1981 = udiv i32 %1979, 8
  store i32 %1981, ptr %188, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr %189) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %190) #9
  %1982 = load i32, ptr %188, align 4, !tbaa !46
  %1983 = zext i32 %1982 to i64
  %1984 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %1983)
          to label %1985 unwind label %2026

1985:                                             ; preds = %1980
  %1986 = getelementptr inbounds { i64, i64 }, ptr %190, i32 0, i32 0
  %1987 = extractvalue { i64, i64 } %1984, 0
  store i64 %1987, ptr %1986, align 8
  %1988 = getelementptr inbounds { i64, i64 }, ptr %190, i32 0, i32 1
  %1989 = extractvalue { i64, i64 } %1984, 1
  store i64 %1989, ptr %1988, align 8
  %1990 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %190)
          to label %1991 unwind label %2026

1991:                                             ; preds = %1985
  call void @llvm.lifetime.end.p0(i64 16, ptr %190) #9
  store i64 %1990, ptr %189, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 8, ptr %191) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %192) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %193) #9
  %1992 = load i32, ptr %188, align 4, !tbaa !46
  %1993 = zext i32 %1992 to i64
  %1994 = load i32, ptr %188, align 4, !tbaa !46
  %1995 = zext i32 %1994 to i64
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %193, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %1993, i64 noundef %1995)
          to label %1996 unwind label %2030

1996:                                             ; preds = %1991
  %1997 = load i32, ptr %188, align 4, !tbaa !46
  %1998 = zext i32 %1997 to i64
  %1999 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %193, i64 noundef %1998)
          to label %2000 unwind label %2030

2000:                                             ; preds = %1996
  %2001 = getelementptr inbounds { i64, i64 }, ptr %192, i32 0, i32 0
  %2002 = extractvalue { i64, i64 } %1999, 0
  store i64 %2002, ptr %2001, align 8
  %2003 = getelementptr inbounds { i64, i64 }, ptr %192, i32 0, i32 1
  %2004 = extractvalue { i64, i64 } %1999, 1
  store i64 %2004, ptr %2003, align 8
  %2005 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %192)
          to label %2006 unwind label %2030

2006:                                             ; preds = %2000
  call void @llvm.lifetime.end.p0(i64 24, ptr %193) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %192) #9
  store i64 %2005, ptr %191, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 8, ptr %194) #9
  %2007 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %2)
          to label %2008 unwind label %2034

2008:                                             ; preds = %2006
  store ptr %2007, ptr %194, align 8, !tbaa !5
  br label %2009

2009:                                             ; preds = %2008
  %2010 = load ptr, ptr %194, align 8, !tbaa !5
  %2011 = icmp ne ptr %2010, null
  br i1 %2011, label %2051, label %2012

2012:                                             ; preds = %2009
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #9
  %2013 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull align 8 dereferenceable(8) %2013)
          to label %2014 unwind label %2038

2014:                                             ; preds = %2012
  call void @llvm.lifetime.start.p0(i64 1, ptr %197) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %196, ptr noundef nonnull align 1 dereferenceable(1) %197) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef %196)
          to label %2015 unwind label %2042

2015:                                             ; preds = %2014
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %197) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #9
  %2016 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2016, ptr noundef @.str.10)
          to label %2017 unwind label %2047

2017:                                             ; preds = %2015
  invoke void @__cxa_throw(ptr %2016, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2034

2018:                                             ; preds = %1973
  %2019 = landingpad { ptr, i32 }
          cleanup
  %2020 = extractvalue { ptr, i32 } %2019, 0
  store ptr %2020, ptr %11, align 8
  %2021 = extractvalue { ptr, i32 } %2019, 1
  store i32 %2021, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %187) #9
  br label %2767

2022:                                             ; preds = %1978
  %2023 = landingpad { ptr, i32 }
          cleanup
  %2024 = extractvalue { ptr, i32 } %2023, 0
  store ptr %2024, ptr %11, align 8
  %2025 = extractvalue { ptr, i32 } %2023, 1
  store i32 %2025, ptr %12, align 4
  br label %2232

2026:                                             ; preds = %1985, %1980
  %2027 = landingpad { ptr, i32 }
          cleanup
  %2028 = extractvalue { ptr, i32 } %2027, 0
  store ptr %2028, ptr %11, align 8
  %2029 = extractvalue { ptr, i32 } %2027, 1
  store i32 %2029, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %190) #9
  br label %2231

2030:                                             ; preds = %2000, %1996, %1991
  %2031 = landingpad { ptr, i32 }
          cleanup
  %2032 = extractvalue { ptr, i32 } %2031, 0
  store ptr %2032, ptr %11, align 8
  %2033 = extractvalue { ptr, i32 } %2031, 1
  store i32 %2033, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %193) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %192) #9
  br label %2230

2034:                                             ; preds = %2177, %2147, %2119, %2091, %2062, %2017, %2006
  %2035 = landingpad { ptr, i32 }
          cleanup
  %2036 = extractvalue { ptr, i32 } %2035, 0
  store ptr %2036, ptr %11, align 8
  %2037 = extractvalue { ptr, i32 } %2035, 1
  store i32 %2037, ptr %12, align 4
  br label %2229

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

2042:                                             ; preds = %2014
  %2043 = landingpad { ptr, i32 }
          cleanup
  %2044 = extractvalue { ptr, i32 } %2043, 0
  store ptr %2044, ptr %11, align 8
  %2045 = extractvalue { ptr, i32 } %2043, 1
  store i32 %2045, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %197) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #9
  br label %2046

2046:                                             ; preds = %2042, %2038
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #9
  br label %2229

2047:                                             ; preds = %2015
  %2048 = landingpad { ptr, i32 }
          cleanup
  %2049 = extractvalue { ptr, i32 } %2048, 0
  store ptr %2049, ptr %11, align 8
  %2050 = extractvalue { ptr, i32 } %2048, 1
  store i32 %2050, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2016) #9
  br label %2229

2051:                                             ; preds = %2009
  br label %2052

2052:                                             ; preds = %2051
  br label %2053

2053:                                             ; preds = %2052
  br label %2054

2054:                                             ; preds = %2053
  %2055 = load i64, ptr %189, align 8, !tbaa !59
  %2056 = icmp uge i64 %2055, 4096
  br i1 %2056, label %2076, label %2057

2057:                                             ; preds = %2054
  call void @llvm.lifetime.start.p0(i64 8, ptr %198) #9
  %2058 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef nonnull align 8 dereferenceable(8) %2058)
          to label %2059 unwind label %2063

2059:                                             ; preds = %2057
  call void @llvm.lifetime.start.p0(i64 1, ptr %200) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %199, ptr noundef nonnull align 1 dereferenceable(1) %200) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef %199)
          to label %2060 unwind label %2067

2060:                                             ; preds = %2059
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #9
  %2061 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2061, ptr noundef @.str.10)
          to label %2062 unwind label %2072

2062:                                             ; preds = %2060
  invoke void @__cxa_throw(ptr %2061, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2034

2063:                                             ; preds = %2057
  %2064 = landingpad { ptr, i32 }
          cleanup
  %2065 = extractvalue { ptr, i32 } %2064, 0
  store ptr %2065, ptr %11, align 8
  %2066 = extractvalue { ptr, i32 } %2064, 1
  store i32 %2066, ptr %12, align 4
  br label %2071

2067:                                             ; preds = %2059
  %2068 = landingpad { ptr, i32 }
          cleanup
  %2069 = extractvalue { ptr, i32 } %2068, 0
  store ptr %2069, ptr %11, align 8
  %2070 = extractvalue { ptr, i32 } %2068, 1
  store i32 %2070, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %200) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %198) #9
  br label %2071

2071:                                             ; preds = %2067, %2063
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #9
  br label %2229

2072:                                             ; preds = %2060
  %2073 = landingpad { ptr, i32 }
          cleanup
  %2074 = extractvalue { ptr, i32 } %2073, 0
  store ptr %2074, ptr %11, align 8
  %2075 = extractvalue { ptr, i32 } %2073, 1
  store i32 %2075, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2061) #9
  br label %2229

2076:                                             ; preds = %2054
  br label %2077

2077:                                             ; preds = %2076
  br label %2078

2078:                                             ; preds = %2077
  %2079 = load i64, ptr %189, align 8, !tbaa !59
  %2080 = sub i64 %2079, 4096
  store i64 %2080, ptr %189, align 8, !tbaa !59
  br label %2081

2081:                                             ; preds = %2078
  %2082 = load ptr, ptr %194, align 8, !tbaa !5
  %2083 = getelementptr inbounds %struct.Reloc, ptr %2082, i32 0, i32 2
  %2084 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %2083) #9
  br i1 %2084, label %2085, label %2105

2085:                                             ; preds = %2081
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #9
  %2086 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull align 8 dereferenceable(8) %2086)
          to label %2087 unwind label %2092

2087:                                             ; preds = %2085
  call void @llvm.lifetime.start.p0(i64 8, ptr %203) #9
  %2088 = getelementptr inbounds %class.anon.306, ptr %203, i32 0, i32 0
  store ptr %194, ptr %2088, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %202, ptr noundef nonnull align 8 dereferenceable(8) %203) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef %202)
          to label %2089 unwind label %2096

2089:                                             ; preds = %2087
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #9
  %2090 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2090, ptr noundef @.str.10)
          to label %2091 unwind label %2101

2091:                                             ; preds = %2089
  invoke void @__cxa_throw(ptr %2090, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2034

2092:                                             ; preds = %2085
  %2093 = landingpad { ptr, i32 }
          cleanup
  %2094 = extractvalue { ptr, i32 } %2093, 0
  store ptr %2094, ptr %11, align 8
  %2095 = extractvalue { ptr, i32 } %2093, 1
  store i32 %2095, ptr %12, align 4
  br label %2100

2096:                                             ; preds = %2087
  %2097 = landingpad { ptr, i32 }
          cleanup
  %2098 = extractvalue { ptr, i32 } %2097, 0
  store ptr %2098, ptr %11, align 8
  %2099 = extractvalue { ptr, i32 } %2097, 1
  store i32 %2099, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #9
  br label %2100

2100:                                             ; preds = %2096, %2092
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #9
  br label %2229

2101:                                             ; preds = %2089
  %2102 = landingpad { ptr, i32 }
          cleanup
  %2103 = extractvalue { ptr, i32 } %2102, 0
  store ptr %2103, ptr %11, align 8
  %2104 = extractvalue { ptr, i32 } %2102, 1
  store i32 %2104, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2090) #9
  br label %2229

2105:                                             ; preds = %2081
  br label %2106

2106:                                             ; preds = %2105
  br label %2107

2107:                                             ; preds = %2106
  br label %2108

2108:                                             ; preds = %2107
  %2109 = load i64, ptr %189, align 8, !tbaa !59
  %2110 = load ptr, ptr %194, align 8, !tbaa !5
  %2111 = getelementptr inbounds %struct.Reloc, ptr %2110, i32 0, i32 3
  %2112 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2111) #9
  %2113 = icmp ule i64 %2109, %2112
  br i1 %2113, label %2133, label %2114

2114:                                             ; preds = %2108
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #9
  %2115 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull align 8 dereferenceable(8) %2115)
          to label %2116 unwind label %2120

2116:                                             ; preds = %2114
  call void @llvm.lifetime.start.p0(i64 1, ptr %206) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %205, ptr noundef nonnull align 1 dereferenceable(1) %206) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef %205)
          to label %2117 unwind label %2124

2117:                                             ; preds = %2116
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %206) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #9
  %2118 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2118, ptr noundef @.str.10)
          to label %2119 unwind label %2129

2119:                                             ; preds = %2117
  invoke void @__cxa_throw(ptr %2118, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2034

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

2124:                                             ; preds = %2116
  %2125 = landingpad { ptr, i32 }
          cleanup
  %2126 = extractvalue { ptr, i32 } %2125, 0
  store ptr %2126, ptr %11, align 8
  %2127 = extractvalue { ptr, i32 } %2125, 1
  store i32 %2127, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %206) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #9
  br label %2128

2128:                                             ; preds = %2124, %2120
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #9
  br label %2229

2129:                                             ; preds = %2117
  %2130 = landingpad { ptr, i32 }
          cleanup
  %2131 = extractvalue { ptr, i32 } %2130, 0
  store ptr %2131, ptr %11, align 8
  %2132 = extractvalue { ptr, i32 } %2130, 1
  store i32 %2132, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2118) #9
  br label %2229

2133:                                             ; preds = %2108
  br label %2134

2134:                                             ; preds = %2133
  br label %2135

2135:                                             ; preds = %2134
  br label %2136

2136:                                             ; preds = %2135
  %2137 = load i64, ptr %191, align 8, !tbaa !59
  %2138 = load ptr, ptr %194, align 8, !tbaa !5
  %2139 = getelementptr inbounds %struct.Reloc, ptr %2138, i32 0, i32 3
  %2140 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2139) #9
  %2141 = icmp ule i64 %2137, %2140
  br i1 %2141, label %2161, label %2142

2142:                                             ; preds = %2136
  call void @llvm.lifetime.start.p0(i64 8, ptr %207) #9
  %2143 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(8) %2143)
          to label %2144 unwind label %2148

2144:                                             ; preds = %2142
  call void @llvm.lifetime.start.p0(i64 1, ptr %209) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %208, ptr noundef nonnull align 1 dereferenceable(1) %209) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef %208)
          to label %2145 unwind label %2152

2145:                                             ; preds = %2144
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %209) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #9
  %2146 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2146, ptr noundef @.str.10)
          to label %2147 unwind label %2157

2147:                                             ; preds = %2145
  invoke void @__cxa_throw(ptr %2146, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2034

2148:                                             ; preds = %2142
  %2149 = landingpad { ptr, i32 }
          cleanup
  %2150 = extractvalue { ptr, i32 } %2149, 0
  store ptr %2150, ptr %11, align 8
  %2151 = extractvalue { ptr, i32 } %2149, 1
  store i32 %2151, ptr %12, align 4
  br label %2156

2152:                                             ; preds = %2144
  %2153 = landingpad { ptr, i32 }
          cleanup
  %2154 = extractvalue { ptr, i32 } %2153, 0
  store ptr %2154, ptr %11, align 8
  %2155 = extractvalue { ptr, i32 } %2153, 1
  store i32 %2155, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %209) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #9
  br label %2156

2156:                                             ; preds = %2152, %2148
  call void @llvm.lifetime.end.p0(i64 8, ptr %207) #9
  br label %2229

2157:                                             ; preds = %2145
  %2158 = landingpad { ptr, i32 }
          cleanup
  %2159 = extractvalue { ptr, i32 } %2158, 0
  store ptr %2159, ptr %11, align 8
  %2160 = extractvalue { ptr, i32 } %2158, 1
  store i32 %2160, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2146) #9
  br label %2229

2161:                                             ; preds = %2136
  br label %2162

2162:                                             ; preds = %2161
  br label %2163

2163:                                             ; preds = %2162
  br label %2164

2164:                                             ; preds = %2163
  %2165 = load i64, ptr %189, align 8, !tbaa !59
  %2166 = load i64, ptr %191, align 8, !tbaa !59
  %2167 = add i64 %2165, %2166
  %2168 = load ptr, ptr %194, align 8, !tbaa !5
  %2169 = getelementptr inbounds %struct.Reloc, ptr %2168, i32 0, i32 3
  %2170 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2169) #9
  %2171 = icmp ule i64 %2167, %2170
  br i1 %2171, label %2191, label %2172

2172:                                             ; preds = %2164
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #9
  %2173 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull align 8 dereferenceable(8) %2173)
          to label %2174 unwind label %2178

2174:                                             ; preds = %2172
  call void @llvm.lifetime.start.p0(i64 1, ptr %212) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_23vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef %211)
          to label %2175 unwind label %2182

2175:                                             ; preds = %2174
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %212) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #9
  %2176 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2176, ptr noundef @.str.10)
          to label %2177 unwind label %2187

2177:                                             ; preds = %2175
  invoke void @__cxa_throw(ptr %2176, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2034

2178:                                             ; preds = %2172
  %2179 = landingpad { ptr, i32 }
          cleanup
  %2180 = extractvalue { ptr, i32 } %2179, 0
  store ptr %2180, ptr %11, align 8
  %2181 = extractvalue { ptr, i32 } %2179, 1
  store i32 %2181, ptr %12, align 4
  br label %2186

2182:                                             ; preds = %2174
  %2183 = landingpad { ptr, i32 }
          cleanup
  %2184 = extractvalue { ptr, i32 } %2183, 0
  store ptr %2184, ptr %11, align 8
  %2185 = extractvalue { ptr, i32 } %2183, 1
  store i32 %2185, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %212) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #9
  br label %2186

2186:                                             ; preds = %2182, %2178
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #9
  br label %2229

2187:                                             ; preds = %2175
  %2188 = landingpad { ptr, i32 }
          cleanup
  %2189 = extractvalue { ptr, i32 } %2188, 0
  store ptr %2189, ptr %11, align 8
  %2190 = extractvalue { ptr, i32 } %2188, 1
  store i32 %2190, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2176) #9
  br label %2229

2191:                                             ; preds = %2164
  br label %2192

2192:                                             ; preds = %2191
  br label %2193

2193:                                             ; preds = %2192
  %2194 = load ptr, ptr %194, align 8, !tbaa !5
  %2195 = getelementptr inbounds %struct.Reloc, ptr %2194, i32 0, i32 3
  %2196 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %2195) #9
  %2197 = load i64, ptr %189, align 8, !tbaa !59
  %2198 = getelementptr inbounds i8, ptr %2196, i64 %2197
  %2199 = load ptr, ptr %194, align 8, !tbaa !5
  %2200 = getelementptr inbounds %struct.Reloc, ptr %2199, i32 0, i32 3
  %2201 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %2200) #9
  %2202 = load i64, ptr %189, align 8, !tbaa !59
  %2203 = getelementptr inbounds i8, ptr %2201, i64 %2202
  %2204 = load i64, ptr %191, align 8, !tbaa !59
  %2205 = getelementptr inbounds i8, ptr %2203, i64 %2204
  call void @llvm.lifetime.start.p0(i64 1, ptr %216) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %215, ptr noundef %2198, ptr noundef %2205, ptr noundef nonnull align 1 dereferenceable(1) %216)
          to label %2206 unwind label %2210

2206:                                             ; preds = %2193
  invoke void @_ZN3MIR8ConstantC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %214, ptr noundef %215)
          to label %2207 unwind label %2214

2207:                                             ; preds = %2206
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %213, ptr noundef %214)
          to label %2208 unwind label %2218

2208:                                             ; preds = %2207
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %213)
          to label %2209 unwind label %2222

2209:                                             ; preds = %2208
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %213) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %214) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %216) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %188) #9
  br label %2763

2210:                                             ; preds = %2193
  %2211 = landingpad { ptr, i32 }
          cleanup
  %2212 = extractvalue { ptr, i32 } %2211, 0
  store ptr %2212, ptr %11, align 8
  %2213 = extractvalue { ptr, i32 } %2211, 1
  store i32 %2213, ptr %12, align 4
  br label %2228

2214:                                             ; preds = %2206
  %2215 = landingpad { ptr, i32 }
          cleanup
  %2216 = extractvalue { ptr, i32 } %2215, 0
  store ptr %2216, ptr %11, align 8
  %2217 = extractvalue { ptr, i32 } %2215, 1
  store i32 %2217, ptr %12, align 4
  br label %2227

2218:                                             ; preds = %2207
  %2219 = landingpad { ptr, i32 }
          cleanup
  %2220 = extractvalue { ptr, i32 } %2219, 0
  store ptr %2220, ptr %11, align 8
  %2221 = extractvalue { ptr, i32 } %2219, 1
  store i32 %2221, ptr %12, align 4
  br label %2226

2222:                                             ; preds = %2208
  %2223 = landingpad { ptr, i32 }
          cleanup
  %2224 = extractvalue { ptr, i32 } %2223, 0
  store ptr %2224, ptr %11, align 8
  %2225 = extractvalue { ptr, i32 } %2223, 1
  store i32 %2225, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %213) #9
  br label %2226

2226:                                             ; preds = %2222, %2218
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %214) #9
  br label %2227

2227:                                             ; preds = %2226, %2214
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #9
  br label %2228

2228:                                             ; preds = %2227, %2210
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %216) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %216) #9
  br label %2229

2229:                                             ; preds = %2228, %2187, %2186, %2157, %2156, %2129, %2128, %2101, %2100, %2072, %2071, %2047, %2046, %2034
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #9
  br label %2230

2230:                                             ; preds = %2229, %2030
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #9
  br label %2231

2231:                                             ; preds = %2230, %2026
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #9
  br label %2232

2232:                                             ; preds = %2231, %2022
  call void @llvm.lifetime.end.p0(i64 4, ptr %188) #9
  br label %2767

2233:                                             ; preds = %1977
  %2234 = load ptr, ptr %186, align 8, !tbaa !5
  %2235 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2234, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 4, ptr %217) #9
  %2236 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2235)
          to label %2237 unwind label %1967

2237:                                             ; preds = %2233
  %2238 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %2236)
          to label %2239 unwind label %1967

2239:                                             ; preds = %2237
  br i1 %2238, label %2240, label %2250

2240:                                             ; preds = %2239
  %2241 = load ptr, ptr %186, align 8, !tbaa !5
  %2242 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %2241, i32 0, i32 2
  %2243 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2242)
          to label %2244 unwind label %1967

2244:                                             ; preds = %2240
  %2245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %2243)
          to label %2246 unwind label %1967

2246:                                             ; preds = %2244
  %2247 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %2245, i32 0, i32 0
  store i32 2, ptr %217, align 4, !tbaa !20
  %2248 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %2247, ptr noundef nonnull align 4 dereferenceable(4) %217)
          to label %2249 unwind label %2292

2249:                                             ; preds = %2246
  br label %2250

2250:                                             ; preds = %2249, %2239
  %2251 = phi i1 [ false, %2239 ], [ %2248, %2249 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr %217) #9
  br i1 %2251, label %2252, label %2725

2252:                                             ; preds = %2250
  call void @llvm.lifetime.start.p0(i64 4, ptr %218) #9
  %2253 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2254 unwind label %2296

2254:                                             ; preds = %2252
  %2255 = udiv i32 %2253, 8
  store i32 %2255, ptr %218, align 4, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %220) #9
  %2256 = load i32, ptr %218, align 4, !tbaa !46
  %2257 = zext i32 %2256 to i64
  %2258 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %2257)
          to label %2259 unwind label %2300

2259:                                             ; preds = %2254
  %2260 = getelementptr inbounds { i64, i64 }, ptr %220, i32 0, i32 0
  %2261 = extractvalue { i64, i64 } %2258, 0
  store i64 %2261, ptr %2260, align 8
  %2262 = getelementptr inbounds { i64, i64 }, ptr %220, i32 0, i32 1
  %2263 = extractvalue { i64, i64 } %2258, 1
  store i64 %2263, ptr %2262, align 8
  %2264 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %220)
          to label %2265 unwind label %2300

2265:                                             ; preds = %2259
  call void @llvm.lifetime.end.p0(i64 16, ptr %220) #9
  store i64 %2264, ptr %219, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 8, ptr %221) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %222) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %223) #9
  %2266 = load i32, ptr %218, align 4, !tbaa !46
  %2267 = zext i32 %2266 to i64
  %2268 = load i32, ptr %218, align 4, !tbaa !46
  %2269 = zext i32 %2268 to i64
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind writable sret(%struct.EncodedLiteralSlice) align 8 %223, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %2267, i64 noundef %2269)
          to label %2270 unwind label %2304

2270:                                             ; preds = %2265
  %2271 = load i32, ptr %218, align 4, !tbaa !46
  %2272 = zext i32 %2271 to i64
  %2273 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %223, i64 noundef %2272)
          to label %2274 unwind label %2304

2274:                                             ; preds = %2270
  %2275 = getelementptr inbounds { i64, i64 }, ptr %222, i32 0, i32 0
  %2276 = extractvalue { i64, i64 } %2273, 0
  store i64 %2276, ptr %2275, align 8
  %2277 = getelementptr inbounds { i64, i64 }, ptr %222, i32 0, i32 1
  %2278 = extractvalue { i64, i64 } %2273, 1
  store i64 %2278, ptr %2277, align 8
  %2279 = invoke noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %222)
          to label %2280 unwind label %2304

2280:                                             ; preds = %2274
  call void @llvm.lifetime.end.p0(i64 24, ptr %223) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #9
  store i64 %2279, ptr %221, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #9
  %2281 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %2)
          to label %2282 unwind label %2308

2282:                                             ; preds = %2280
  store ptr %2281, ptr %224, align 8, !tbaa !5
  br label %2283

2283:                                             ; preds = %2282
  %2284 = load ptr, ptr %224, align 8, !tbaa !5
  %2285 = icmp ne ptr %2284, null
  br i1 %2285, label %2325, label %2286

2286:                                             ; preds = %2283
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #9
  %2287 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef nonnull align 8 dereferenceable(8) %2287)
          to label %2288 unwind label %2312

2288:                                             ; preds = %2286
  call void @llvm.lifetime.start.p0(i64 1, ptr %227) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_24vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %226, ptr noundef nonnull align 1 dereferenceable(1) %227) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef %226)
          to label %2289 unwind label %2316

2289:                                             ; preds = %2288
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %227) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #9
  %2290 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2290, ptr noundef @.str.10)
          to label %2291 unwind label %2321

2291:                                             ; preds = %2289
  invoke void @__cxa_throw(ptr %2290, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2308

2292:                                             ; preds = %2246
  %2293 = landingpad { ptr, i32 }
          cleanup
  %2294 = extractvalue { ptr, i32 } %2293, 0
  store ptr %2294, ptr %11, align 8
  %2295 = extractvalue { ptr, i32 } %2293, 1
  store i32 %2295, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %217) #9
  br label %2767

2296:                                             ; preds = %2252
  %2297 = landingpad { ptr, i32 }
          cleanup
  %2298 = extractvalue { ptr, i32 } %2297, 0
  store ptr %2298, ptr %11, align 8
  %2299 = extractvalue { ptr, i32 } %2297, 1
  store i32 %2299, ptr %12, align 4
  br label %2724

2300:                                             ; preds = %2259, %2254
  %2301 = landingpad { ptr, i32 }
          cleanup
  %2302 = extractvalue { ptr, i32 } %2301, 0
  store ptr %2302, ptr %11, align 8
  %2303 = extractvalue { ptr, i32 } %2301, 1
  store i32 %2303, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %220) #9
  br label %2723

2304:                                             ; preds = %2274, %2270, %2265
  %2305 = landingpad { ptr, i32 }
          cleanup
  %2306 = extractvalue { ptr, i32 } %2305, 0
  store ptr %2306, ptr %11, align 8
  %2307 = extractvalue { ptr, i32 } %2305, 1
  store i32 %2307, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %223) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %222) #9
  br label %2722

2308:                                             ; preds = %2668, %2638, %2610, %2367, %2336, %2291, %2280
  %2309 = landingpad { ptr, i32 }
          cleanup
  %2310 = extractvalue { ptr, i32 } %2309, 0
  store ptr %2310, ptr %11, align 8
  %2311 = extractvalue { ptr, i32 } %2309, 1
  store i32 %2311, ptr %12, align 4
  br label %2721

2312:                                             ; preds = %2286
  %2313 = landingpad { ptr, i32 }
          cleanup
  %2314 = extractvalue { ptr, i32 } %2313, 0
  store ptr %2314, ptr %11, align 8
  %2315 = extractvalue { ptr, i32 } %2313, 1
  store i32 %2315, ptr %12, align 4
  br label %2320

2316:                                             ; preds = %2288
  %2317 = landingpad { ptr, i32 }
          cleanup
  %2318 = extractvalue { ptr, i32 } %2317, 0
  store ptr %2318, ptr %11, align 8
  %2319 = extractvalue { ptr, i32 } %2317, 1
  store i32 %2319, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %227) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #9
  br label %2320

2320:                                             ; preds = %2316, %2312
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #9
  br label %2721

2321:                                             ; preds = %2289
  %2322 = landingpad { ptr, i32 }
          cleanup
  %2323 = extractvalue { ptr, i32 } %2322, 0
  store ptr %2323, ptr %11, align 8
  %2324 = extractvalue { ptr, i32 } %2322, 1
  store i32 %2324, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2290) #9
  br label %2721

2325:                                             ; preds = %2283
  br label %2326

2326:                                             ; preds = %2325
  br label %2327

2327:                                             ; preds = %2326
  br label %2328

2328:                                             ; preds = %2327
  %2329 = load i64, ptr %219, align 8, !tbaa !59
  %2330 = icmp uge i64 %2329, 4096
  br i1 %2330, label %2350, label %2331

2331:                                             ; preds = %2328
  call void @llvm.lifetime.start.p0(i64 8, ptr %228) #9
  %2332 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull align 8 dereferenceable(8) %2332)
          to label %2333 unwind label %2337

2333:                                             ; preds = %2331
  call void @llvm.lifetime.start.p0(i64 1, ptr %230) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_25vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %229, ptr noundef nonnull align 1 dereferenceable(1) %230) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef %229)
          to label %2334 unwind label %2341

2334:                                             ; preds = %2333
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %230) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %228) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #9
  %2335 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2335, ptr noundef @.str.10)
          to label %2336 unwind label %2346

2336:                                             ; preds = %2334
  invoke void @__cxa_throw(ptr %2335, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2308

2337:                                             ; preds = %2331
  %2338 = landingpad { ptr, i32 }
          cleanup
  %2339 = extractvalue { ptr, i32 } %2338, 0
  store ptr %2339, ptr %11, align 8
  %2340 = extractvalue { ptr, i32 } %2338, 1
  store i32 %2340, ptr %12, align 4
  br label %2345

2341:                                             ; preds = %2333
  %2342 = landingpad { ptr, i32 }
          cleanup
  %2343 = extractvalue { ptr, i32 } %2342, 0
  store ptr %2343, ptr %11, align 8
  %2344 = extractvalue { ptr, i32 } %2342, 1
  store i32 %2344, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %230) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %228) #9
  br label %2345

2345:                                             ; preds = %2341, %2337
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #9
  br label %2721

2346:                                             ; preds = %2334
  %2347 = landingpad { ptr, i32 }
          cleanup
  %2348 = extractvalue { ptr, i32 } %2347, 0
  store ptr %2348, ptr %11, align 8
  %2349 = extractvalue { ptr, i32 } %2347, 1
  store i32 %2349, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2335) #9
  br label %2721

2350:                                             ; preds = %2328
  br label %2351

2351:                                             ; preds = %2350
  br label %2352

2352:                                             ; preds = %2351
  %2353 = load i64, ptr %219, align 8, !tbaa !59
  %2354 = sub i64 %2353, 4096
  store i64 %2354, ptr %219, align 8, !tbaa !59
  %2355 = load ptr, ptr %224, align 8, !tbaa !5
  %2356 = getelementptr inbounds %struct.Reloc, ptr %2355, i32 0, i32 2
  %2357 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %2356) #9
  br i1 %2357, label %2358, label %2598

2358:                                             ; preds = %2352
  br label %2359

2359:                                             ; preds = %2358
  %2360 = load i64, ptr %219, align 8, !tbaa !59
  %2361 = icmp eq i64 %2360, 0
  br i1 %2361, label %2381, label %2362

2362:                                             ; preds = %2359
  call void @llvm.lifetime.start.p0(i64 8, ptr %231) #9
  %2363 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef nonnull align 8 dereferenceable(8) %2363)
          to label %2364 unwind label %2368

2364:                                             ; preds = %2362
  call void @llvm.lifetime.start.p0(i64 1, ptr %233) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_26vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %232, ptr noundef nonnull align 1 dereferenceable(1) %233) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef %232)
          to label %2365 unwind label %2372

2365:                                             ; preds = %2364
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %233) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %231) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #9
  %2366 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2366, ptr noundef @.str.10)
          to label %2367 unwind label %2377

2367:                                             ; preds = %2365
  invoke void @__cxa_throw(ptr %2366, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2308

2368:                                             ; preds = %2362
  %2369 = landingpad { ptr, i32 }
          cleanup
  %2370 = extractvalue { ptr, i32 } %2369, 0
  store ptr %2370, ptr %11, align 8
  %2371 = extractvalue { ptr, i32 } %2369, 1
  store i32 %2371, ptr %12, align 4
  br label %2376

2372:                                             ; preds = %2364
  %2373 = landingpad { ptr, i32 }
          cleanup
  %2374 = extractvalue { ptr, i32 } %2373, 0
  store ptr %2374, ptr %11, align 8
  %2375 = extractvalue { ptr, i32 } %2373, 1
  store i32 %2375, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %233) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %231) #9
  br label %2376

2376:                                             ; preds = %2372, %2368
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #9
  br label %2721

2377:                                             ; preds = %2365
  %2378 = landingpad { ptr, i32 }
          cleanup
  %2379 = extractvalue { ptr, i32 } %2378, 0
  store ptr %2379, ptr %11, align 8
  %2380 = extractvalue { ptr, i32 } %2378, 1
  store i32 %2380, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2366) #9
  br label %2721

2381:                                             ; preds = %2359
  br label %2382

2382:                                             ; preds = %2381
  br label %2383

2383:                                             ; preds = %2382
  call void @llvm.lifetime.start.p0(i64 144, ptr %234) #9
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %234)
          to label %2384 unwind label %2403

2384:                                             ; preds = %2383
  call void @llvm.lifetime.start.p0(i64 24, ptr %235) #9
  %2385 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 0
  %2386 = load ptr, ptr %2385, align 8, !tbaa !35
  %2387 = load ptr, ptr %6, align 8, !tbaa !5
  %2388 = load ptr, ptr %224, align 8, !tbaa !5
  %2389 = getelementptr inbounds %struct.Reloc, ptr %2388, i32 0, i32 2
  %2390 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2389) #9
  invoke void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %235, ptr noundef nonnull align 8 dereferenceable(424) %2386, ptr noundef nonnull align 8 dereferenceable(8) %2387, ptr noundef nonnull align 8 dereferenceable(88) %2390, ptr noundef nonnull align 8 dereferenceable(144) %234, i1 noundef zeroext false, ptr noundef null)
          to label %2391 unwind label %2407

2391:                                             ; preds = %2384
  br label %2392

2392:                                             ; preds = %2391
  %2393 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve8ValuePtr9is_StaticEv(ptr noundef nonnull align 8 dereferenceable(24) %235)
          to label %2394 unwind label %2411

2394:                                             ; preds = %2392
  br i1 %2393, label %2428, label %2395

2395:                                             ; preds = %2394
  call void @llvm.lifetime.start.p0(i64 8, ptr %236) #9
  %2396 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %236, ptr noundef nonnull align 8 dereferenceable(8) %2396)
          to label %2397 unwind label %2415

2397:                                             ; preds = %2395
  call void @llvm.lifetime.start.p0(i64 16, ptr %238) #9
  %2398 = getelementptr inbounds %class.anon.324, ptr %238, i32 0, i32 0
  store ptr %224, ptr %2398, align 8, !tbaa !5
  %2399 = getelementptr inbounds %class.anon.324, ptr %238, i32 0, i32 1
  store ptr %235, ptr %2399, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_27vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %237, ptr noundef nonnull align 8 dereferenceable(16) %238) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %236, ptr noundef %237)
          to label %2400 unwind label %2419

2400:                                             ; preds = %2397
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %238) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %236) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #9
  %2401 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2401, ptr noundef @.str.10)
          to label %2402 unwind label %2424

2402:                                             ; preds = %2400
  invoke void @__cxa_throw(ptr %2401, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2411

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

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

2411:                                             ; preds = %2402, %2392
  %2412 = landingpad { ptr, i32 }
          cleanup
  %2413 = extractvalue { ptr, i32 } %2412, 0
  store ptr %2413, ptr %11, align 8
  %2414 = extractvalue { ptr, i32 } %2412, 1
  store i32 %2414, ptr %12, align 4
  br label %2595

2415:                                             ; preds = %2395
  %2416 = landingpad { ptr, i32 }
          cleanup
  %2417 = extractvalue { ptr, i32 } %2416, 0
  store ptr %2417, ptr %11, align 8
  %2418 = extractvalue { ptr, i32 } %2416, 1
  store i32 %2418, ptr %12, align 4
  br label %2423

2419:                                             ; preds = %2397
  %2420 = landingpad { ptr, i32 }
          cleanup
  %2421 = extractvalue { ptr, i32 } %2420, 0
  store ptr %2421, ptr %11, align 8
  %2422 = extractvalue { ptr, i32 } %2420, 1
  store i32 %2422, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %238) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %236) #9
  br label %2423

2423:                                             ; preds = %2419, %2415
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #9
  br label %2595

2424:                                             ; preds = %2400
  %2425 = landingpad { ptr, i32 }
          cleanup
  %2426 = extractvalue { ptr, i32 } %2425, 0
  store ptr %2426, ptr %11, align 8
  %2427 = extractvalue { ptr, i32 } %2425, 1
  store i32 %2427, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2401) #9
  br label %2595

2428:                                             ; preds = %2394
  br label %2429

2429:                                             ; preds = %2428
  br label %2430

2430:                                             ; preds = %2429
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #9
  %2431 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(24) %235)
          to label %2432 unwind label %2446

2432:                                             ; preds = %2430
  %2433 = load ptr, ptr %2431, align 8, !tbaa !5
  store ptr %2433, ptr %239, align 8, !tbaa !5
  br label %2434

2434:                                             ; preds = %2432
  %2435 = load ptr, ptr %239, align 8, !tbaa !5
  %2436 = getelementptr inbounds %"class.HIR::Static", ptr %2435, i32 0, i32 6
  %2437 = load i8, ptr %2436, align 8, !tbaa !95, !range !13, !noundef !14
  %2438 = trunc i8 %2437 to i1
  br i1 %2438, label %2463, label %2439

2439:                                             ; preds = %2434
  call void @llvm.lifetime.start.p0(i64 8, ptr %240) #9
  %2440 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef nonnull align 8 dereferenceable(8) %2440)
          to label %2441 unwind label %2450

2441:                                             ; preds = %2439
  call void @llvm.lifetime.start.p0(i64 8, ptr %242) #9
  %2442 = getelementptr inbounds %class.anon.336, ptr %242, i32 0, i32 0
  store ptr %224, ptr %2442, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %241, ptr noundef nonnull align 8 dereferenceable(8) %242) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef %241)
          to label %2443 unwind label %2454

2443:                                             ; preds = %2441
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %241) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #9
  %2444 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2444, ptr noundef @.str.10)
          to label %2445 unwind label %2459

2445:                                             ; preds = %2443
  invoke void @__cxa_throw(ptr %2444, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2446

2446:                                             ; preds = %2445, %2430
  %2447 = landingpad { ptr, i32 }
          cleanup
  %2448 = extractvalue { ptr, i32 } %2447, 0
  store ptr %2448, ptr %11, align 8
  %2449 = extractvalue { ptr, i32 } %2447, 1
  store i32 %2449, ptr %12, align 4
  br label %2594

2450:                                             ; preds = %2439
  %2451 = landingpad { ptr, i32 }
          cleanup
  %2452 = extractvalue { ptr, i32 } %2451, 0
  store ptr %2452, ptr %11, align 8
  %2453 = extractvalue { ptr, i32 } %2451, 1
  store i32 %2453, ptr %12, align 4
  br label %2458

2454:                                             ; preds = %2441
  %2455 = landingpad { ptr, i32 }
          cleanup
  %2456 = extractvalue { ptr, i32 } %2455, 0
  store ptr %2456, ptr %11, align 8
  %2457 = extractvalue { ptr, i32 } %2455, 1
  store i32 %2457, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %241) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %240) #9
  br label %2458

2458:                                             ; preds = %2454, %2450
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #9
  br label %2594

2459:                                             ; preds = %2443
  %2460 = landingpad { ptr, i32 }
          cleanup
  %2461 = extractvalue { ptr, i32 } %2460, 0
  store ptr %2461, ptr %11, align 8
  %2462 = extractvalue { ptr, i32 } %2460, 1
  store i32 %2462, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2444) #9
  br label %2594

2463:                                             ; preds = %2434
  br label %2464

2464:                                             ; preds = %2463
  br label %2465

2465:                                             ; preds = %2464
  call void @llvm.lifetime.start.p0(i64 8, ptr %243) #9
  %2466 = load ptr, ptr %239, align 8, !tbaa !5
  %2467 = getelementptr inbounds %"class.HIR::Static", ptr %2466, i32 0, i32 5
  store ptr %2467, ptr %243, align 8, !tbaa !5
  br label %2468

2468:                                             ; preds = %2465
  %2469 = load i64, ptr %219, align 8, !tbaa !59
  %2470 = load ptr, ptr %243, align 8, !tbaa !5
  %2471 = getelementptr inbounds %struct.EncodedLiteral, ptr %2470, i32 0, i32 0
  %2472 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2471) #9
  %2473 = icmp ule i64 %2469, %2472
  br i1 %2473, label %2497, label %2474

2474:                                             ; preds = %2468
  call void @llvm.lifetime.start.p0(i64 8, ptr %244) #9
  %2475 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %2475)
          to label %2476 unwind label %2480

2476:                                             ; preds = %2474
  call void @llvm.lifetime.start.p0(i64 1, ptr %246) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %245, ptr noundef nonnull align 1 dereferenceable(1) %246) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef %245)
          to label %2477 unwind label %2484

2477:                                             ; preds = %2476
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %245) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #9
  %2478 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2478, ptr noundef @.str.10)
          to label %2479 unwind label %2489

2479:                                             ; preds = %2477
  invoke void @__cxa_throw(ptr %2478, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2493

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

2484:                                             ; preds = %2476
  %2485 = landingpad { ptr, i32 }
          cleanup
  %2486 = extractvalue { ptr, i32 } %2485, 0
  store ptr %2486, ptr %11, align 8
  %2487 = extractvalue { ptr, i32 } %2485, 1
  store i32 %2487, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %245) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %244) #9
  br label %2488

2488:                                             ; preds = %2484, %2480
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #9
  br label %2593

2489:                                             ; preds = %2477
  %2490 = landingpad { ptr, i32 }
          cleanup
  %2491 = extractvalue { ptr, i32 } %2490, 0
  store ptr %2491, ptr %11, align 8
  %2492 = extractvalue { ptr, i32 } %2490, 1
  store i32 %2492, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2478) #9
  br label %2593

2493:                                             ; preds = %2541, %2511, %2479
  %2494 = landingpad { ptr, i32 }
          cleanup
  %2495 = extractvalue { ptr, i32 } %2494, 0
  store ptr %2495, ptr %11, align 8
  %2496 = extractvalue { ptr, i32 } %2494, 1
  store i32 %2496, ptr %12, align 4
  br label %2593

2497:                                             ; preds = %2468
  br label %2498

2498:                                             ; preds = %2497
  br label %2499

2499:                                             ; preds = %2498
  br label %2500

2500:                                             ; preds = %2499
  %2501 = load i64, ptr %221, align 8, !tbaa !59
  %2502 = load ptr, ptr %243, align 8, !tbaa !5
  %2503 = getelementptr inbounds %struct.EncodedLiteral, ptr %2502, i32 0, i32 0
  %2504 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2503) #9
  %2505 = icmp ule i64 %2501, %2504
  br i1 %2505, label %2525, label %2506

2506:                                             ; preds = %2500
  call void @llvm.lifetime.start.p0(i64 8, ptr %247) #9
  %2507 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef nonnull align 8 dereferenceable(8) %2507)
          to label %2508 unwind label %2512

2508:                                             ; preds = %2506
  call void @llvm.lifetime.start.p0(i64 1, ptr %249) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_30vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %248, ptr noundef nonnull align 1 dereferenceable(1) %249) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef %248)
          to label %2509 unwind label %2516

2509:                                             ; preds = %2508
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %248) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %249) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %247) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %247) #9
  %2510 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2510, ptr noundef @.str.10)
          to label %2511 unwind label %2521

2511:                                             ; preds = %2509
  invoke void @__cxa_throw(ptr %2510, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2493

2512:                                             ; preds = %2506
  %2513 = landingpad { ptr, i32 }
          cleanup
  %2514 = extractvalue { ptr, i32 } %2513, 0
  store ptr %2514, ptr %11, align 8
  %2515 = extractvalue { ptr, i32 } %2513, 1
  store i32 %2515, ptr %12, align 4
  br label %2520

2516:                                             ; preds = %2508
  %2517 = landingpad { ptr, i32 }
          cleanup
  %2518 = extractvalue { ptr, i32 } %2517, 0
  store ptr %2518, ptr %11, align 8
  %2519 = extractvalue { ptr, i32 } %2517, 1
  store i32 %2519, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %248) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %249) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %247) #9
  br label %2520

2520:                                             ; preds = %2516, %2512
  call void @llvm.lifetime.end.p0(i64 8, ptr %247) #9
  br label %2593

2521:                                             ; preds = %2509
  %2522 = landingpad { ptr, i32 }
          cleanup
  %2523 = extractvalue { ptr, i32 } %2522, 0
  store ptr %2523, ptr %11, align 8
  %2524 = extractvalue { ptr, i32 } %2522, 1
  store i32 %2524, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2510) #9
  br label %2593

2525:                                             ; preds = %2500
  br label %2526

2526:                                             ; preds = %2525
  br label %2527

2527:                                             ; preds = %2526
  br label %2528

2528:                                             ; preds = %2527
  %2529 = load i64, ptr %219, align 8, !tbaa !59
  %2530 = load i64, ptr %221, align 8, !tbaa !59
  %2531 = add i64 %2529, %2530
  %2532 = load ptr, ptr %243, align 8, !tbaa !5
  %2533 = getelementptr inbounds %struct.EncodedLiteral, ptr %2532, i32 0, i32 0
  %2534 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2533) #9
  %2535 = icmp ule i64 %2531, %2534
  br i1 %2535, label %2555, label %2536

2536:                                             ; preds = %2528
  call void @llvm.lifetime.start.p0(i64 8, ptr %250) #9
  %2537 = 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) %2537)
          to label %2538 unwind label %2542

2538:                                             ; preds = %2536
  call void @llvm.lifetime.start.p0(i64 1, ptr %252) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %251, ptr noundef nonnull align 1 dereferenceable(1) %252) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef %251)
          to label %2539 unwind label %2546

2539:                                             ; preds = %2538
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %252) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %250) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #9
  %2540 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2540, ptr noundef @.str.10)
          to label %2541 unwind label %2551

2541:                                             ; preds = %2539
  invoke void @__cxa_throw(ptr %2540, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2493

2542:                                             ; preds = %2536
  %2543 = landingpad { ptr, i32 }
          cleanup
  %2544 = extractvalue { ptr, i32 } %2543, 0
  store ptr %2544, ptr %11, align 8
  %2545 = extractvalue { ptr, i32 } %2543, 1
  store i32 %2545, ptr %12, align 4
  br label %2550

2546:                                             ; preds = %2538
  %2547 = landingpad { ptr, i32 }
          cleanup
  %2548 = extractvalue { ptr, i32 } %2547, 0
  store ptr %2548, ptr %11, align 8
  %2549 = extractvalue { ptr, i32 } %2547, 1
  store i32 %2549, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %251) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %252) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %250) #9
  br label %2550

2550:                                             ; preds = %2546, %2542
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #9
  br label %2593

2551:                                             ; preds = %2539
  %2552 = landingpad { ptr, i32 }
          cleanup
  %2553 = extractvalue { ptr, i32 } %2552, 0
  store ptr %2553, ptr %11, align 8
  %2554 = extractvalue { ptr, i32 } %2552, 1
  store i32 %2554, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2540) #9
  br label %2593

2555:                                             ; preds = %2528
  br label %2556

2556:                                             ; preds = %2555
  br label %2557

2557:                                             ; preds = %2556
  %2558 = load ptr, ptr %243, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.EncodedLiteral, ptr %2558, i32 0, i32 0
  %2560 = call noundef ptr @_ZNKSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %2559) #9
  %2561 = load i64, ptr %219, align 8, !tbaa !59
  %2562 = getelementptr inbounds i8, ptr %2560, i64 %2561
  %2563 = load ptr, ptr %243, align 8, !tbaa !5
  %2564 = getelementptr inbounds %struct.EncodedLiteral, ptr %2563, i32 0, i32 0
  %2565 = call noundef ptr @_ZNKSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %2564) #9
  %2566 = load i64, ptr %219, align 8, !tbaa !59
  %2567 = getelementptr inbounds i8, ptr %2565, i64 %2566
  %2568 = load i64, ptr %221, align 8, !tbaa !59
  %2569 = getelementptr inbounds i8, ptr %2567, i64 %2568
  call void @llvm.lifetime.start.p0(i64 1, ptr %256) #9
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %256) #9
  invoke void @_ZNSt6vectorIhSaIhEEC2IPKhvEET_S5_RKS0_(ptr noundef nonnull align 8 dereferenceable(24) %255, ptr noundef %2562, ptr noundef %2569, ptr noundef nonnull align 1 dereferenceable(1) %256)
          to label %2570 unwind label %2574

2570:                                             ; preds = %2557
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %254, ptr noundef %255)
          to label %2571 unwind label %2578

2571:                                             ; preds = %2570
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %253, ptr noundef %254)
          to label %2572 unwind label %2582

2572:                                             ; preds = %2571
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %253)
          to label %2573 unwind label %2586

2573:                                             ; preds = %2572
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %253) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %254) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %255) #9
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %256) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %256) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #9
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %235) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %235) #9
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %234) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr %234) #9
  br label %2720

2574:                                             ; preds = %2557
  %2575 = landingpad { ptr, i32 }
          cleanup
  %2576 = extractvalue { ptr, i32 } %2575, 0
  store ptr %2576, ptr %11, align 8
  %2577 = extractvalue { ptr, i32 } %2575, 1
  store i32 %2577, ptr %12, align 4
  br label %2592

2578:                                             ; preds = %2570
  %2579 = landingpad { ptr, i32 }
          cleanup
  %2580 = extractvalue { ptr, i32 } %2579, 0
  store ptr %2580, ptr %11, align 8
  %2581 = extractvalue { ptr, i32 } %2579, 1
  store i32 %2581, ptr %12, align 4
  br label %2591

2582:                                             ; preds = %2571
  %2583 = landingpad { ptr, i32 }
          cleanup
  %2584 = extractvalue { ptr, i32 } %2583, 0
  store ptr %2584, ptr %11, align 8
  %2585 = extractvalue { ptr, i32 } %2583, 1
  store i32 %2585, ptr %12, align 4
  br label %2590

2586:                                             ; preds = %2572
  %2587 = landingpad { ptr, i32 }
          cleanup
  %2588 = extractvalue { ptr, i32 } %2587, 0
  store ptr %2588, ptr %11, align 8
  %2589 = extractvalue { ptr, i32 } %2587, 1
  store i32 %2589, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %253) #9
  br label %2590

2590:                                             ; preds = %2586, %2582
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %254) #9
  br label %2591

2591:                                             ; preds = %2590, %2578
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %255) #9
  br label %2592

2592:                                             ; preds = %2591, %2574
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %256) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %256) #9
  br label %2593

2593:                                             ; preds = %2592, %2551, %2550, %2521, %2520, %2493, %2489, %2488
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #9
  br label %2594

2594:                                             ; preds = %2593, %2459, %2458, %2446
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #9
  br label %2595

2595:                                             ; preds = %2594, %2424, %2423, %2411
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %235) #9
  br label %2596

2596:                                             ; preds = %2595, %2407
  call void @llvm.lifetime.end.p0(i64 24, ptr %235) #9
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %234) #9
  br label %2597

2597:                                             ; preds = %2596, %2403
  call void @llvm.lifetime.end.p0(i64 144, ptr %234) #9
  br label %2721

2598:                                             ; preds = %2352
  br label %2599

2599:                                             ; preds = %2598
  %2600 = load i64, ptr %219, align 8, !tbaa !59
  %2601 = load ptr, ptr %224, align 8, !tbaa !5
  %2602 = getelementptr inbounds %struct.Reloc, ptr %2601, i32 0, i32 3
  %2603 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2602) #9
  %2604 = icmp ule i64 %2600, %2603
  br i1 %2604, label %2624, label %2605

2605:                                             ; preds = %2599
  call void @llvm.lifetime.start.p0(i64 8, ptr %257) #9
  %2606 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull align 8 dereferenceable(8) %2606)
          to label %2607 unwind label %2611

2607:                                             ; preds = %2605
  call void @llvm.lifetime.start.p0(i64 1, ptr %259) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_32vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull align 1 dereferenceable(1) %259) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef %258)
          to label %2608 unwind label %2615

2608:                                             ; preds = %2607
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %259) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #9
  %2609 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2609, ptr noundef @.str.10)
          to label %2610 unwind label %2620

2610:                                             ; preds = %2608
  invoke void @__cxa_throw(ptr %2609, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2308

2611:                                             ; preds = %2605
  %2612 = landingpad { ptr, i32 }
          cleanup
  %2613 = extractvalue { ptr, i32 } %2612, 0
  store ptr %2613, ptr %11, align 8
  %2614 = extractvalue { ptr, i32 } %2612, 1
  store i32 %2614, ptr %12, align 4
  br label %2619

2615:                                             ; preds = %2607
  %2616 = landingpad { ptr, i32 }
          cleanup
  %2617 = extractvalue { ptr, i32 } %2616, 0
  store ptr %2617, ptr %11, align 8
  %2618 = extractvalue { ptr, i32 } %2616, 1
  store i32 %2618, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %259) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %257) #9
  br label %2619

2619:                                             ; preds = %2615, %2611
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #9
  br label %2721

2620:                                             ; preds = %2608
  %2621 = landingpad { ptr, i32 }
          cleanup
  %2622 = extractvalue { ptr, i32 } %2621, 0
  store ptr %2622, ptr %11, align 8
  %2623 = extractvalue { ptr, i32 } %2621, 1
  store i32 %2623, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2609) #9
  br label %2721

2624:                                             ; preds = %2599
  br label %2625

2625:                                             ; preds = %2624
  br label %2626

2626:                                             ; preds = %2625
  br label %2627

2627:                                             ; preds = %2626
  %2628 = load i64, ptr %221, align 8, !tbaa !59
  %2629 = load ptr, ptr %224, align 8, !tbaa !5
  %2630 = getelementptr inbounds %struct.Reloc, ptr %2629, i32 0, i32 3
  %2631 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2630) #9
  %2632 = icmp ule i64 %2628, %2631
  br i1 %2632, label %2652, label %2633

2633:                                             ; preds = %2627
  call void @llvm.lifetime.start.p0(i64 8, ptr %260) #9
  %2634 = 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) %2634)
          to label %2635 unwind label %2639

2635:                                             ; preds = %2633
  call void @llvm.lifetime.start.p0(i64 1, ptr %262) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %261, ptr noundef nonnull align 1 dereferenceable(1) %262) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef %261)
          to label %2636 unwind label %2643

2636:                                             ; preds = %2635
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %262) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #9
  %2637 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2637, ptr noundef @.str.10)
          to label %2638 unwind label %2648

2638:                                             ; preds = %2636
  invoke void @__cxa_throw(ptr %2637, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2308

2639:                                             ; preds = %2633
  %2640 = landingpad { ptr, i32 }
          cleanup
  %2641 = extractvalue { ptr, i32 } %2640, 0
  store ptr %2641, ptr %11, align 8
  %2642 = extractvalue { ptr, i32 } %2640, 1
  store i32 %2642, ptr %12, align 4
  br label %2647

2643:                                             ; preds = %2635
  %2644 = landingpad { ptr, i32 }
          cleanup
  %2645 = extractvalue { ptr, i32 } %2644, 0
  store ptr %2645, ptr %11, align 8
  %2646 = extractvalue { ptr, i32 } %2644, 1
  store i32 %2646, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %261) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %262) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %260) #9
  br label %2647

2647:                                             ; preds = %2643, %2639
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #9
  br label %2721

2648:                                             ; preds = %2636
  %2649 = landingpad { ptr, i32 }
          cleanup
  %2650 = extractvalue { ptr, i32 } %2649, 0
  store ptr %2650, ptr %11, align 8
  %2651 = extractvalue { ptr, i32 } %2649, 1
  store i32 %2651, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2637) #9
  br label %2721

2652:                                             ; preds = %2627
  br label %2653

2653:                                             ; preds = %2652
  br label %2654

2654:                                             ; preds = %2653
  br label %2655

2655:                                             ; preds = %2654
  %2656 = load i64, ptr %219, align 8, !tbaa !59
  %2657 = load i64, ptr %221, align 8, !tbaa !59
  %2658 = add i64 %2656, %2657
  %2659 = load ptr, ptr %224, align 8, !tbaa !5
  %2660 = getelementptr inbounds %struct.Reloc, ptr %2659, i32 0, i32 3
  %2661 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %2660) #9
  %2662 = icmp ule i64 %2658, %2661
  br i1 %2662, label %2682, label %2663

2663:                                             ; preds = %2655
  call void @llvm.lifetime.start.p0(i64 8, ptr %263) #9
  %2664 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef nonnull align 8 dereferenceable(8) %2664)
          to label %2665 unwind label %2669

2665:                                             ; preds = %2663
  call void @llvm.lifetime.start.p0(i64 1, ptr %265) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_34vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %264, ptr noundef nonnull align 1 dereferenceable(1) %265) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef %264)
          to label %2666 unwind label %2673

2666:                                             ; preds = %2665
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %264) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %265) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %263) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #9
  %2667 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2667, ptr noundef @.str.10)
          to label %2668 unwind label %2678

2668:                                             ; preds = %2666
  invoke void @__cxa_throw(ptr %2667, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2308

2669:                                             ; preds = %2663
  %2670 = landingpad { ptr, i32 }
          cleanup
  %2671 = extractvalue { ptr, i32 } %2670, 0
  store ptr %2671, ptr %11, align 8
  %2672 = extractvalue { ptr, i32 } %2670, 1
  store i32 %2672, ptr %12, align 4
  br label %2677

2673:                                             ; preds = %2665
  %2674 = landingpad { ptr, i32 }
          cleanup
  %2675 = extractvalue { ptr, i32 } %2674, 0
  store ptr %2675, ptr %11, align 8
  %2676 = extractvalue { ptr, i32 } %2674, 1
  store i32 %2676, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %264) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %265) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %263) #9
  br label %2677

2677:                                             ; preds = %2673, %2669
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #9
  br label %2721

2678:                                             ; preds = %2666
  %2679 = landingpad { ptr, i32 }
          cleanup
  %2680 = extractvalue { ptr, i32 } %2679, 0
  store ptr %2680, ptr %11, align 8
  %2681 = extractvalue { ptr, i32 } %2679, 1
  store i32 %2681, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2667) #9
  br label %2721

2682:                                             ; preds = %2655
  br label %2683

2683:                                             ; preds = %2682
  br label %2684

2684:                                             ; preds = %2683
  %2685 = load ptr, ptr %224, align 8, !tbaa !5
  %2686 = getelementptr inbounds %struct.Reloc, ptr %2685, i32 0, i32 3
  %2687 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %2686) #9
  %2688 = load i64, ptr %219, align 8, !tbaa !59
  %2689 = getelementptr inbounds i8, ptr %2687, i64 %2688
  %2690 = load ptr, ptr %224, align 8, !tbaa !5
  %2691 = getelementptr inbounds %struct.Reloc, ptr %2690, i32 0, i32 3
  %2692 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %2691) #9
  %2693 = load i64, ptr %219, align 8, !tbaa !59
  %2694 = getelementptr inbounds i8, ptr %2692, i64 %2693
  %2695 = load i64, ptr %221, align 8, !tbaa !59
  %2696 = getelementptr inbounds i8, ptr %2694, i64 %2695
  call void @llvm.lifetime.start.p0(i64 1, ptr %269) #9
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %269) #9
  invoke void @_ZNSt6vectorIhSaIhEEC2IPKcvEET_S5_RKS0_(ptr noundef nonnull align 8 dereferenceable(24) %268, ptr noundef %2689, ptr noundef %2696, ptr noundef nonnull align 1 dereferenceable(1) %269)
          to label %2697 unwind label %2701

2697:                                             ; preds = %2684
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %267, ptr noundef %268)
          to label %2698 unwind label %2705

2698:                                             ; preds = %2697
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %266, ptr noundef %267)
          to label %2699 unwind label %2709

2699:                                             ; preds = %2698
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %266)
          to label %2700 unwind label %2713

2700:                                             ; preds = %2699
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %266) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %267) #9
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %268) #9
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %269) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %269) #9
  br label %2720

2701:                                             ; preds = %2684
  %2702 = landingpad { ptr, i32 }
          cleanup
  %2703 = extractvalue { ptr, i32 } %2702, 0
  store ptr %2703, ptr %11, align 8
  %2704 = extractvalue { ptr, i32 } %2702, 1
  store i32 %2704, ptr %12, align 4
  br label %2719

2705:                                             ; preds = %2697
  %2706 = landingpad { ptr, i32 }
          cleanup
  %2707 = extractvalue { ptr, i32 } %2706, 0
  store ptr %2707, ptr %11, align 8
  %2708 = extractvalue { ptr, i32 } %2706, 1
  store i32 %2708, ptr %12, align 4
  br label %2718

2709:                                             ; preds = %2698
  %2710 = landingpad { ptr, i32 }
          cleanup
  %2711 = extractvalue { ptr, i32 } %2710, 0
  store ptr %2711, ptr %11, align 8
  %2712 = extractvalue { ptr, i32 } %2710, 1
  store i32 %2712, ptr %12, align 4
  br label %2717

2713:                                             ; preds = %2699
  %2714 = landingpad { ptr, i32 }
          cleanup
  %2715 = extractvalue { ptr, i32 } %2714, 0
  store ptr %2715, ptr %11, align 8
  %2716 = extractvalue { ptr, i32 } %2714, 1
  store i32 %2716, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %266) #9
  br label %2717

2717:                                             ; preds = %2713, %2709
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %267) #9
  br label %2718

2718:                                             ; preds = %2717, %2705
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %268) #9
  br label %2719

2719:                                             ; preds = %2718, %2701
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %269) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %269) #9
  br label %2721

2720:                                             ; preds = %2700, %2573
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %218) #9
  br label %2762

2721:                                             ; preds = %2719, %2678, %2677, %2648, %2647, %2620, %2619, %2597, %2377, %2376, %2346, %2345, %2321, %2320, %2308
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #9
  br label %2722

2722:                                             ; preds = %2721, %2304
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #9
  br label %2723

2723:                                             ; preds = %2722, %2300
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #9
  br label %2724

2724:                                             ; preds = %2723, %2296
  call void @llvm.lifetime.end.p0(i64 4, ptr %218) #9
  br label %2767

2725:                                             ; preds = %2250
  br label %2726

2726:                                             ; preds = %2725
  call void @llvm.lifetime.start.p0(i64 8, ptr %270) #9
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %270, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %271) #9
  %2727 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %271, ptr noundef nonnull align 8 dereferenceable(8) %2727)
          to label %2728 unwind label %2737

2728:                                             ; preds = %2726
  call void @llvm.lifetime.start.p0(i64 24, ptr %273) #9
  %2729 = getelementptr inbounds %class.anon.349, ptr %273, i32 0, i32 0
  store ptr %270, ptr %2729, align 8, !tbaa !5
  %2730 = getelementptr inbounds %class.anon.349, ptr %273, i32 0, i32 1
  %2731 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2731, ptr %2730, align 8, !tbaa !5
  %2732 = getelementptr inbounds %class.anon.349, ptr %273, i32 0, i32 2
  store ptr %2, ptr %2732, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_35vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %272, ptr noundef nonnull align 8 dereferenceable(24) %273)
          to label %2733 unwind label %2741

2733:                                             ; preds = %2728
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %271, ptr noundef %272)
          to label %2734 unwind label %2745

2734:                                             ; preds = %2733
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %272) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %273) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %271) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %271) #9
  %2735 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2735, ptr noundef @.str.5)
          to label %2736 unwind label %2751

2736:                                             ; preds = %2734
  invoke void @__cxa_throw(ptr %2735, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2755

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

2741:                                             ; preds = %2728
  %2742 = landingpad { ptr, i32 }
          cleanup
  %2743 = extractvalue { ptr, i32 } %2742, 0
  store ptr %2743, ptr %11, align 8
  %2744 = extractvalue { ptr, i32 } %2742, 1
  store i32 %2744, ptr %12, align 4
  br label %2749

2745:                                             ; preds = %2733
  %2746 = landingpad { ptr, i32 }
          cleanup
  %2747 = extractvalue { ptr, i32 } %2746, 0
  store ptr %2747, ptr %11, align 8
  %2748 = extractvalue { ptr, i32 } %2746, 1
  store i32 %2748, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %272) #9
  br label %2749

2749:                                             ; preds = %2745, %2741
  call void @llvm.lifetime.end.p0(i64 24, ptr %273) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %271) #9
  br label %2750

2750:                                             ; preds = %2749, %2737
  call void @llvm.lifetime.end.p0(i64 8, ptr %271) #9
  br label %2759

2751:                                             ; preds = %2734
  %2752 = landingpad { ptr, i32 }
          cleanup
  %2753 = extractvalue { ptr, i32 } %2752, 0
  store ptr %2753, ptr %11, align 8
  %2754 = extractvalue { ptr, i32 } %2752, 1
  store i32 %2754, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2735) #9
  br label %2759

2755:                                             ; preds = %2736
  %2756 = landingpad { ptr, i32 }
          cleanup
  %2757 = extractvalue { ptr, i32 } %2756, 0
  store ptr %2757, ptr %11, align 8
  %2758 = extractvalue { ptr, i32 } %2756, 1
  store i32 %2758, ptr %12, align 4
  br label %2759

2759:                                             ; preds = %2755, %2751, %2750
  call void @llvm.lifetime.end.p0(i64 8, ptr %270) #9
  br label %2767

2760:                                             ; No predecessors!
  br label %2761

2761:                                             ; preds = %2760
  br label %2762

2762:                                             ; preds = %2761, %2720
  br label %2763

2763:                                             ; preds = %2762, %2209
  %2764 = getelementptr inbounds %struct.PatternRulesetBuilder, ptr %299, i32 0, i32 5
  invoke void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %2764)
          to label %2765 unwind label %1967

2765:                                             ; preds = %2763
  br label %2766

2766:                                             ; preds = %2765
  store i8 0, ptr %185, align 1, !tbaa !11
  br label %1962, !llvm.loop !139

2767:                                             ; preds = %2759, %2724, %2292, %2232, %2018, %1967
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %185) #9
  br label %3001

2768:                                             ; preds = %1966
  br label %2769

2769:                                             ; preds = %2768
  store i8 0, ptr %185, align 1, !tbaa !11
  br label %1954, !llvm.loop !140

2770:                                             ; preds = %1957
  br label %2999

2771:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %274) #9
  store i8 1, ptr %274, align 1, !tbaa !11
  br label %2772

2772:                                             ; preds = %2817, %2771
  %2773 = load i8, ptr %274, align 1, !tbaa !11, !range !13, !noundef !14
  %2774 = trunc i8 %2773 to i1
  br i1 %2774, label %2776, label %2775

2775:                                             ; preds = %2772
  store i32 203, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %274) #9
  br label %2818

2776:                                             ; preds = %2772
  call void @llvm.lifetime.start.p0(i64 8, ptr %275) #9
  %2777 = load ptr, ptr %15, align 8, !tbaa !5
  %2778 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %2777)
          to label %2779 unwind label %2785

2779:                                             ; preds = %2776
  store ptr %2778, ptr %275, align 8, !tbaa !5
  br label %2780

2780:                                             ; preds = %2805, %2779
  %2781 = load ptr, ptr %275, align 8, !tbaa !5
  %2782 = load i8, ptr %274, align 1, !tbaa !11, !range !13, !noundef !14
  %2783 = trunc i8 %2782 to i1
  br i1 %2783, label %2789, label %2784

2784:                                             ; preds = %2780
  store i32 206, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #9
  br label %2816

2785:                                             ; preds = %2796, %2792, %2789, %2776
  %2786 = landingpad { ptr, i32 }
          cleanup
  %2787 = extractvalue { ptr, i32 } %2786, 0
  store ptr %2787, ptr %11, align 8
  %2788 = extractvalue { ptr, i32 } %2786, 1
  store i32 %2788, ptr %12, align 4
  br label %2815

2789:                                             ; preds = %2780
  %2790 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %278, i32 0, i32 0
  %2791 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %2792 unwind label %2785

2792:                                             ; preds = %2789
  %2793 = udiv i32 %2791, 8
  %2794 = zext i32 %2793 to i64
  %2795 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %2794)
          to label %2796 unwind label %2785

2796:                                             ; preds = %2792
  %2797 = getelementptr inbounds { i64, i64 }, ptr %2790, i32 0, i32 0
  %2798 = extractvalue { i64, i64 } %2795, 0
  store i64 %2798, ptr %2797, align 8
  %2799 = getelementptr inbounds { i64, i64 }, ptr %2790, i32 0, i32 1
  %2800 = extractvalue { i64, i64 } %2795, 1
  store i64 %2800, ptr %2799, align 8
  %2801 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %278, i32 0, i32 1
  store i32 0, ptr %2801, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %277, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %278)
          to label %2802 unwind label %2785

2802:                                             ; preds = %2796
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind writable sret(%class.PatternRule) align 8 %276, ptr noundef %277)
          to label %2803 unwind label %2806

2803:                                             ; preds = %2802
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %299, ptr noundef %276)
          to label %2804 unwind label %2810

2804:                                             ; preds = %2803
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %276) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %277) #9
  br label %2805

2805:                                             ; preds = %2804
  store i8 0, ptr %274, align 1, !tbaa !11
  br label %2780, !llvm.loop !141

2806:                                             ; preds = %2802
  %2807 = landingpad { ptr, i32 }
          cleanup
  %2808 = extractvalue { ptr, i32 } %2807, 0
  store ptr %2808, ptr %11, align 8
  %2809 = extractvalue { ptr, i32 } %2807, 1
  store i32 %2809, ptr %12, align 4
  br label %2814

2810:                                             ; preds = %2803
  %2811 = landingpad { ptr, i32 }
          cleanup
  %2812 = extractvalue { ptr, i32 } %2811, 0
  store ptr %2812, ptr %11, align 8
  %2813 = extractvalue { ptr, i32 } %2811, 1
  store i32 %2813, ptr %12, align 4
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %276) #9
  br label %2814

2814:                                             ; preds = %2810, %2806
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %277) #9
  br label %2815

2815:                                             ; preds = %2814, %2785
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %274) #9
  br label %3001

2816:                                             ; preds = %2784
  br label %2817

2817:                                             ; preds = %2816
  store i8 0, ptr %274, align 1, !tbaa !11
  br label %2772, !llvm.loop !142

2818:                                             ; preds = %2775
  br label %2999

2819:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %279) #9
  store i8 1, ptr %279, align 1, !tbaa !11
  br label %2820

2820:                                             ; preds = %2862, %2819
  %2821 = load i8, ptr %279, align 1, !tbaa !11, !range !13, !noundef !14
  %2822 = trunc i8 %2821 to i1
  br i1 %2822, label %2824, label %2823

2823:                                             ; preds = %2820
  store i32 209, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %279) #9
  br label %2863

2824:                                             ; preds = %2820
  call void @llvm.lifetime.start.p0(i64 8, ptr %280) #9
  %2825 = load ptr, ptr %15, align 8, !tbaa !5
  %2826 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2825)
          to label %2827 unwind label %2833

2827:                                             ; preds = %2824
  store ptr %2826, ptr %280, align 8, !tbaa !5
  br label %2828

2828:                                             ; preds = %2859, %2827
  %2829 = load ptr, ptr %280, align 8, !tbaa !5
  %2830 = load i8, ptr %279, align 1, !tbaa !11, !range !13, !noundef !14
  %2831 = trunc i8 %2830 to i1
  br i1 %2831, label %2837, label %2832

2832:                                             ; preds = %2828
  store i32 212, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %280) #9
  br label %2861

2833:                                             ; preds = %2843, %2824
  %2834 = landingpad { ptr, i32 }
          cleanup
  %2835 = extractvalue { ptr, i32 } %2834, 0
  store ptr %2835, ptr %11, align 8
  %2836 = extractvalue { ptr, i32 } %2834, 1
  store i32 %2836, ptr %12, align 4
  br label %2860

2837:                                             ; preds = %2828
  br label %2838

2838:                                             ; preds = %2837
  call void @llvm.lifetime.start.p0(i64 8, ptr %281) #9
  %2839 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef nonnull align 8 dereferenceable(8) %2839)
          to label %2840 unwind label %2844

2840:                                             ; preds = %2838
  call void @llvm.lifetime.start.p0(i64 1, ptr %283) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_36vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %282, ptr noundef nonnull align 1 dereferenceable(1) %283) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %281, i32 noundef 0, ptr noundef %282)
          to label %2841 unwind label %2848

2841:                                             ; preds = %2840
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %282) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %283) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %281) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %281) #9
  %2842 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2842, ptr noundef @.str.59)
          to label %2843 unwind label %2853

2843:                                             ; preds = %2841
  invoke void @__cxa_throw(ptr %2842, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2833

2844:                                             ; preds = %2838
  %2845 = landingpad { ptr, i32 }
          cleanup
  %2846 = extractvalue { ptr, i32 } %2845, 0
  store ptr %2846, ptr %11, align 8
  %2847 = extractvalue { ptr, i32 } %2845, 1
  store i32 %2847, ptr %12, align 4
  br label %2852

2848:                                             ; preds = %2840
  %2849 = landingpad { ptr, i32 }
          cleanup
  %2850 = extractvalue { ptr, i32 } %2849, 0
  store ptr %2850, ptr %11, align 8
  %2851 = extractvalue { ptr, i32 } %2849, 1
  store i32 %2851, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %282) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %283) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %281) #9
  br label %2852

2852:                                             ; preds = %2848, %2844
  call void @llvm.lifetime.end.p0(i64 8, ptr %281) #9
  br label %2860

2853:                                             ; preds = %2841
  %2854 = landingpad { ptr, i32 }
          cleanup
  %2855 = extractvalue { ptr, i32 } %2854, 0
  store ptr %2855, ptr %11, align 8
  %2856 = extractvalue { ptr, i32 } %2854, 1
  store i32 %2856, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2842) #9
  br label %2860

2857:                                             ; No predecessors!
  br label %2858

2858:                                             ; preds = %2857
  br label %2859

2859:                                             ; preds = %2858
  store i8 0, ptr %279, align 1, !tbaa !11
  br label %2828, !llvm.loop !143

2860:                                             ; preds = %2853, %2852, %2833
  call void @llvm.lifetime.end.p0(i64 8, ptr %280) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %279) #9
  br label %3001

2861:                                             ; preds = %2832
  br label %2862

2862:                                             ; preds = %2861
  store i8 0, ptr %279, align 1, !tbaa !11
  br label %2820, !llvm.loop !144

2863:                                             ; preds = %2823
  br label %2999

2864:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %284) #9
  store i8 1, ptr %284, align 1, !tbaa !11
  br label %2865

2865:                                             ; preds = %2907, %2864
  %2866 = load i8, ptr %284, align 1, !tbaa !11, !range !13, !noundef !14
  %2867 = trunc i8 %2866 to i1
  br i1 %2867, label %2869, label %2868

2868:                                             ; preds = %2865
  store i32 217, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %284) #9
  br label %2908

2869:                                             ; preds = %2865
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #9
  %2870 = load ptr, ptr %15, align 8, !tbaa !5
  %2871 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %2870)
          to label %2872 unwind label %2878

2872:                                             ; preds = %2869
  store ptr %2871, ptr %285, align 8, !tbaa !5
  br label %2873

2873:                                             ; preds = %2904, %2872
  %2874 = load ptr, ptr %285, align 8, !tbaa !5
  %2875 = load i8, ptr %284, align 1, !tbaa !11, !range !13, !noundef !14
  %2876 = trunc i8 %2875 to i1
  br i1 %2876, label %2882, label %2877

2877:                                             ; preds = %2873
  store i32 220, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #9
  br label %2906

2878:                                             ; preds = %2888, %2869
  %2879 = landingpad { ptr, i32 }
          cleanup
  %2880 = extractvalue { ptr, i32 } %2879, 0
  store ptr %2880, ptr %11, align 8
  %2881 = extractvalue { ptr, i32 } %2879, 1
  store i32 %2881, ptr %12, align 4
  br label %2905

2882:                                             ; preds = %2873
  br label %2883

2883:                                             ; preds = %2882
  call void @llvm.lifetime.start.p0(i64 8, ptr %286) #9
  %2884 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %286, ptr noundef nonnull align 8 dereferenceable(8) %2884)
          to label %2885 unwind label %2889

2885:                                             ; preds = %2883
  call void @llvm.lifetime.start.p0(i64 1, ptr %288) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_37vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %287, ptr noundef nonnull align 1 dereferenceable(1) %288) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %286, i32 noundef 0, ptr noundef %287)
          to label %2886 unwind label %2893

2886:                                             ; preds = %2885
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %288) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %286) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %286) #9
  %2887 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2887, ptr noundef @.str.59)
          to label %2888 unwind label %2898

2888:                                             ; preds = %2886
  invoke void @__cxa_throw(ptr %2887, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2878

2889:                                             ; preds = %2883
  %2890 = landingpad { ptr, i32 }
          cleanup
  %2891 = extractvalue { ptr, i32 } %2890, 0
  store ptr %2891, ptr %11, align 8
  %2892 = extractvalue { ptr, i32 } %2890, 1
  store i32 %2892, ptr %12, align 4
  br label %2897

2893:                                             ; preds = %2885
  %2894 = landingpad { ptr, i32 }
          cleanup
  %2895 = extractvalue { ptr, i32 } %2894, 0
  store ptr %2895, ptr %11, align 8
  %2896 = extractvalue { ptr, i32 } %2894, 1
  store i32 %2896, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %288) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %286) #9
  br label %2897

2897:                                             ; preds = %2893, %2889
  call void @llvm.lifetime.end.p0(i64 8, ptr %286) #9
  br label %2905

2898:                                             ; preds = %2886
  %2899 = landingpad { ptr, i32 }
          cleanup
  %2900 = extractvalue { ptr, i32 } %2899, 0
  store ptr %2900, ptr %11, align 8
  %2901 = extractvalue { ptr, i32 } %2899, 1
  store i32 %2901, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2887) #9
  br label %2905

2902:                                             ; No predecessors!
  br label %2903

2903:                                             ; preds = %2902
  br label %2904

2904:                                             ; preds = %2903
  store i8 0, ptr %284, align 1, !tbaa !11
  br label %2873, !llvm.loop !145

2905:                                             ; preds = %2898, %2897, %2878
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %284) #9
  br label %3001

2906:                                             ; preds = %2877
  br label %2907

2907:                                             ; preds = %2906
  store i8 0, ptr %284, align 1, !tbaa !11
  br label %2865, !llvm.loop !146

2908:                                             ; preds = %2868
  br label %2999

2909:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %289) #9
  store i8 1, ptr %289, align 1, !tbaa !11
  br label %2910

2910:                                             ; preds = %2952, %2909
  %2911 = load i8, ptr %289, align 1, !tbaa !11, !range !13, !noundef !14
  %2912 = trunc i8 %2911 to i1
  br i1 %2912, label %2914, label %2913

2913:                                             ; preds = %2910
  store i32 225, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %289) #9
  br label %2953

2914:                                             ; preds = %2910
  call void @llvm.lifetime.start.p0(i64 8, ptr %290) #9
  %2915 = load ptr, ptr %15, align 8, !tbaa !5
  %2916 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %2915)
          to label %2917 unwind label %2923

2917:                                             ; preds = %2914
  store ptr %2916, ptr %290, align 8, !tbaa !5
  br label %2918

2918:                                             ; preds = %2949, %2917
  %2919 = load ptr, ptr %290, align 8, !tbaa !5
  %2920 = load i8, ptr %289, align 1, !tbaa !11, !range !13, !noundef !14
  %2921 = trunc i8 %2920 to i1
  br i1 %2921, label %2927, label %2922

2922:                                             ; preds = %2918
  store i32 228, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #9
  br label %2951

2923:                                             ; preds = %2933, %2914
  %2924 = landingpad { ptr, i32 }
          cleanup
  %2925 = extractvalue { ptr, i32 } %2924, 0
  store ptr %2925, ptr %11, align 8
  %2926 = extractvalue { ptr, i32 } %2924, 1
  store i32 %2926, ptr %12, align 4
  br label %2950

2927:                                             ; preds = %2918
  br label %2928

2928:                                             ; preds = %2927
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #9
  %2929 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull align 8 dereferenceable(8) %2929)
          to label %2930 unwind label %2934

2930:                                             ; preds = %2928
  call void @llvm.lifetime.start.p0(i64 1, ptr %293) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_38vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %292, ptr noundef nonnull align 1 dereferenceable(1) %293) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %291, i32 noundef 0, ptr noundef %292)
          to label %2931 unwind label %2938

2931:                                             ; preds = %2930
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %292) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %293) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %291) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #9
  %2932 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2932, ptr noundef @.str.59)
          to label %2933 unwind label %2943

2933:                                             ; preds = %2931
  invoke void @__cxa_throw(ptr %2932, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2923

2934:                                             ; preds = %2928
  %2935 = landingpad { ptr, i32 }
          cleanup
  %2936 = extractvalue { ptr, i32 } %2935, 0
  store ptr %2936, ptr %11, align 8
  %2937 = extractvalue { ptr, i32 } %2935, 1
  store i32 %2937, ptr %12, align 4
  br label %2942

2938:                                             ; preds = %2930
  %2939 = landingpad { ptr, i32 }
          cleanup
  %2940 = extractvalue { ptr, i32 } %2939, 0
  store ptr %2940, ptr %11, align 8
  %2941 = extractvalue { ptr, i32 } %2939, 1
  store i32 %2941, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %292) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %293) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %291) #9
  br label %2942

2942:                                             ; preds = %2938, %2934
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #9
  br label %2950

2943:                                             ; preds = %2931
  %2944 = landingpad { ptr, i32 }
          cleanup
  %2945 = extractvalue { ptr, i32 } %2944, 0
  store ptr %2945, ptr %11, align 8
  %2946 = extractvalue { ptr, i32 } %2944, 1
  store i32 %2946, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2932) #9
  br label %2950

2947:                                             ; No predecessors!
  br label %2948

2948:                                             ; preds = %2947
  br label %2949

2949:                                             ; preds = %2948
  store i8 0, ptr %289, align 1, !tbaa !11
  br label %2918, !llvm.loop !147

2950:                                             ; preds = %2943, %2942, %2923
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %289) #9
  br label %3001

2951:                                             ; preds = %2922
  br label %2952

2952:                                             ; preds = %2951
  store i8 0, ptr %289, align 1, !tbaa !11
  br label %2910, !llvm.loop !148

2953:                                             ; preds = %2913
  br label %2999

2954:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 1, ptr %294) #9
  store i8 1, ptr %294, align 1, !tbaa !11
  br label %2955

2955:                                             ; preds = %2997, %2954
  %2956 = load i8, ptr %294, align 1, !tbaa !11, !range !13, !noundef !14
  %2957 = trunc i8 %2956 to i1
  br i1 %2957, label %2959, label %2958

2958:                                             ; preds = %2955
  store i32 233, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %294) #9
  br label %2998

2959:                                             ; preds = %2955
  call void @llvm.lifetime.start.p0(i64 8, ptr %295) #9
  %2960 = load ptr, ptr %15, align 8, !tbaa !5
  %2961 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %2960)
          to label %2962 unwind label %2968

2962:                                             ; preds = %2959
  store ptr %2961, ptr %295, align 8, !tbaa !5
  br label %2963

2963:                                             ; preds = %2994, %2962
  %2964 = load ptr, ptr %295, align 8, !tbaa !5
  %2965 = load i8, ptr %294, align 1, !tbaa !11, !range !13, !noundef !14
  %2966 = trunc i8 %2965 to i1
  br i1 %2966, label %2972, label %2967

2967:                                             ; preds = %2963
  store i32 236, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #9
  br label %2996

2968:                                             ; preds = %2978, %2959
  %2969 = landingpad { ptr, i32 }
          cleanup
  %2970 = extractvalue { ptr, i32 } %2969, 0
  store ptr %2970, ptr %11, align 8
  %2971 = extractvalue { ptr, i32 } %2969, 1
  store i32 %2971, ptr %12, align 4
  br label %2995

2972:                                             ; preds = %2963
  br label %2973

2973:                                             ; preds = %2972
  call void @llvm.lifetime.start.p0(i64 8, ptr %296) #9
  %2974 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %296, ptr noundef nonnull align 8 dereferenceable(8) %2974)
          to label %2975 unwind label %2979

2975:                                             ; preds = %2973
  call void @llvm.lifetime.start.p0(i64 1, ptr %298) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_39vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %297, ptr noundef nonnull align 1 dereferenceable(1) %298) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %296, i32 noundef 0, ptr noundef %297)
          to label %2976 unwind label %2983

2976:                                             ; preds = %2975
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %297) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %298) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #9
  %2977 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2977, ptr noundef @.str.59)
          to label %2978 unwind label %2988

2978:                                             ; preds = %2976
  invoke void @__cxa_throw(ptr %2977, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %3011 unwind label %2968

2979:                                             ; preds = %2973
  %2980 = landingpad { ptr, i32 }
          cleanup
  %2981 = extractvalue { ptr, i32 } %2980, 0
  store ptr %2981, ptr %11, align 8
  %2982 = extractvalue { ptr, i32 } %2980, 1
  store i32 %2982, ptr %12, align 4
  br label %2987

2983:                                             ; preds = %2975
  %2984 = landingpad { ptr, i32 }
          cleanup
  %2985 = extractvalue { ptr, i32 } %2984, 0
  store ptr %2985, ptr %11, align 8
  %2986 = extractvalue { ptr, i32 } %2984, 1
  store i32 %2986, ptr %12, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %297) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %298) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %296) #9
  br label %2987

2987:                                             ; preds = %2983, %2979
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #9
  br label %2995

2988:                                             ; preds = %2976
  %2989 = landingpad { ptr, i32 }
          cleanup
  %2990 = extractvalue { ptr, i32 } %2989, 0
  store ptr %2990, ptr %11, align 8
  %2991 = extractvalue { ptr, i32 } %2989, 1
  store i32 %2991, ptr %12, align 4
  call void @__cxa_free_exception(ptr %2977) #9
  br label %2995

2992:                                             ; No predecessors!
  br label %2993

2993:                                             ; preds = %2992
  br label %2994

2994:                                             ; preds = %2993
  store i8 0, ptr %294, align 1, !tbaa !11
  br label %2963, !llvm.loop !149

2995:                                             ; preds = %2988, %2987, %2968
  call void @llvm.lifetime.end.p0(i64 8, ptr %295) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %294) #9
  br label %3001

2996:                                             ; preds = %2967
  br label %2997

2997:                                             ; preds = %2996
  store i8 0, ptr %294, align 1, !tbaa !11
  br label %2955, !llvm.loop !150

2998:                                             ; preds = %2958
  br label %2999

2999:                                             ; preds = %2998, %2953, %2908, %2863, %2818, %2770, %1952, %1901, %1797, %1746, %1695, %1638, %985, %850, %422, %377, %331
  br label %3000

3000:                                             ; preds = %2999
  store i8 0, ptr %13, align 1, !tbaa !11
  br label %320, !llvm.loop !151

3001:                                             ; preds = %2995, %2950, %2905, %2860, %2815, %2767, %1949, %1898, %1794, %1743, %1692, %1635, %982, %847, %419, %374, %324
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #9
  br label %3005

3002:                                             ; preds = %323
  br label %3003

3003:                                             ; preds = %3002
  store i8 0, ptr %13, align 1, !tbaa !11
  br label %308, !llvm.loop !152

3004:                                             ; preds = %311
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %8) #9
  ret void

3005:                                             ; preds = %3001, %312
  call void @llvm.lifetime.end.p0(i64 40, ptr %8) #9
  br label %3006

3006:                                             ; preds = %3005
  %3007 = load ptr, ptr %11, align 8
  %3008 = load i32, ptr %12, align 4
  %3009 = insertvalue { ptr, i32 } poison, ptr %3007, 0
  %3010 = insertvalue { ptr, i32 } %3009, i32 %3008, 1
  resume { ptr, i32 } %3010

3011:                                             ; preds = %2978, %2933, %2888, %2843, %2736, %2668, %2638, %2610, %2541, %2511, %2479, %2445, %2402, %2367, %2336, %2291, %2177, %2147, %2119, %2091, %2062, %2017, %1927, %1832, %1772, %1721, %1664, %1585, %1367, %1306, %1255, %1164, %1097, %1051, %922, %886, %829, %402, %357
  unreachable
}

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, double, i32) #2 align 2

declare noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8) #2 align 2

declare { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL21Target_GetPointerBitsv() #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8) #2 align 2

declare { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule9make_BoolEb(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8, i1 noundef zeroext) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #2 align 2

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

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

declare noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24), i8 noundef zeroext) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind noalias writable sret(%struct.EncodedLiteralSlice) align 8, ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule8make_AnyENS_8Data_AnyE(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8) #2 align 2

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

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

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

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

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

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

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

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

declare i64 @_ZNK8TypeRepr16get_enum_variantERK4SpanRK18StaticTraitResolveRK19EncodedLiteralSlice(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(24)) #1

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule12make_VariantENS_12Data_VariantE(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8, ptr noundef) #2 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)) #4 align 2

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

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

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

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

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

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

declare noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind noalias writable sret(%struct.EncodedLiteralSlice) align 8, ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, i64 noundef) #2 align 2

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

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

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

declare noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #1

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

declare noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24)) #1

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

declare void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 16}
!10 = !{!"_ZTSZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = !{!21, !21, i64 0}
!21 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!22 = !{!23, !24, i64 0}
!23 = !{!"_ZTSN3MIR8Constant10Data_FloatE", !24, i64 0, !21, i64 8}
!24 = !{!"double", !7, i64 0}
!25 = !{!23, !21, i64 8}
!26 = !{!27, !21, i64 16}
!27 = !{!"_ZTSN3MIR8Constant9Data_UintE", !28, i64 0, !21, i64 16}
!28 = !{!"_ZTS4U128", !29, i64 0, !29, i64 8}
!29 = !{!"long", !7, i64 0}
!30 = !{!31, !21, i64 16}
!31 = !{!"_ZTSN3MIR8Constant8Data_IntE", !32, i64 0, !21, i64 16}
!32 = !{!"_ZTS4S128", !28, i64 0}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = !{!36, !6, i64 0}
!36 = !{!"_ZTS21PatternRulesetBuilder", !6, i64 0, !6, i64 8, !37, i64 16, !29, i64 40, !29, i64 48, !41, i64 56}
!37 = !{!"_ZTSSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTS12field_path_t", !42, i64 0}
!42 = !{!"_ZTSSt6vectorIhSaIhEE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!47, !47, i64 0}
!47 = !{!"int", !7, i64 0}
!48 = !{!49, !29, i64 0}
!49 = !{!"_ZTSN8TypeRepr5FieldE", !29, i64 0, !50, i64 8}
!50 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!51 = !{!7, !7, i64 0}
!52 = distinct !{!52, !16}
!53 = distinct !{!53, !16}
!54 = distinct !{!54, !16}
!55 = distinct !{!55, !16}
!56 = distinct !{!56, !16}
!57 = distinct !{!57, !16}
!58 = distinct !{!58, !16}
!59 = !{!29, !29, i64 0}
!60 = distinct !{!60, !16}
!61 = distinct !{!61, !16}
!62 = distinct !{!62, !16}
!63 = distinct !{!63, !16}
!64 = distinct !{!64, !16}
!65 = distinct !{!65, !16}
!66 = distinct !{!66, !16}
!67 = !{!68, !47, i64 0}
!68 = !{!"_ZTSSt4pairIjbE", !47, i64 0, !12, i64 4}
!69 = !{!68, !12, i64 4}
!70 = distinct !{!70, !16}
!71 = !{i64 0, i64 8, !5, i64 8, i64 8, !59, i64 16, i64 8, !59}
!72 = !{!73, !47, i64 0}
!73 = !{!"_ZTSN11PatternRule12Data_VariantE", !47, i64 0, !74, i64 8}
!74 = !{!"_ZTSSt6vectorI11PatternRuleSaIS0_EE", !75, i64 0}
!75 = !{!"_ZTSSt12_Vector_baseI11PatternRuleSaIS0_EE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE12_Vector_implE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!78 = distinct !{!78, !16}
!79 = distinct !{!79, !16}
!80 = distinct !{!80, !16}
!81 = distinct !{!81, !16}
!82 = distinct !{!82, !16}
!83 = distinct !{!83, !16}
!84 = distinct !{!84, !16}
!85 = distinct !{!85, !16}
!86 = distinct !{!86, !16}
!87 = distinct !{!87, !16}
!88 = distinct !{!88, !16}
!89 = distinct !{!89, !16}
!90 = distinct !{!90, !16}
!91 = distinct !{!91, !16}
!92 = distinct !{!92, !16}
!93 = distinct !{!93, !16}
!94 = distinct !{!94, !16}
!95 = !{!96, !12, i64 304}
!96 = !{!"_ZTSN3HIR6StaticE", !97, i64 0, !114, i64 96, !12, i64 168, !50, i64 176, !118, i64 184, !126, i64 256, !12, i64 304, !12, i64 305, !12, i64 306, !131, i64 312}
!97 = !{!"_ZTSN3HIR13GenericParamsE", !98, i64 0, !102, i64 24, !106, i64 48, !110, i64 72}
!98 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !99, i64 0}
!99 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !100, i64 0}
!100 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !101, i64 0}
!101 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!102 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !103, i64 0}
!103 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!106 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !107, i64 0}
!107 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!110 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !111, i64 0}
!111 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !112, i64 0}
!112 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !113, i64 0}
!113 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!114 = !{!"_ZTSN3HIR7LinkageE", !115, i64 0, !116, i64 8, !116, i64 40}
!115 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!116 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !117, i64 0, !29, i64 8, !7, i64 16}
!117 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!118 = !{!"_ZTSN3HIR7ExprPtrE", !119, i64 0, !120, i64 8, !120, i64 32, !124, i64 56, !125, i64 64}
!119 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!120 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !121, i64 0}
!121 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !123, i64 0}
!123 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!124 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!125 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!126 = !{!"_ZTS14EncodedLiteral", !42, i64 0, !127, i64 24}
!127 = !{!"_ZTSSt6vectorI5RelocSaIS0_EE", !128, i64 0}
!128 = !{!"_ZTSSt12_Vector_baseI5RelocSaIS0_EE", !129, i64 0}
!129 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE12_Vector_implE", !130, i64 0}
!130 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!131 = !{!"_ZTSSt3mapIN3HIR4PathE14EncodedLiteralSt4lessIS1_ESaISt4pairIKS1_S2_EEE", !132, i64 0}
!132 = !{!"_ZTSSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !133, i64 0}
!133 = !{!"_ZTSNSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !134, i64 0, !136, i64 8}
!134 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR4PathEEE", !135, i64 0}
!135 = !{!"_ZTSSt4lessIN3HIR4PathEE"}
!136 = !{!"_ZTSSt15_Rb_tree_header", !137, i64 0, !29, i64 32}
!137 = !{!"_ZTSSt18_Rb_tree_node_base", !138, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!138 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!139 = distinct !{!139, !16}
!140 = distinct !{!140, !16}
!141 = distinct !{!141, !16}
!142 = distinct !{!142, !16}
!143 = distinct !{!143, !16}
!144 = distinct !{!144, !16}
!145 = distinct !{!145, !16}
!146 = distinct !{!146, !16}
!147 = distinct !{!147, !16}
!148 = distinct !{!148, !16}
!149 = distinct !{!149, !16}
!150 = distinct !{!150, !16}
!151 = distinct !{!151, !16}
!152 = distinct !{!152, !16}


; 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.EncodedLiteralSlice = type { ptr, i64, i64 }
%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.222 = type { ptr, ptr, ptr }
%struct.Span = type { ptr }
%class.anon.274 = type { i8 }
%class.anon.276 = type { i8 }
%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.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 }
%"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] }
%"struct.MIR::Constant::Data_Uint" = type <{ %class.U128, i32, [4 x i8] }>
%class.U128 = type { i64, i64 }
%"struct.MIR::Constant::Data_Int" = type <{ %class.S128, i32, [4 x i8] }>
%class.S128 = type { %class.U128 }
%class.anon.278 = type { i8 }
%class.anon.280 = type { ptr }
%class.anon.286 = type { ptr, ptr }
%class.anon.287 = type { ptr }
%class.anon.288 = type { ptr }
%class.anon.289 = type { ptr }
%class.anon.290 = type { ptr }
%class.anon.291 = type { ptr }
%class.anon.292 = type { ptr }
%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.HIR::TypeRef" = type { ptr }
%class.anon.295 = type { i8 }
%"struct.PatternRule::Data_Variant" = type { i32, %"class.std::vector.136" }
%class.anon.297 = type { ptr }
%class.anon.298 = type { ptr }
%class.anon.299 = type { ptr }
%class.anon.300 = type { ptr }
%class.anon.301 = type { ptr }
%class.anon.302 = type { i8 }
%class.anon.304 = type { i8 }
%class.anon.306 = type { ptr }
%class.anon.307 = type { i8 }
%class.anon.309 = type { i8 }
%class.anon.311 = type { i8 }
%"class.std::allocator.5" = type { i8 }
%class.anon.313 = type { i8 }
%class.anon.315 = type { i8 }
%class.anon.317 = type { i8 }
%struct.MonomorphState = type { %class.MonomorphiserPP, %"class.HIR::TypeRef", ptr, ptr, %"struct.HIR::PathParams" }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.319" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.319" = type { %"struct.std::_Vector_base.320" }
%"struct.std::_Vector_base.320" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.StaticTraitResolve::ValuePtr" = type { i32, %"union.StaticTraitResolve::ValuePtr::DataUnion" }
%"union.StaticTraitResolve::ValuePtr::DataUnion" = type { %"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" }
%"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" = type { ptr, i64 }
%class.anon.324 = type { ptr, ptr }
%class.anon.336 = type { ptr }
%class.anon.339 = type { i8 }
%class.anon.341 = type { i8 }
%"class.std::allocator.2" = type { i8 }
%class.anon.343 = type { i8 }
%class.anon.345 = type { i8 }
%class.anon.347 = type { i8 }
%class.anon.349 = type { ptr, ptr, ptr }
%class.anon.350 = type { i8 }
%class.anon.352 = type { i8 }
%class.anon.354 = type { i8 }
%class.anon.356 = type { 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
@__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE = external hidden unnamed_addr constant [16 x i8], align 1
@__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE = external hidden unnamed_addr constant [103 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [24 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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) #0

; 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 #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

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

; 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 #2 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 #2 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

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

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

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

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

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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local 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 #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef byval(%struct.EncodedLiteralSlice) align 8 %2, ptr noundef nonnull align 8 dereferenceable(8) %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %class.TraceLog, align 8
  %6 = alloca %"class.std::function", align 8
  %7 = alloca %class.anon.222, align 8
  %8 = alloca %struct.Span, align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.274, align 1
  %11 = alloca %struct.Span, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.276, align 1
  %14 = alloca %class.PatternRule, align 8
  %15 = alloca %"class.MIR::Constant", align 8
  %16 = alloca %class.PatternRule, align 8
  %17 = alloca %"class.MIR::Constant", align 8
  %18 = alloca %class.PatternRule, align 8
  %19 = alloca %"class.MIR::Constant", align 8
  %20 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %21 = alloca %class.PatternRule, align 8
  %22 = alloca %"class.MIR::Constant", align 8
  %23 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %24 = alloca %class.PatternRule, align 8
  %25 = alloca %"class.MIR::Constant", align 8
  %26 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %27 = alloca %class.PatternRule, align 8
  %28 = alloca %"class.MIR::Constant", align 8
  %29 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %30 = alloca %class.PatternRule, align 8
  %31 = alloca %"class.MIR::Constant", align 8
  %32 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %33 = alloca %class.PatternRule, align 8
  %34 = alloca %"class.MIR::Constant", align 8
  %35 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %36 = alloca %class.PatternRule, align 8
  %37 = alloca %"class.MIR::Constant", align 8
  %38 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %39 = alloca %class.PatternRule, align 8
  %40 = alloca %"class.MIR::Constant", align 8
  %41 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %42 = alloca %class.PatternRule, align 8
  %43 = alloca %"class.MIR::Constant", align 8
  %44 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %45 = alloca %class.PatternRule, align 8
  %46 = alloca %"class.MIR::Constant", align 8
  %47 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %48 = alloca %class.PatternRule, align 8
  %49 = alloca %"class.MIR::Constant", align 8
  %50 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %51 = alloca %class.PatternRule, align 8
  %52 = alloca %"class.MIR::Constant", align 8
  %53 = alloca %"struct.MIR::Constant::Data_Int", align 8
  %54 = alloca %class.PatternRule, align 8
  %55 = alloca %class.U128, align 8
  %56 = alloca %class.PatternRule, align 8
  %57 = alloca %"class.MIR::Constant", align 8
  %58 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %59 = alloca %struct.Span, align 8
  %60 = alloca %"class.std::function", align 8
  %61 = alloca %class.anon.278, align 1
  %62 = alloca ptr, align 8
  %63 = alloca %struct.Span, align 8
  %64 = alloca %"class.std::function", align 8
  %65 = alloca %class.anon.280, align 8
  %66 = alloca %struct.Span, align 8
  %67 = alloca %"class.std::function", align 8
  %68 = alloca %class.anon.286, align 8
  %69 = alloca %struct.EncodedLiteralSlice, align 8
  %70 = alloca %struct.Span, align 8
  %71 = alloca %"class.std::function", align 8
  %72 = alloca %class.anon.287, align 8
  %73 = alloca ptr, align 8
  %74 = alloca %struct.Span, align 8
  %75 = alloca %"class.std::function", align 8
  %76 = alloca %class.anon.288, align 8
  %77 = alloca %struct.Span, align 8
  %78 = alloca %"class.std::function", align 8
  %79 = alloca %class.anon.289, align 8
  %80 = alloca %struct.EncodedLiteralSlice, align 8
  %81 = alloca ptr, align 8
  %82 = alloca %struct.Span, align 8
  %83 = alloca %"class.std::function", align 8
  %84 = alloca %class.anon.290, align 8
  %85 = alloca ptr, align 8
  %86 = alloca %struct.Span, align 8
  %87 = alloca %"class.std::function", align 8
  %88 = alloca %class.anon.291, align 8
  %89 = alloca %struct.Span, align 8
  %90 = alloca %"class.std::function", align 8
  %91 = alloca %class.anon.292, align 8
  %92 = alloca %struct.PatternRulesetBuilder, align 8
  %93 = alloca %struct.EncodedLiteralSlice, align 8
  %94 = alloca %"class.HIR::TypeRef", align 8
  %95 = alloca %struct.EncodedLiteralSlice, align 8
  %96 = alloca %struct.Span, align 8
  %97 = alloca %"class.std::function", align 8
  %98 = alloca %class.anon.295, align 1
  %99 = alloca %class.PatternRule, align 8
  %100 = alloca %"struct.PatternRule::Data_Variant", align 8
  %101 = alloca ptr, align 8
  %102 = alloca %struct.Span, align 8
  %103 = alloca %"class.std::function", align 8
  %104 = alloca %class.anon.297, align 8
  %105 = alloca ptr, align 8
  %106 = alloca %struct.Span, align 8
  %107 = alloca %"class.std::function", align 8
  %108 = alloca %class.anon.298, align 8
  %109 = alloca ptr, align 8
  %110 = alloca %struct.Span, align 8
  %111 = alloca %"class.std::function", align 8
  %112 = alloca %class.anon.299, align 8
  %113 = alloca i64, align 8
  %114 = alloca %struct.Span, align 8
  %115 = alloca %"class.std::function", align 8
  %116 = alloca %class.anon.300, align 8
  %117 = alloca %struct.EncodedLiteralSlice, align 8
  %118 = alloca ptr, align 8
  %119 = alloca %struct.Span, align 8
  %120 = alloca %"class.std::function", align 8
  %121 = alloca %class.anon.301, align 8
  %122 = alloca i32, align 4
  %123 = alloca %class.U128, align 8
  %124 = alloca %class.U128, align 8
  %125 = alloca %struct.EncodedLiteralSlice, align 8
  %126 = alloca ptr, align 8
  %127 = alloca %struct.Span, align 8
  %128 = alloca %"class.std::function", align 8
  %129 = alloca %class.anon.302, align 1
  %130 = alloca %struct.Span, align 8
  %131 = alloca %"class.std::function", align 8
  %132 = alloca %class.anon.304, align 1
  %133 = alloca %struct.Span, align 8
  %134 = alloca %"class.std::function", align 8
  %135 = alloca %class.anon.306, align 8
  %136 = alloca %struct.Span, align 8
  %137 = alloca %"class.std::function", align 8
  %138 = alloca %class.anon.307, align 1
  %139 = alloca %struct.Span, align 8
  %140 = alloca %"class.std::function", align 8
  %141 = alloca %class.anon.309, align 1
  %142 = alloca %struct.Span, align 8
  %143 = alloca %"class.std::function", align 8
  %144 = alloca %class.anon.311, align 1
  %145 = alloca %class.PatternRule, align 8
  %146 = alloca %"class.MIR::Constant", align 8
  %147 = alloca %"class.std::__cxx11::basic_string", align 8
  %148 = alloca %"class.std::allocator.5", align 1
  %149 = alloca i32, align 4
  %150 = alloca %class.U128, align 8
  %151 = alloca %class.U128, align 8
  %152 = alloca %struct.EncodedLiteralSlice, align 8
  %153 = alloca ptr, align 8
  %154 = alloca %struct.Span, align 8
  %155 = alloca %"class.std::function", align 8
  %156 = alloca %class.anon.313, align 1
  %157 = alloca %struct.Span, align 8
  %158 = alloca %"class.std::function", align 8
  %159 = alloca %class.anon.315, align 1
  %160 = alloca %struct.Span, align 8
  %161 = alloca %"class.std::function", align 8
  %162 = alloca %class.anon.317, align 1
  %163 = alloca %struct.MonomorphState, align 8
  %164 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %165 = alloca %struct.Span, align 8
  %166 = alloca %"class.std::function", align 8
  %167 = alloca %class.anon.324, align 8
  %168 = alloca %struct.Span, align 8
  %169 = alloca %"class.std::function", align 8
  %170 = alloca %class.anon.336, align 8
  %171 = alloca %struct.Span, align 8
  %172 = alloca %"class.std::function", align 8
  %173 = alloca %class.anon.339, align 1
  %174 = alloca %struct.Span, align 8
  %175 = alloca %"class.std::function", align 8
  %176 = alloca %class.anon.341, align 1
  %177 = alloca %class.PatternRule, align 8
  %178 = alloca %"class.MIR::Constant", align 8
  %179 = alloca %"class.std::vector.0", align 8
  %180 = alloca %"class.std::allocator.2", align 1
  %181 = alloca %struct.Span, align 8
  %182 = alloca %"class.std::function", align 8
  %183 = alloca %class.anon.343, align 1
  %184 = alloca %struct.Span, align 8
  %185 = alloca %"class.std::function", align 8
  %186 = alloca %class.anon.345, align 1
  %187 = alloca %struct.Span, align 8
  %188 = alloca %"class.std::function", align 8
  %189 = alloca %class.anon.347, align 1
  %190 = alloca %class.PatternRule, align 8
  %191 = alloca %"class.MIR::Constant", align 8
  %192 = alloca %"class.std::vector.0", align 8
  %193 = alloca %"class.std::allocator.2", align 1
  %194 = alloca ptr, align 8
  %195 = alloca %struct.Span, align 8
  %196 = alloca %"class.std::function", align 8
  %197 = alloca %class.anon.349, align 8
  %198 = alloca %class.PatternRule, align 8
  %199 = alloca %"class.MIR::Constant", align 8
  %200 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %201 = alloca %struct.Span, align 8
  %202 = alloca %"class.std::function", align 8
  %203 = alloca %class.anon.350, align 1
  %204 = alloca %struct.Span, align 8
  %205 = alloca %"class.std::function", align 8
  %206 = alloca %class.anon.352, align 1
  %207 = alloca %struct.Span, align 8
  %208 = alloca %"class.std::function", align 8
  %209 = alloca %class.anon.354, align 1
  %210 = alloca %struct.Span, align 8
  %211 = alloca %"class.std::function", align 8
  %212 = alloca %class.anon.356, align 1
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #8
  %213 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %214 = select i1 %213, ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #8
  store ptr %2, ptr %7, align 8, !tbaa !5
  %215 = getelementptr inbounds i8, ptr %7, i64 8
  store ptr %3, ptr %215, align 8, !tbaa !5
  %216 = getelementptr inbounds i8, ptr %7, i64 16
  store ptr %0, ptr %216, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_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 %214, ptr noundef nonnull %6)
          to label %.lr.ph unwind label %217

.loopexit705:                                     ; preds = %.lr.ph, %..loopexit674_crit_edge, %..loopexit692_crit_edge, %519, %505, %491, %473, %459, %445, %431, %417, %403, %385, %371, %357, %343, %329, %315, %303, %.lr.ph1251, %..loopexit667_crit_edge, %.lr.ph1240, %..loopexit_crit_edge, %..loopexit641_crit_edge, %..loopexit680_crit_edge
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #8
  ret void

217:                                              ; preds = %4
  %218 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  br label %1390

.lr.ph:                                           ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  %219 = getelementptr inbounds i8, ptr %200, i64 8
  %220 = getelementptr inbounds i8, ptr %200, i64 16
  %221 = getelementptr inbounds i8, ptr %0, i64 56
  %222 = getelementptr inbounds i8, ptr %150, i64 8
  %223 = getelementptr inbounds i8, ptr %151, i64 8
  %224 = getelementptr inbounds i8, ptr %123, i64 8
  %225 = getelementptr inbounds i8, ptr %124, i64 8
  %226 = getelementptr inbounds i8, ptr %92, i64 56
  %227 = getelementptr inbounds i8, ptr %92, i64 16
  %228 = getelementptr inbounds i8, ptr %100, i64 8
  %229 = getelementptr inbounds i8, ptr %58, i64 8
  %230 = getelementptr inbounds i8, ptr %58, i64 16
  %231 = getelementptr inbounds i8, ptr %55, i64 8
  %232 = getelementptr inbounds i8, ptr %53, i64 8
  %233 = getelementptr inbounds i8, ptr %53, i64 16
  %234 = getelementptr inbounds i8, ptr %50, i64 8
  %235 = getelementptr inbounds i8, ptr %50, i64 16
  %236 = getelementptr inbounds i8, ptr %47, i64 8
  %237 = getelementptr inbounds i8, ptr %47, i64 16
  %238 = getelementptr inbounds i8, ptr %44, i64 8
  %239 = getelementptr inbounds i8, ptr %44, i64 16
  %240 = getelementptr inbounds i8, ptr %41, i64 8
  %241 = getelementptr inbounds i8, ptr %41, i64 16
  %242 = getelementptr inbounds i8, ptr %38, i64 8
  %243 = getelementptr inbounds i8, ptr %38, i64 16
  %244 = getelementptr inbounds i8, ptr %35, i64 8
  %245 = getelementptr inbounds i8, ptr %35, i64 16
  %246 = getelementptr inbounds i8, ptr %32, i64 8
  %247 = getelementptr inbounds i8, ptr %32, i64 16
  %248 = getelementptr inbounds i8, ptr %29, i64 8
  %249 = getelementptr inbounds i8, ptr %29, i64 16
  %250 = getelementptr inbounds i8, ptr %26, i64 8
  %251 = getelementptr inbounds i8, ptr %26, i64 16
  %252 = getelementptr inbounds i8, ptr %23, i64 8
  %253 = getelementptr inbounds i8, ptr %23, i64 16
  %254 = getelementptr inbounds i8, ptr %20, i64 8
  %255 = getelementptr inbounds i8, ptr %20, i64 16
  %256 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %257 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  switch i32 %257, label %.loopexit705 [
    i32 0, label %264
    i32 1, label %265
    i32 2, label %280
    i32 3, label %.lr.ph1251
    i32 10, label %.lr.ph1248
    i32 4, label %.lr.ph1240
    i32 5, label %817
    i32 6, label %833
    i32 7, label %849
    i32 8, label %.preheader699
    i32 9, label %895
    i32 11, label %.lr.ph1019
    i32 12, label %.preheader703
    i32 13, label %1329
    i32 14, label %1344
    i32 15, label %1359
    i32 16, label %1374
  ]

.preheader703:                                    ; preds = %.lr.ph
  %258 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  %259 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1317 unwind label %.split.split

.preheader699:                                    ; preds = %.lr.ph
  %260 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  %261 = getelementptr inbounds i8, ptr %260, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %113) #8
  store i64 0, ptr %113, align 8, !tbaa !11
  %262 = load ptr, ptr %0, align 8, !tbaa !13
  %263 = invoke noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(424) %262, ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef nonnull align 8 dereferenceable(8) %113)
          to label %865 unwind label %.loopexit675.split.split

264:                                              ; preds = %.lr.ph
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 941, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE) #9
  unreachable

265:                                              ; preds = %.lr.ph
  %266 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %269 unwind label %273

267:                                              ; preds = %272
  %268 = landingpad { ptr, i32 }
          cleanup
  br label %1389

269:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull %9)
          to label %270 unwind label %275

270:                                              ; preds = %269
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  %271 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %271, ptr noundef nonnull @.str.10)
          to label %272 unwind label %278

272:                                              ; preds = %270
  invoke void @__cxa_throw(ptr nonnull %271, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %267

273:                                              ; preds = %265
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %277

275:                                              ; preds = %269
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  br label %277

277:                                              ; preds = %275, %273
  %.pn626 = phi { ptr, i32 } [ %276, %275 ], [ %274, %273 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %1389

278:                                              ; preds = %270
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %271) #8
  br label %1389

280:                                              ; preds = %.lr.ph
  %281 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %284 unwind label %288

282:                                              ; preds = %287
  %283 = landingpad { ptr, i32 }
          cleanup
  br label %1389

284:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 1 dereferenceable(1) %13) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %12)
          to label %285 unwind label %290

285:                                              ; preds = %284
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  %286 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %286, ptr noundef nonnull @.str.10)
          to label %287 unwind label %293

287:                                              ; preds = %285
  invoke void @__cxa_throw(ptr nonnull %286, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %282

288:                                              ; preds = %280
  %289 = landingpad { ptr, i32 }
          cleanup
  br label %292

290:                                              ; preds = %284
  %291 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br label %292

292:                                              ; preds = %290, %288
  %.pn622 = phi { ptr, i32 } [ %291, %290 ], [ %289, %288 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %1389

293:                                              ; preds = %285
  %294 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %286) #8
  br label %1389

.loopexit662:                                     ; preds = %297, %299, %309, %311, %321, %323, %335, %337, %349, %351, %363, %365, %377, %379, %391, %393, %397, %409, %411, %423, %425, %437, %439, %451, %453, %465, %467, %479, %481, %485, %511, %513
  %lpad.loopexit664 = landingpad { ptr, i32 }
          cleanup
  br label %1389

.loopexit.split-lp663:                            ; preds = %529
  %lpad.loopexit.split-lp665 = landingpad { ptr, i32 }
          cleanup
  br label %1389

.lr.ph1251:                                       ; preds = %.lr.ph
  %295 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  %296 = load i32, ptr %295, align 4, !tbaa !24
  switch i32 %296, label %.loopexit705 [
    i32 12, label %297
    i32 13, label %309
    i32 2, label %321
    i32 4, label %335
    i32 6, label %349
    i32 8, label %363
    i32 10, label %377
    i32 0, label %391
    i32 3, label %409
    i32 5, label %423
    i32 7, label %437
    i32 9, label %451
    i32 11, label %465
    i32 1, label %479
    i32 14, label %497
    i32 15, label %511
    i32 16, label %525
  ]

297:                                              ; preds = %.lr.ph1251
  %298 = invoke noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 4)
          to label %299 unwind label %.loopexit662

299:                                              ; preds = %297
  %300 = load i32, ptr %295, align 4, !tbaa !24
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %15, double %298, i32 %300)
          to label %301 unwind label %.loopexit662

301:                                              ; preds = %299
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %14, ptr noundef nonnull %15)
          to label %302 unwind label %304

302:                                              ; preds = %301
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %14)
          to label %303 unwind label %306

303:                                              ; preds = %302
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %14) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #8
  br label %.loopexit705

304:                                              ; preds = %301
  %305 = landingpad { ptr, i32 }
          cleanup
  br label %308

306:                                              ; preds = %302
  %307 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %14) #8
  br label %308

308:                                              ; preds = %306, %304
  %.pn618 = phi { ptr, i32 } [ %307, %306 ], [ %305, %304 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #8
  br label %1389

309:                                              ; preds = %.lr.ph1251
  %310 = invoke noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 8)
          to label %311 unwind label %.loopexit662

311:                                              ; preds = %309
  %312 = load i32, ptr %295, align 4, !tbaa !24
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %17, double %310, i32 %312)
          to label %313 unwind label %.loopexit662

313:                                              ; preds = %311
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %16, ptr noundef nonnull %17)
          to label %314 unwind label %316

314:                                              ; preds = %313
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %16)
          to label %315 unwind label %318

315:                                              ; preds = %314
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %16) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #8
  br label %.loopexit705

316:                                              ; preds = %313
  %317 = landingpad { ptr, i32 }
          cleanup
  br label %320

318:                                              ; preds = %314
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %16) #8
  br label %320

320:                                              ; preds = %318, %316
  %.pn616 = phi { ptr, i32 } [ %319, %318 ], [ %317, %316 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #8
  br label %1389

321:                                              ; preds = %.lr.ph1251
  %322 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1)
          to label %323 unwind label %.loopexit662

323:                                              ; preds = %321
  %324 = extractvalue { i64, i64 } %322, 0
  store i64 %324, ptr %20, align 8
  %325 = extractvalue { i64, i64 } %322, 1
  store i64 %325, ptr %254, align 8
  %326 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %326, ptr %255, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %19, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %20)
          to label %327 unwind label %.loopexit662

327:                                              ; preds = %323
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %18, ptr noundef nonnull %19)
          to label %328 unwind label %330

328:                                              ; preds = %327
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %18)
          to label %329 unwind label %332

329:                                              ; preds = %328
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %18) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #8
  br label %.loopexit705

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

332:                                              ; preds = %328
  %333 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %18) #8
  br label %334

334:                                              ; preds = %332, %330
  %.pn614 = phi { ptr, i32 } [ %333, %332 ], [ %331, %330 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #8
  br label %1389

335:                                              ; preds = %.lr.ph1251
  %336 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 2)
          to label %337 unwind label %.loopexit662

337:                                              ; preds = %335
  %338 = extractvalue { i64, i64 } %336, 0
  store i64 %338, ptr %23, align 8
  %339 = extractvalue { i64, i64 } %336, 1
  store i64 %339, ptr %252, align 8
  %340 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %340, ptr %253, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %22, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %23)
          to label %341 unwind label %.loopexit662

341:                                              ; preds = %337
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %21, ptr noundef nonnull %22)
          to label %342 unwind label %344

342:                                              ; preds = %341
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %21)
          to label %343 unwind label %346

343:                                              ; preds = %342
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %21) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %22) #8
  br label %.loopexit705

344:                                              ; preds = %341
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %348

346:                                              ; preds = %342
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %21) #8
  br label %348

348:                                              ; preds = %346, %344
  %.pn612 = phi { ptr, i32 } [ %347, %346 ], [ %345, %344 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %22) #8
  br label %1389

349:                                              ; preds = %.lr.ph1251
  %350 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 4)
          to label %351 unwind label %.loopexit662

351:                                              ; preds = %349
  %352 = extractvalue { i64, i64 } %350, 0
  store i64 %352, ptr %26, align 8
  %353 = extractvalue { i64, i64 } %350, 1
  store i64 %353, ptr %250, align 8
  %354 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %354, ptr %251, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %25, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %26)
          to label %355 unwind label %.loopexit662

355:                                              ; preds = %351
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %24, ptr noundef nonnull %25)
          to label %356 unwind label %358

356:                                              ; preds = %355
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %24)
          to label %357 unwind label %360

357:                                              ; preds = %356
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %24) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #8
  br label %.loopexit705

358:                                              ; preds = %355
  %359 = landingpad { ptr, i32 }
          cleanup
  br label %362

360:                                              ; preds = %356
  %361 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %24) #8
  br label %362

362:                                              ; preds = %360, %358
  %.pn610 = phi { ptr, i32 } [ %361, %360 ], [ %359, %358 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #8
  br label %1389

363:                                              ; preds = %.lr.ph1251
  %364 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 8)
          to label %365 unwind label %.loopexit662

365:                                              ; preds = %363
  %366 = extractvalue { i64, i64 } %364, 0
  store i64 %366, ptr %29, align 8
  %367 = extractvalue { i64, i64 } %364, 1
  store i64 %367, ptr %248, align 8
  %368 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %368, ptr %249, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %28, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %29)
          to label %369 unwind label %.loopexit662

369:                                              ; preds = %365
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %27, ptr noundef nonnull %28)
          to label %370 unwind label %372

370:                                              ; preds = %369
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %27)
          to label %371 unwind label %374

371:                                              ; preds = %370
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %27) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %28) #8
  br label %.loopexit705

372:                                              ; preds = %369
  %373 = landingpad { ptr, i32 }
          cleanup
  br label %376

374:                                              ; preds = %370
  %375 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %27) #8
  br label %376

376:                                              ; preds = %374, %372
  %.pn608 = phi { ptr, i32 } [ %375, %374 ], [ %373, %372 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %28) #8
  br label %1389

377:                                              ; preds = %.lr.ph1251
  %378 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 16)
          to label %379 unwind label %.loopexit662

379:                                              ; preds = %377
  %380 = extractvalue { i64, i64 } %378, 0
  store i64 %380, ptr %32, align 8
  %381 = extractvalue { i64, i64 } %378, 1
  store i64 %381, ptr %246, align 8
  %382 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %382, ptr %247, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %31, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %32)
          to label %383 unwind label %.loopexit662

383:                                              ; preds = %379
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %30, ptr noundef nonnull %31)
          to label %384 unwind label %386

384:                                              ; preds = %383
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %30)
          to label %385 unwind label %388

385:                                              ; preds = %384
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %30) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #8
  br label %.loopexit705

386:                                              ; preds = %383
  %387 = landingpad { ptr, i32 }
          cleanup
  br label %390

388:                                              ; preds = %384
  %389 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %30) #8
  br label %390

390:                                              ; preds = %388, %386
  %.pn606 = phi { ptr, i32 } [ %389, %388 ], [ %387, %386 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %31) #8
  br label %1389

391:                                              ; preds = %.lr.ph1251
  %392 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %393 unwind label %.loopexit662

393:                                              ; preds = %391
  %394 = lshr i32 %392, 3
  %395 = zext nneg i32 %394 to i64
  %396 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %395)
          to label %397 unwind label %.loopexit662

397:                                              ; preds = %393
  %398 = extractvalue { i64, i64 } %396, 0
  store i64 %398, ptr %35, align 8
  %399 = extractvalue { i64, i64 } %396, 1
  store i64 %399, ptr %244, align 8
  %400 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %400, ptr %245, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %34, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %35)
          to label %401 unwind label %.loopexit662

401:                                              ; preds = %397
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %33, ptr noundef nonnull %34)
          to label %402 unwind label %404

402:                                              ; preds = %401
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %33)
          to label %403 unwind label %406

403:                                              ; preds = %402
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %33) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #8
  br label %.loopexit705

404:                                              ; preds = %401
  %405 = landingpad { ptr, i32 }
          cleanup
  br label %408

406:                                              ; preds = %402
  %407 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %33) #8
  br label %408

408:                                              ; preds = %406, %404
  %.pn604 = phi { ptr, i32 } [ %407, %406 ], [ %405, %404 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #8
  br label %1389

409:                                              ; preds = %.lr.ph1251
  %410 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1)
          to label %411 unwind label %.loopexit662

411:                                              ; preds = %409
  %412 = extractvalue { i64, i64 } %410, 0
  store i64 %412, ptr %38, align 8
  %413 = extractvalue { i64, i64 } %410, 1
  store i64 %413, ptr %242, align 8
  %414 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %414, ptr %243, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %37, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %38)
          to label %415 unwind label %.loopexit662

415:                                              ; preds = %411
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %36, ptr noundef nonnull %37)
          to label %416 unwind label %418

416:                                              ; preds = %415
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %36)
          to label %417 unwind label %420

417:                                              ; preds = %416
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %36) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %37) #8
  br label %.loopexit705

418:                                              ; preds = %415
  %419 = landingpad { ptr, i32 }
          cleanup
  br label %422

420:                                              ; preds = %416
  %421 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %36) #8
  br label %422

422:                                              ; preds = %420, %418
  %.pn602 = phi { ptr, i32 } [ %421, %420 ], [ %419, %418 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %37) #8
  br label %1389

423:                                              ; preds = %.lr.ph1251
  %424 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 2)
          to label %425 unwind label %.loopexit662

425:                                              ; preds = %423
  %426 = extractvalue { i64, i64 } %424, 0
  store i64 %426, ptr %41, align 8
  %427 = extractvalue { i64, i64 } %424, 1
  store i64 %427, ptr %240, align 8
  %428 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %428, ptr %241, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %40, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %41)
          to label %429 unwind label %.loopexit662

429:                                              ; preds = %425
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %39, ptr noundef nonnull %40)
          to label %430 unwind label %432

430:                                              ; preds = %429
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %39)
          to label %431 unwind label %434

431:                                              ; preds = %430
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %39) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #8
  br label %.loopexit705

432:                                              ; preds = %429
  %433 = landingpad { ptr, i32 }
          cleanup
  br label %436

434:                                              ; preds = %430
  %435 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %39) #8
  br label %436

436:                                              ; preds = %434, %432
  %.pn600 = phi { ptr, i32 } [ %435, %434 ], [ %433, %432 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #8
  br label %1389

437:                                              ; preds = %.lr.ph1251
  %438 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 4)
          to label %439 unwind label %.loopexit662

439:                                              ; preds = %437
  %440 = extractvalue { i64, i64 } %438, 0
  store i64 %440, ptr %44, align 8
  %441 = extractvalue { i64, i64 } %438, 1
  store i64 %441, ptr %238, align 8
  %442 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %442, ptr %239, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %43, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %44)
          to label %443 unwind label %.loopexit662

443:                                              ; preds = %439
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %42, ptr noundef nonnull %43)
          to label %444 unwind label %446

444:                                              ; preds = %443
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %42)
          to label %445 unwind label %448

445:                                              ; preds = %444
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %42) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #8
  br label %.loopexit705

446:                                              ; preds = %443
  %447 = landingpad { ptr, i32 }
          cleanup
  br label %450

448:                                              ; preds = %444
  %449 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %42) #8
  br label %450

450:                                              ; preds = %448, %446
  %.pn598 = phi { ptr, i32 } [ %449, %448 ], [ %447, %446 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #8
  br label %1389

451:                                              ; preds = %.lr.ph1251
  %452 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 8)
          to label %453 unwind label %.loopexit662

453:                                              ; preds = %451
  %454 = extractvalue { i64, i64 } %452, 0
  store i64 %454, ptr %47, align 8
  %455 = extractvalue { i64, i64 } %452, 1
  store i64 %455, ptr %236, align 8
  %456 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %456, ptr %237, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %46, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %47)
          to label %457 unwind label %.loopexit662

457:                                              ; preds = %453
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %45, ptr noundef nonnull %46)
          to label %458 unwind label %460

458:                                              ; preds = %457
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %45)
          to label %459 unwind label %462

459:                                              ; preds = %458
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %45) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %46) #8
  br label %.loopexit705

460:                                              ; preds = %457
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %464

462:                                              ; preds = %458
  %463 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %45) #8
  br label %464

464:                                              ; preds = %462, %460
  %.pn596 = phi { ptr, i32 } [ %463, %462 ], [ %461, %460 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %46) #8
  br label %1389

465:                                              ; preds = %.lr.ph1251
  %466 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 16)
          to label %467 unwind label %.loopexit662

467:                                              ; preds = %465
  %468 = extractvalue { i64, i64 } %466, 0
  store i64 %468, ptr %50, align 8
  %469 = extractvalue { i64, i64 } %466, 1
  store i64 %469, ptr %234, align 8
  %470 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %470, ptr %235, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %49, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %50)
          to label %471 unwind label %.loopexit662

471:                                              ; preds = %467
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %48, ptr noundef nonnull %49)
          to label %472 unwind label %474

472:                                              ; preds = %471
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %48)
          to label %473 unwind label %476

473:                                              ; preds = %472
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %48) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #8
  br label %.loopexit705

474:                                              ; preds = %471
  %475 = landingpad { ptr, i32 }
          cleanup
  br label %478

476:                                              ; preds = %472
  %477 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %48) #8
  br label %478

478:                                              ; preds = %476, %474
  %.pn594 = phi { ptr, i32 } [ %477, %476 ], [ %475, %474 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #8
  br label %1389

479:                                              ; preds = %.lr.ph1251
  %480 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %481 unwind label %.loopexit662

481:                                              ; preds = %479
  %482 = lshr i32 %480, 3
  %483 = zext nneg i32 %482 to i64
  %484 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %483)
          to label %485 unwind label %.loopexit662

485:                                              ; preds = %481
  %486 = extractvalue { i64, i64 } %484, 0
  store i64 %486, ptr %53, align 8
  %487 = extractvalue { i64, i64 } %484, 1
  store i64 %487, ptr %232, align 8
  %488 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %488, ptr %233, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %52, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %53)
          to label %489 unwind label %.loopexit662

489:                                              ; preds = %485
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %51, ptr noundef nonnull %52)
          to label %490 unwind label %492

490:                                              ; preds = %489
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %51)
          to label %491 unwind label %494

491:                                              ; preds = %490
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %51) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %52) #8
  br label %.loopexit705

492:                                              ; preds = %489
  %493 = landingpad { ptr, i32 }
          cleanup
  br label %496

494:                                              ; preds = %490
  %495 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %51) #8
  br label %496

496:                                              ; preds = %494, %492
  %.pn592 = phi { ptr, i32 } [ %495, %494 ], [ %493, %492 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %52) #8
  br label %1389

497:                                              ; preds = %.lr.ph1251
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #8
  %498 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1)
          to label %499 unwind label %506

499:                                              ; preds = %497
  %500 = extractvalue { i64, i64 } %498, 0
  store i64 %500, ptr %55, align 8
  %501 = extractvalue { i64, i64 } %498, 1
  store i64 %501, ptr %231, align 8
  %502 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %55, i32 noundef 0)
          to label %503 unwind label %506

503:                                              ; preds = %499
  invoke void @_ZN11PatternRule9make_BoolEb(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %54, i1 noundef zeroext %502)
          to label %504 unwind label %506

504:                                              ; preds = %503
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %54)
          to label %505 unwind label %508

505:                                              ; preds = %504
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %54) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #8
  br label %.loopexit705

506:                                              ; preds = %503, %499, %497
  %507 = landingpad { ptr, i32 }
          cleanup
  br label %510

508:                                              ; preds = %504
  %509 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %54) #8
  br label %510

510:                                              ; preds = %508, %506
  %.pn590 = phi { ptr, i32 } [ %509, %508 ], [ %507, %506 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #8
  br label %1389

511:                                              ; preds = %.lr.ph1251
  %512 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 4)
          to label %513 unwind label %.loopexit662

513:                                              ; preds = %511
  %514 = extractvalue { i64, i64 } %512, 0
  store i64 %514, ptr %58, align 8
  %515 = extractvalue { i64, i64 } %512, 1
  store i64 %515, ptr %229, align 8
  %516 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %516, ptr %230, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %57, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %58)
          to label %517 unwind label %.loopexit662

517:                                              ; preds = %513
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %56, ptr noundef nonnull %57)
          to label %518 unwind label %520

518:                                              ; preds = %517
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %56)
          to label %519 unwind label %522

519:                                              ; preds = %518
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %56) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57) #8
  br label %.loopexit705

520:                                              ; preds = %517
  %521 = landingpad { ptr, i32 }
          cleanup
  br label %524

522:                                              ; preds = %518
  %523 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %56) #8
  br label %524

524:                                              ; preds = %522, %520
  %.pn588 = phi { ptr, i32 } [ %523, %522 ], [ %521, %520 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57) #8
  br label %1389

525:                                              ; preds = %.lr.ph1251
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %526 unwind label %530

526:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %61) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull %60)
          to label %527 unwind label %532

527:                                              ; preds = %526
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #8
  %528 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %528, ptr noundef nonnull @.str.10)
          to label %529 unwind label %535

529:                                              ; preds = %527
  invoke void @__cxa_throw(ptr nonnull %528, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %.loopexit.split-lp663

530:                                              ; preds = %525
  %531 = landingpad { ptr, i32 }
          cleanup
  br label %534

532:                                              ; preds = %526
  %533 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  br label %534

534:                                              ; preds = %532, %530
  %.pn586 = phi { ptr, i32 } [ %533, %532 ], [ %531, %530 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #8
  br label %1389

535:                                              ; preds = %527
  %536 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %528) #8
  br label %1389

.lr.ph1248:                                       ; preds = %.lr.ph
  %537 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #8
  %538 = load ptr, ptr %0, align 8, !tbaa !13
  %539 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(424) %538, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %540 unwind label %.loopexit668

540:                                              ; preds = %.lr.ph1248
  store ptr %539, ptr %62, align 8, !tbaa !5
  %.not579 = icmp eq ptr %539, null
  br i1 %.not579, label %541, label %553

541:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %542 unwind label %546

542:                                              ; preds = %541
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #8
  store ptr %3, ptr %65, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull %64)
          to label %543 unwind label %548

543:                                              ; preds = %542
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #8
  %544 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %544, ptr noundef nonnull @.str.10)
          to label %.invoke unwind label %551

.invoke:                                          ; preds = %543, %561
  %545 = phi ptr [ %562, %561 ], [ %544, %543 ]
  invoke void @__cxa_throw(ptr nonnull %545, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %.cont unwind label %.loopexit.split-lp669

.cont:                                            ; preds = %.invoke
  unreachable

.loopexit668:                                     ; preds = %.lr.ph1248, %570
  %lpad.loopexit670 = landingpad { ptr, i32 }
          cleanup
  br label %592

.loopexit.split-lp669:                            ; preds = %.invoke
  %lpad.loopexit.split-lp671 = landingpad { ptr, i32 }
          cleanup
  br label %592

546:                                              ; preds = %541
  %547 = landingpad { ptr, i32 }
          cleanup
  br label %550

548:                                              ; preds = %542
  %549 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br label %550

550:                                              ; preds = %548, %546
  %.pn580 = phi { ptr, i32 } [ %549, %548 ], [ %547, %546 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #8
  br label %592

551:                                              ; preds = %543
  %552 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %544) #8
  br label %592

553:                                              ; preds = %540
  %554 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %537) #8
  %555 = getelementptr inbounds i8, ptr %539, i64 88
  %556 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %555) #8
  %557 = icmp eq i64 %554, %556
  br i1 %557, label %570, label %558

558:                                              ; preds = %553
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %559 unwind label %563

559:                                              ; preds = %558
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %68) #8
  store ptr %537, ptr %68, align 8, !tbaa !5
  %560 = getelementptr inbounds i8, ptr %68, i64 8
  store ptr %62, ptr %560, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull align 8 dereferenceable(16) %68) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull %67)
          to label %561 unwind label %565

561:                                              ; preds = %559
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #8
  %562 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %562, ptr noundef nonnull @.str.10)
          to label %.invoke unwind label %568

563:                                              ; preds = %558
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %567

565:                                              ; preds = %559
  %566 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #8
  br label %567

567:                                              ; preds = %565, %563
  %.pn582 = phi { ptr, i32 } [ %566, %565 ], [ %564, %563 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #8
  br label %592

568:                                              ; preds = %561
  %569 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %562) #8
  br label %592

570:                                              ; preds = %553
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %221, i8 noundef zeroext 0)
          to label %.preheader657 unwind label %.loopexit668

.preheader657:                                    ; preds = %570
  %571 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %537) #8
  %.not1259 = icmp eq i64 %571, 0
  br i1 %.not1259, label %..loopexit667_crit_edge, label %.lr.ph1245

..loopexit667_crit_edge:                          ; preds = %582, %.preheader657
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %221)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  br label %.loopexit705

.lr.ph1245:                                       ; preds = %.preheader657, %582
  %572 = phi ptr [ %578, %582 ], [ %539, %.preheader657 ]
  %573 = phi i64 [ %587, %582 ], [ 0, %.preheader657 ]
  %.03971244 = phi i32 [ %586, %582 ], [ 0, %.preheader657 ]
  %574 = getelementptr inbounds i8, ptr %572, i64 88
  %575 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %574, i64 noundef %573) #8
  %576 = load i64, ptr %575, align 8, !tbaa !32
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %69, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %576)
          to label %577 unwind label %590

577:                                              ; preds = %.lr.ph1245
  %578 = load ptr, ptr %62, align 8, !tbaa !5
  %579 = getelementptr inbounds i8, ptr %578, i64 88
  %580 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %579, i64 noundef %573) #8
  %581 = getelementptr inbounds i8, ptr %580, i64 8
  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 %69, ptr noundef nonnull align 8 dereferenceable(8) %581)
          to label %582 unwind label %590

582:                                              ; preds = %577
  %583 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %221)
  %584 = load i8, ptr %583, align 1, !tbaa !35
  %585 = add i8 %584, 1
  store i8 %585, ptr %583, align 1, !tbaa !35
  %586 = add i32 %.03971244, 1
  %587 = zext i32 %586 to i64
  %588 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %537) #8
  %589 = icmp ugt i64 %588, %587
  br i1 %589, label %.lr.ph1245, label %..loopexit667_crit_edge, !llvm.loop !36

590:                                              ; preds = %577, %.lr.ph1245
  %591 = landingpad { ptr, i32 }
          cleanup
  br label %592

592:                                              ; preds = %.loopexit668, %.loopexit.split-lp669, %590, %568, %567, %551, %550
  %.pn584 = phi { ptr, i32 } [ %591, %590 ], [ %569, %568 ], [ %.pn582, %567 ], [ %552, %551 ], [ %.pn580, %550 ], [ %lpad.loopexit670, %.loopexit668 ], [ %lpad.loopexit.split-lp671, %.loopexit.split-lp669 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  br label %1389

.lr.ph1240:                                       ; preds = %.lr.ph
  %593 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  %594 = getelementptr inbounds i8, ptr %593, i64 88
  %595 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %594)
  switch i32 %595, label %.loopexit705 [
    i32 0, label %599
    i32 1, label %600
    i32 2, label %615
    i32 4, label %.preheader652
    i32 3, label %659
    i32 5, label %675
    i32 6, label %.lr.ph1185
  ]

.preheader652:                                    ; preds = %.lr.ph1240
  %596 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %594)
  %597 = load ptr, ptr %0, align 8, !tbaa !13
  %598 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(424) %597, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %631 unwind label %.loopexit640.split.split

599:                                              ; preds = %.lr.ph1240
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 987, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE) #9
  unreachable

600:                                              ; preds = %.lr.ph1240
  %601 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %594)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %604 unwind label %608

602:                                              ; preds = %607
  %603 = landingpad { ptr, i32 }
          cleanup
  br label %1389

604:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #8
  store ptr %593, ptr %72, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull %71)
          to label %605 unwind label %610

605:                                              ; preds = %604
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #8
  %606 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %606, ptr noundef nonnull @.str.10)
          to label %607 unwind label %613

607:                                              ; preds = %605
  invoke void @__cxa_throw(ptr nonnull %606, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %602

608:                                              ; preds = %600
  %609 = landingpad { ptr, i32 }
          cleanup
  br label %612

610:                                              ; preds = %604
  %611 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  br label %612

612:                                              ; preds = %610, %608
  %.pn574 = phi { ptr, i32 } [ %611, %610 ], [ %609, %608 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #8
  br label %1389

613:                                              ; preds = %605
  %614 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %606) #8
  br label %1389

615:                                              ; preds = %.lr.ph1240
  %616 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %594)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #8
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %617 unwind label %621

617:                                              ; preds = %615
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #8
  store ptr %73, ptr %76, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull %75)
          to label %618 unwind label %623

618:                                              ; preds = %617
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #8
  %619 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %619, ptr noundef nonnull @.str.5)
          to label %620 unwind label %626

620:                                              ; preds = %618
  invoke void @__cxa_throw(ptr nonnull %619, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %628

621:                                              ; preds = %615
  %622 = landingpad { ptr, i32 }
          cleanup
  br label %625

623:                                              ; preds = %617
  %624 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #8
  br label %625

625:                                              ; preds = %623, %621
  %.pn570 = phi { ptr, i32 } [ %624, %623 ], [ %622, %621 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #8
  br label %630

626:                                              ; preds = %618
  %627 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %619) #8
  br label %630

628:                                              ; preds = %620
  %629 = landingpad { ptr, i32 }
          cleanup
  br label %630

630:                                              ; preds = %628, %626, %625
  %.pn572 = phi { ptr, i32 } [ %629, %628 ], [ %627, %626 ], [ %.pn570, %625 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #8
  br label %1389

631:                                              ; preds = %.preheader652
  %.not565 = icmp eq ptr %598, null
  br i1 %.not565, label %.split1194, label %643

.split1194:                                       ; preds = %631
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %632 unwind label %636

632:                                              ; preds = %.split1194
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #8
  store ptr %3, ptr %79, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull %78)
          to label %633 unwind label %638

633:                                              ; preds = %632
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #8
  %634 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %634, ptr noundef nonnull @.str.10)
          to label %635 unwind label %641

635:                                              ; preds = %633
  invoke void @__cxa_throw(ptr nonnull %634, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %.loopexit.split-lp

.loopexit640.split.split:                         ; preds = %.preheader652, %643
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %1389

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

636:                                              ; preds = %.split1194
  %637 = landingpad { ptr, i32 }
          cleanup
  br label %640

638:                                              ; preds = %632
  %639 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  br label %640

640:                                              ; preds = %638, %636
  %.pn566 = phi { ptr, i32 } [ %639, %638 ], [ %637, %636 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #8
  br label %1389

641:                                              ; preds = %633
  %642 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %634) #8
  br label %1389

643:                                              ; preds = %631
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %221, i8 noundef zeroext 0)
          to label %.preheader unwind label %.loopexit640.split.split

.preheader:                                       ; preds = %643
  %644 = getelementptr inbounds i8, ptr %598, i64 88
  %645 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %644) #8
  %.not1258 = icmp eq i64 %645, 0
  br i1 %.not1258, label %..loopexit_crit_edge, label %.lr.ph1188

..loopexit_crit_edge:                             ; preds = %651, %.preheader
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %221)
  br label %.loopexit705

.lr.ph1188:                                       ; preds = %.preheader, %651
  %.04131187 = phi i64 [ %655, %651 ], [ 0, %.preheader ]
  %646 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %644, i64 noundef %.04131187) #8
  %647 = load i64, ptr %646, align 8, !tbaa !32
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %80, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %647)
          to label %648 unwind label %.split1196.split

648:                                              ; preds = %.lr.ph1188
  %649 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %644, i64 noundef %.04131187) #8
  %650 = getelementptr inbounds i8, ptr %649, i64 8
  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 %80, ptr noundef nonnull align 8 dereferenceable(8) %650)
          to label %651 unwind label %.split1196.split

651:                                              ; preds = %648
  %652 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %221)
  %653 = load i8, ptr %652, align 1, !tbaa !35
  %654 = add i8 %653, 1
  store i8 %654, ptr %652, align 1, !tbaa !35
  %655 = add nuw i64 %.04131187, 1
  %656 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %644) #8
  %657 = icmp ult i64 %655, %656
  br i1 %657, label %.lr.ph1188, label %..loopexit_crit_edge, !llvm.loop !38

.split1196.split:                                 ; preds = %648, %.lr.ph1188
  %658 = landingpad { ptr, i32 }
          cleanup
  br label %1389

659:                                              ; preds = %.lr.ph1240
  %660 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %594)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #8
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %661 unwind label %665

661:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #8
  store ptr %81, ptr %84, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull %83)
          to label %662 unwind label %667

662:                                              ; preds = %661
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #8
  %663 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %663, ptr noundef nonnull @.str.5)
          to label %664 unwind label %670

664:                                              ; preds = %662
  invoke void @__cxa_throw(ptr nonnull %663, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %672

665:                                              ; preds = %659
  %666 = landingpad { ptr, i32 }
          cleanup
  br label %669

667:                                              ; preds = %661
  %668 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #8
  br label %669

669:                                              ; preds = %667, %665
  %.pn561 = phi { ptr, i32 } [ %668, %667 ], [ %666, %665 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #8
  br label %674

670:                                              ; preds = %662
  %671 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %663) #8
  br label %674

672:                                              ; preds = %664
  %673 = landingpad { ptr, i32 }
          cleanup
  br label %674

674:                                              ; preds = %672, %670, %669
  %.pn563 = phi { ptr, i32 } [ %673, %672 ], [ %671, %670 ], [ %.pn561, %669 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #8
  br label %1389

675:                                              ; preds = %.lr.ph1240
  %676 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %594)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %85) #8
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %85, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %677 unwind label %681

677:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #8
  store ptr %85, ptr %88, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(8) %88) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull %87)
          to label %678 unwind label %683

678:                                              ; preds = %677
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #8
  %679 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %679, ptr noundef nonnull @.str.5)
          to label %680 unwind label %686

680:                                              ; preds = %678
  invoke void @__cxa_throw(ptr nonnull %679, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %688

681:                                              ; preds = %675
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %685

683:                                              ; preds = %677
  %684 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #8
  br label %685

685:                                              ; preds = %683, %681
  %.pn557 = phi { ptr, i32 } [ %684, %683 ], [ %682, %681 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #8
  br label %690

686:                                              ; preds = %678
  %687 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %679) #8
  br label %690

688:                                              ; preds = %680
  %689 = landingpad { ptr, i32 }
          cleanup
  br label %690

690:                                              ; preds = %688, %686, %685
  %.pn559 = phi { ptr, i32 } [ %689, %688 ], [ %687, %686 ], [ %.pn557, %685 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #8
  br label %1389

.lr.ph1185:                                       ; preds = %.lr.ph1240
  %691 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %594)
  %692 = load ptr, ptr %0, align 8, !tbaa !13
  %693 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(424) %692, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %694 unwind label %.loopexit642

694:                                              ; preds = %.lr.ph1185
  %.not538 = icmp eq ptr %693, null
  br i1 %.not538, label %695, label %707

695:                                              ; preds = %694
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %696 unwind label %700

696:                                              ; preds = %695
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #8
  store ptr %3, ptr %91, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull %90)
          to label %697 unwind label %702

697:                                              ; preds = %696
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #8
  %698 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %698, ptr noundef nonnull @.str.10)
          to label %699 unwind label %705

699:                                              ; preds = %697
  invoke void @__cxa_throw(ptr nonnull %698, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %.loopexit.split-lp643

.loopexit642:                                     ; preds = %.lr.ph1185
  %lpad.loopexit644 = landingpad { ptr, i32 }
          cleanup
  br label %1389

.loopexit.split-lp643:                            ; preds = %699
  %lpad.loopexit.split-lp645 = landingpad { ptr, i32 }
          cleanup
  br label %1389

700:                                              ; preds = %695
  %701 = landingpad { ptr, i32 }
          cleanup
  br label %704

702:                                              ; preds = %696
  %703 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #8
  br label %704

704:                                              ; preds = %702, %700
  %.pn539 = phi { ptr, i32 } [ %703, %702 ], [ %701, %700 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #8
  br label %1389

705:                                              ; preds = %697
  %706 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %698) #8
  br label %1389

707:                                              ; preds = %694
  %708 = load ptr, ptr %0, align 8, !tbaa !13
  %709 = invoke i64 @_ZNK8TypeRepr16get_enum_variantERK4SpanRK18StaticTraitResolveRK19EncodedLiteralSlice(ptr noundef nonnull align 8 dereferenceable(112) %693, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(424) %708, ptr noundef nonnull align 8 dereferenceable(24) %2)
          to label %710 unwind label %748

710:                                              ; preds = %707
  %.sroa.0.0.extract.trunc = trunc i64 %709 to i32
  %711 = and i64 %709, 4294967296
  %.not542.not = icmp eq i64 %711, 0
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %92) #8
  %712 = load ptr, ptr %0, align 8, !tbaa !13
  invoke void @_ZN21PatternRulesetBuilderC2ERK18StaticTraitResolve(ptr noundef nonnull align 8 dereferenceable(80) %92, ptr noundef nonnull align 8 dereferenceable(424) %712)
          to label %713 unwind label %750

713:                                              ; preds = %710
  %714 = getelementptr inbounds i8, ptr %693, i64 88
  %715 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %714) #8
  %716 = icmp ugt i64 %715, 1
  br i1 %716, label %720, label %717

717:                                              ; preds = %713
  %718 = getelementptr inbounds i8, ptr %693, i64 16
  %719 = call noundef zeroext i1 @_ZNK8TypeRepr11VariantMode7is_NoneEv(ptr noundef nonnull align 8 dereferenceable(72) %718)
  br i1 %719, label %720, label %791

720:                                              ; preds = %717, %713
  %721 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN12field_path_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %226, ptr noundef nonnull align 8 dereferenceable(24) %221)
          to label %722 unwind label %.loopexit647

722:                                              ; preds = %720
  %723 = trunc i64 %709 to i8
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %226, i8 noundef zeroext %723)
          to label %724 unwind label %.loopexit647

724:                                              ; preds = %722
  %725 = and i64 %709, 4294967295
  %726 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %714, i64 noundef %725) #8
  %727 = getelementptr inbounds i8, ptr %726, i64 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %93) #8
  %728 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %714, i64 noundef %725) #8
  %729 = load i64, ptr %728, align 8, !tbaa !32
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %93, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %729)
          to label %730 unwind label %752

730:                                              ; preds = %724
  br i1 %.not542.not, label %.critedge631.thread, label %731

731:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #8
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %94)
          to label %732 unwind label %754

732:                                              ; preds = %731
  %733 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %727, ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %.critedge631 unwind label %756

.critedge631:                                     ; preds = %732
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #8
  br i1 %733, label %734, label %.critedge631.thread

734:                                              ; preds = %.critedge631
  %735 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %736 unwind label %752

736:                                              ; preds = %734
  br i1 %735, label %737, label %759

737:                                              ; preds = %736
  %738 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !39
  %739 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %738, ptr noundef nonnull @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE)
          to label %740 unwind label %752

740:                                              ; preds = %737
  %741 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %739, ptr noundef nonnull @.str.56)
          to label %742 unwind label %752

742:                                              ; preds = %740
  %743 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %741, ptr noundef nonnull align 8 dereferenceable(8) %727)
          to label %744 unwind label %752

744:                                              ; preds = %742
  %745 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %743, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %746 unwind label %752

746:                                              ; preds = %744
  %747 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %745, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %759 unwind label %752

748:                                              ; preds = %707
  %749 = landingpad { ptr, i32 }
          cleanup
  br label %1389

750:                                              ; preds = %710
  %751 = landingpad { ptr, i32 }
          cleanup
  br label %816

.loopexit647:                                     ; preds = %720, %722
  %lpad.loopexit649 = landingpad { ptr, i32 }
          cleanup
  br label %815

.loopexit.split-lp648:                            ; preds = %798
  %lpad.loopexit.split-lp650 = landingpad { ptr, i32 }
          cleanup
  br label %815

752:                                              ; preds = %.critedge631.thread, %746, %744, %742, %740, %737, %734, %724
  %753 = landingpad { ptr, i32 }
          cleanup
  br label %790

754:                                              ; preds = %731
  %755 = landingpad { ptr, i32 }
          cleanup
  br label %758

756:                                              ; preds = %732
  %757 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  br label %758

758:                                              ; preds = %754, %756
  %.pn543 = phi { ptr, i32 } [ %757, %756 ], [ %755, %754 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #8
  br label %790

759:                                              ; preds = %746, %736
  %760 = load ptr, ptr %0, align 8, !tbaa !13
  %761 = invoke noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(424) %760, ptr noundef nonnull align 8 dereferenceable(8) %727)
          to label %762 unwind label %766

762:                                              ; preds = %759
  %763 = getelementptr inbounds i8, ptr %761, i64 16
  %764 = call noundef zeroext i1 @_ZNK8TypeRepr11VariantMode7is_NoneEv(ptr noundef nonnull align 8 dereferenceable(72) %763)
  br i1 %764, label %768, label %765

765:                                              ; preds = %762
  call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.17, i32 noundef 1038, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE) #9
  unreachable

766:                                              ; preds = %772, %759
  %767 = landingpad { ptr, i32 }
          cleanup
  br label %790

768:                                              ; preds = %762
  %769 = getelementptr inbounds i8, ptr %761, i64 88
  %770 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %769) #8
  %.not545 = icmp eq i64 %770, 0
  br i1 %.not545, label %771, label %772

771:                                              ; preds = %768
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.17, i32 noundef 1039, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE) #9
  unreachable

772:                                              ; preds = %768
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %226, i8 noundef zeroext 0)
          to label %.preheader639 unwind label %766

.preheader639:                                    ; preds = %772
  %773 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %769) #8
  %.not1257 = icmp eq i64 %773, 1
  br i1 %.not1257, label %._crit_edge1183, label %.lr.ph1182

._crit_edge1183:                                  ; preds = %779, %.preheader639
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %226)
  br label %789

.lr.ph1182:                                       ; preds = %.preheader639, %779
  %.04191181 = phi i64 [ %783, %779 ], [ 0, %.preheader639 ]
  %774 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %769, i64 noundef %.04191181) #8
  %775 = load i64, ptr %774, align 8, !tbaa !32
  invoke void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %95, ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %775)
          to label %776 unwind label %787

776:                                              ; preds = %.lr.ph1182
  %777 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %769, i64 noundef %.04191181) #8
  %778 = getelementptr inbounds i8, ptr %777, i64 8
  invoke void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %92, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %95, ptr noundef nonnull align 8 dereferenceable(8) %778)
          to label %779 unwind label %787

779:                                              ; preds = %776
  %780 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %226)
  %781 = load i8, ptr %780, align 1, !tbaa !35
  %782 = add i8 %781, 1
  store i8 %782, ptr %780, align 1, !tbaa !35
  %783 = add nuw i64 %.04191181, 1
  %784 = call noundef i64 @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %769) #8
  %785 = add i64 %784, -1
  %786 = icmp ult i64 %783, %785
  br i1 %786, label %.lr.ph1182, label %._crit_edge1183, !llvm.loop !41

787:                                              ; preds = %776, %.lr.ph1182
  %788 = landingpad { ptr, i32 }
          cleanup
  br label %790

.critedge631.thread:                              ; preds = %730, %.critedge631
  invoke void @_ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(80) %92, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull byval(%struct.EncodedLiteralSlice) align 8 %93, ptr noundef nonnull align 8 dereferenceable(8) %727)
          to label %789 unwind label %752

789:                                              ; preds = %.critedge631.thread, %._crit_edge1183
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %93) #8
  br label %791

790:                                              ; preds = %766, %787, %758, %752
  %.pn550.pn = phi { ptr, i32 } [ %753, %752 ], [ %.pn543, %758 ], [ %788, %787 ], [ %767, %766 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %93) #8
  br label %815

791:                                              ; preds = %717, %789
  %792 = call noundef i64 @_ZNKSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %227) #8
  %793 = icmp eq i64 %792, 1
  br i1 %793, label %806, label %794

794:                                              ; preds = %791
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %96) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %795 unwind label %799

795:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %98) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %97, ptr noundef nonnull align 1 dereferenceable(1) %98) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull %97)
          to label %796 unwind label %801

796:                                              ; preds = %795
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %98) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #8
  %797 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %797, ptr noundef nonnull @.str.10)
          to label %798 unwind label %804

798:                                              ; preds = %796
  invoke void @__cxa_throw(ptr nonnull %797, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %.loopexit.split-lp648

799:                                              ; preds = %794
  %800 = landingpad { ptr, i32 }
          cleanup
  br label %803

801:                                              ; preds = %795
  %802 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %98) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #8
  br label %803

803:                                              ; preds = %801, %799
  %.pn546 = phi { ptr, i32 } [ %802, %801 ], [ %800, %799 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %96) #8
  br label %815

804:                                              ; preds = %796
  %805 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %797) #8
  br label %815

806:                                              ; preds = %791
  store i32 %.sroa.0.0.extract.trunc, ptr %100, align 8, !tbaa !42
  %807 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %227, i64 noundef 0) #8
  %808 = getelementptr inbounds i8, ptr %807, i64 8
  call void @_ZNSt6vectorI11PatternRuleSaIS0_EEC2EOS2_(ptr noundef nonnull align 8 dereferenceable(24) %228, ptr noundef nonnull align 8 dereferenceable(24) %808) #8
  invoke void @_ZN11PatternRule12make_VariantENS_12Data_VariantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %99, ptr noundef nonnull %100)
          to label %809 unwind label %810

809:                                              ; preds = %806
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %99)
          to label %..loopexit641_crit_edge unwind label %812

..loopexit641_crit_edge:                          ; preds = %809
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %99) #8
  call void @_ZN11PatternRule12Data_VariantD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %92) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %92) #8
  br label %.loopexit705

810:                                              ; preds = %806
  %811 = landingpad { ptr, i32 }
          cleanup
  br label %814

812:                                              ; preds = %809
  %813 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %99) #8
  br label %814

814:                                              ; preds = %812, %810
  %.pn548 = phi { ptr, i32 } [ %813, %812 ], [ %811, %810 ]
  call void @_ZN11PatternRule12Data_VariantD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #8
  br label %815

815:                                              ; preds = %.loopexit647, %.loopexit.split-lp648, %814, %804, %803, %790
  %.pn550.pn.pn = phi { ptr, i32 } [ %.pn550.pn, %790 ], [ %.pn548, %814 ], [ %805, %804 ], [ %.pn546, %803 ], [ %lpad.loopexit649, %.loopexit647 ], [ %lpad.loopexit.split-lp650, %.loopexit.split-lp648 ]
  call void @_ZN21PatternRulesetBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(80) %92) #8
  br label %816

816:                                              ; preds = %815, %750
  %.pn550.pn.pn.pn = phi { ptr, i32 } [ %.pn550.pn.pn, %815 ], [ %751, %750 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %92) #8
  br label %1389

817:                                              ; preds = %.lr.ph
  %818 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101) #8
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %102) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %819 unwind label %823

819:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %104) #8
  store ptr %101, ptr %104, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull %103)
          to label %820 unwind label %825

820:                                              ; preds = %819
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #8
  %821 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %821, ptr noundef nonnull @.str.5)
          to label %822 unwind label %828

822:                                              ; preds = %820
  invoke void @__cxa_throw(ptr nonnull %821, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %830

823:                                              ; preds = %817
  %824 = landingpad { ptr, i32 }
          cleanup
  br label %827

825:                                              ; preds = %819
  %826 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  br label %827

827:                                              ; preds = %825, %823
  %.pn534 = phi { ptr, i32 } [ %826, %825 ], [ %824, %823 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #8
  br label %832

828:                                              ; preds = %820
  %829 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %821) #8
  br label %832

830:                                              ; preds = %822
  %831 = landingpad { ptr, i32 }
          cleanup
  br label %832

832:                                              ; preds = %830, %828, %827
  %.pn536 = phi { ptr, i32 } [ %831, %830 ], [ %829, %828 ], [ %.pn534, %827 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #8
  br label %1389

833:                                              ; preds = %.lr.ph
  %834 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %105) #8
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %106) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %835 unwind label %839

835:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %108) #8
  store ptr %105, ptr %108, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 8 dereferenceable(8) %108) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull %107)
          to label %836 unwind label %841

836:                                              ; preds = %835
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #8
  %837 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %837, ptr noundef nonnull @.str.5)
          to label %838 unwind label %844

838:                                              ; preds = %836
  invoke void @__cxa_throw(ptr nonnull %837, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %846

839:                                              ; preds = %833
  %840 = landingpad { ptr, i32 }
          cleanup
  br label %843

841:                                              ; preds = %835
  %842 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #8
  br label %843

843:                                              ; preds = %841, %839
  %.pn530 = phi { ptr, i32 } [ %842, %841 ], [ %840, %839 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #8
  br label %848

844:                                              ; preds = %836
  %845 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %837) #8
  br label %848

846:                                              ; preds = %838
  %847 = landingpad { ptr, i32 }
          cleanup
  br label %848

848:                                              ; preds = %846, %844, %843
  %.pn532 = phi { ptr, i32 } [ %847, %846 ], [ %845, %844 ], [ %.pn530, %843 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #8
  br label %1389

849:                                              ; preds = %.lr.ph
  %850 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %109) #8
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %110) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %851 unwind label %855

851:                                              ; preds = %849
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %112) #8
  store ptr %109, ptr %112, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %111, ptr noundef nonnull align 8 dereferenceable(8) %112) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull %111)
          to label %852 unwind label %857

852:                                              ; preds = %851
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %112) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #8
  %853 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %853, ptr noundef nonnull @.str.5)
          to label %854 unwind label %860

854:                                              ; preds = %852
  invoke void @__cxa_throw(ptr nonnull %853, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %862

855:                                              ; preds = %849
  %856 = landingpad { ptr, i32 }
          cleanup
  br label %859

857:                                              ; preds = %851
  %858 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %112) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %110) #8
  br label %859

859:                                              ; preds = %857, %855
  %.pn526 = phi { ptr, i32 } [ %858, %857 ], [ %856, %855 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #8
  br label %864

860:                                              ; preds = %852
  %861 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %853) #8
  br label %864

862:                                              ; preds = %854
  %863 = landingpad { ptr, i32 }
          cleanup
  br label %864

864:                                              ; preds = %862, %860, %859
  %.pn528 = phi { ptr, i32 } [ %863, %862 ], [ %861, %860 ], [ %.pn526, %859 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #8
  br label %1389

865:                                              ; preds = %.preheader699
  br i1 %263, label %877, label %.split1028

.split1028:                                       ; preds = %865
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %114) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %866 unwind label %870

866:                                              ; preds = %.split1028
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %116) #8
  store ptr %3, ptr %116, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull align 8 dereferenceable(8) %116) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull %115)
          to label %867 unwind label %872

867:                                              ; preds = %866
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %116) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #8
  %868 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %868, ptr noundef nonnull @.str.10)
          to label %869 unwind label %875

869:                                              ; preds = %867
  invoke void @__cxa_throw(ptr nonnull %868, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %.loopexit.split-lp676

.loopexit675.split.split:                         ; preds = %.preheader699, %877
  %lpad.loopexit677 = landingpad { ptr, i32 }
          cleanup
  br label %894

.loopexit.split-lp676:                            ; preds = %869
  %lpad.loopexit.split-lp678 = landingpad { ptr, i32 }
          cleanup
  br label %894

870:                                              ; preds = %.split1028
  %871 = landingpad { ptr, i32 }
          cleanup
  br label %874

872:                                              ; preds = %866
  %873 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %116) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #8
  br label %874

874:                                              ; preds = %872, %870
  %.pn522 = phi { ptr, i32 } [ %873, %872 ], [ %871, %870 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #8
  br label %894

875:                                              ; preds = %867
  %876 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %868) #8
  br label %894

877:                                              ; preds = %865
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %221, i8 noundef zeroext 0)
          to label %.preheader660 unwind label %.loopexit675.split.split

.preheader660:                                    ; preds = %877
  %878 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %261)
  %879 = load i64, ptr %878, align 8, !tbaa !11
  %.not1256 = icmp eq i64 %879, 0
  br i1 %.not1256, label %..loopexit674_crit_edge, label %.lr.ph1023

..loopexit674_crit_edge:                          ; preds = %883, %.preheader660
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %221)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #8
  br label %.loopexit705

.split1030.split:                                 ; preds = %882, %.lr.ph1023
  %880 = landingpad { ptr, i32 }
          cleanup
  br label %894

.lr.ph1023:                                       ; preds = %.preheader660, %883
  %.04071022 = phi i32 [ %889, %883 ], [ 0, %.preheader660 ]
  %.04081021 = phi i64 [ %885, %883 ], [ 0, %.preheader660 ]
  %881 = load i64, ptr %113, align 8, !tbaa !11
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %117, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %.04081021, i64 noundef %881)
          to label %882 unwind label %.split1030.split

882:                                              ; preds = %.lr.ph1023
  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 %117, ptr noundef nonnull align 8 dereferenceable(8) %260)
          to label %883 unwind label %.split1030.split

883:                                              ; preds = %882
  %884 = load i64, ptr %113, align 8, !tbaa !11
  %885 = add i64 %884, %.04081021
  %886 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN12field_path_t4backEv(ptr noundef nonnull align 8 dereferenceable(24) %221)
  %887 = load i8, ptr %886, align 1, !tbaa !35
  %888 = add i8 %887, 1
  store i8 %888, ptr %886, align 1, !tbaa !35
  %889 = add i32 %.04071022, 1
  %890 = zext i32 %889 to i64
  %891 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %261)
  %892 = load i64, ptr %891, align 8, !tbaa !11
  %893 = icmp ugt i64 %892, %890
  br i1 %893, label %.lr.ph1023, label %..loopexit674_crit_edge, !llvm.loop !48

894:                                              ; preds = %.loopexit675.split.split, %.loopexit.split-lp676, %.split1030.split, %875, %874
  %.pn524 = phi { ptr, i32 } [ %880, %.split1030.split ], [ %876, %875 ], [ %.pn522, %874 ], [ %lpad.loopexit677, %.loopexit675.split.split ], [ %lpad.loopexit.split-lp678, %.loopexit.split-lp676 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #8
  br label %1389

895:                                              ; preds = %.lr.ph
  %896 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %118) #8
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %119) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %897 unwind label %901

897:                                              ; preds = %895
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %121) #8
  store ptr %118, ptr %121, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef nonnull align 8 dereferenceable(8) %121) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull %120)
          to label %898 unwind label %903

898:                                              ; preds = %897
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #8
  %899 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %899, ptr noundef nonnull @.str.5)
          to label %900 unwind label %906

900:                                              ; preds = %898
  invoke void @__cxa_throw(ptr nonnull %899, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %908

901:                                              ; preds = %895
  %902 = landingpad { ptr, i32 }
          cleanup
  br label %905

903:                                              ; preds = %897
  %904 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #8
  br label %905

905:                                              ; preds = %903, %901
  %.pn518 = phi { ptr, i32 } [ %904, %903 ], [ %902, %901 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #8
  br label %910

906:                                              ; preds = %898
  %907 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %899) #8
  br label %910

908:                                              ; preds = %900
  %909 = landingpad { ptr, i32 }
          cleanup
  br label %910

910:                                              ; preds = %908, %906, %905
  %.pn520 = phi { ptr, i32 } [ %909, %908 ], [ %907, %906 ], [ %.pn518, %905 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %118) #8
  br label %1389

.lr.ph1019:                                       ; preds = %.lr.ph
  %911 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  %912 = getelementptr inbounds i8, ptr %911, i64 8
  invoke void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24) %221, i8 noundef zeroext -1)
          to label %915 unwind label %913

913:                                              ; preds = %.lr.ph1019
  %914 = landingpad { ptr, i32 }
          cleanup
  br label %1389

915:                                              ; preds = %.lr.ph1019
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %122) #8
  store i32 16, ptr %122, align 4, !tbaa !24
  %916 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %912, ptr noundef nonnull align 4 dereferenceable(4) %122)
          to label %917 unwind label %941

917:                                              ; preds = %915
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %122) #8
  br i1 %916, label %918, label %1047

918:                                              ; preds = %917
  %919 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %920 unwind label %943

920:                                              ; preds = %918
  %921 = lshr i32 %919, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %123) #8
  %922 = zext nneg i32 %921 to i64
  %923 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %922)
          to label %924 unwind label %945

924:                                              ; preds = %920
  %925 = extractvalue { i64, i64 } %923, 0
  store i64 %925, ptr %123, align 8
  %926 = extractvalue { i64, i64 } %923, 1
  store i64 %926, ptr %224, align 8
  %927 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %123)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %124) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %125) #8
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %125, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %922, i64 noundef %922)
          to label %928 unwind label %947

928:                                              ; preds = %924
  %929 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef %922)
          to label %930 unwind label %947

930:                                              ; preds = %928
  %931 = extractvalue { i64, i64 } %929, 0
  store i64 %931, ptr %124, align 8
  %932 = extractvalue { i64, i64 } %929, 1
  store i64 %932, ptr %225, align 8
  %933 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %124)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %125) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %126) #8
  %934 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %2)
          to label %935 unwind label %.loopexit687

935:                                              ; preds = %930
  store ptr %934, ptr %126, align 8, !tbaa !5
  %.not493 = icmp eq ptr %934, null
  br i1 %.not493, label %936, label %956

936:                                              ; preds = %935
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %127) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %937 unwind label %949

937:                                              ; preds = %936
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %129) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %128, ptr noundef nonnull align 1 dereferenceable(1) %129) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull %128)
          to label %938 unwind label %951

938:                                              ; preds = %937
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %129) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %127) #8
  %939 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %939, ptr noundef nonnull @.str.10)
          to label %.invoke1431 unwind label %954

.invoke1431:                                      ; preds = %938, %1016, %1002, %989, %975, %960
  %940 = phi ptr [ %961, %960 ], [ %976, %975 ], [ %990, %989 ], [ %1003, %1002 ], [ %1017, %1016 ], [ %939, %938 ]
  invoke void @__cxa_throw(ptr nonnull %940, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %.cont1432 unwind label %.loopexit.split-lp688

.cont1432:                                        ; preds = %.invoke1431
  unreachable

941:                                              ; preds = %915
  %942 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %122) #8
  br label %1389

943:                                              ; preds = %918
  %944 = landingpad { ptr, i32 }
          cleanup
  br label %1389

945:                                              ; preds = %920
  %946 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %123) #8
  br label %1389

947:                                              ; preds = %928, %924
  %948 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %125) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %124) #8
  br label %1389

.loopexit687:                                     ; preds = %930
  %lpad.loopexit689 = landingpad { ptr, i32 }
          cleanup
  br label %1046

.loopexit.split-lp688:                            ; preds = %.invoke1431
  %lpad.loopexit.split-lp690 = landingpad { ptr, i32 }
          cleanup
  br label %1046

949:                                              ; preds = %936
  %950 = landingpad { ptr, i32 }
          cleanup
  br label %953

951:                                              ; preds = %937
  %952 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %129) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #8
  br label %953

953:                                              ; preds = %951, %949
  %.pn494 = phi { ptr, i32 } [ %952, %951 ], [ %950, %949 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %127) #8
  br label %1046

954:                                              ; preds = %938
  %955 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %939) #8
  br label %1046

956:                                              ; preds = %935
  %957 = icmp ugt i64 %927, 4095
  br i1 %957, label %969, label %958

958:                                              ; preds = %956
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %130) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %959 unwind label %962

959:                                              ; preds = %958
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %132) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_19vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 1 dereferenceable(1) %132) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull %131)
          to label %960 unwind label %964

960:                                              ; preds = %959
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %132) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %130) #8
  %961 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %961, ptr noundef nonnull @.str.10)
          to label %.invoke1431 unwind label %967

962:                                              ; preds = %958
  %963 = landingpad { ptr, i32 }
          cleanup
  br label %966

964:                                              ; preds = %959
  %965 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %132) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #8
  br label %966

966:                                              ; preds = %964, %962
  %.pn496 = phi { ptr, i32 } [ %965, %964 ], [ %963, %962 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %130) #8
  br label %1046

967:                                              ; preds = %960
  %968 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %961) #8
  br label %1046

969:                                              ; preds = %956
  %970 = add i64 %927, -4096
  %971 = getelementptr inbounds i8, ptr %934, i64 16
  %972 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %971) #8
  br i1 %972, label %973, label %984

973:                                              ; preds = %969
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %133) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %974 unwind label %977

974:                                              ; preds = %973
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %135) #8
  store ptr %126, ptr %135, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %134, ptr noundef nonnull align 8 dereferenceable(8) %135) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull %134)
          to label %975 unwind label %979

975:                                              ; preds = %974
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %135) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #8
  %976 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %976, ptr noundef nonnull @.str.10)
          to label %.invoke1431 unwind label %982

977:                                              ; preds = %973
  %978 = landingpad { ptr, i32 }
          cleanup
  br label %981

979:                                              ; preds = %974
  %980 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %135) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %133) #8
  br label %981

981:                                              ; preds = %979, %977
  %.pn511 = phi { ptr, i32 } [ %980, %979 ], [ %978, %977 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %133) #8
  br label %1046

982:                                              ; preds = %975
  %983 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %976) #8
  br label %1046

984:                                              ; preds = %969
  %985 = getelementptr inbounds i8, ptr %934, i64 24
  %986 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %985) #8
  %.not498 = icmp ugt i64 %970, %986
  br i1 %.not498, label %987, label %998

987:                                              ; preds = %984
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %136) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %988 unwind label %991

988:                                              ; preds = %987
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %138) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef nonnull align 1 dereferenceable(1) %138) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull %137)
          to label %989 unwind label %993

989:                                              ; preds = %988
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %138) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #8
  %990 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %990, ptr noundef nonnull @.str.10)
          to label %.invoke1431 unwind label %996

991:                                              ; preds = %987
  %992 = landingpad { ptr, i32 }
          cleanup
  br label %995

993:                                              ; preds = %988
  %994 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %138) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #8
  br label %995

995:                                              ; preds = %993, %991
  %.pn499 = phi { ptr, i32 } [ %994, %993 ], [ %992, %991 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #8
  br label %1046

996:                                              ; preds = %989
  %997 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %990) #8
  br label %1046

998:                                              ; preds = %984
  %999 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %985) #8
  %.not501 = icmp ugt i64 %933, %999
  br i1 %.not501, label %1000, label %1011

1000:                                             ; preds = %998
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %139) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1001 unwind label %1004

1001:                                             ; preds = %1000
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %141) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 1 dereferenceable(1) %141) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull %140)
          to label %1002 unwind label %1006

1002:                                             ; preds = %1001
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %141) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %139) #8
  %1003 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1003, ptr noundef nonnull @.str.10)
          to label %.invoke1431 unwind label %1009

1004:                                             ; preds = %1000
  %1005 = landingpad { ptr, i32 }
          cleanup
  br label %1008

1006:                                             ; preds = %1001
  %1007 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %141) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #8
  br label %1008

1008:                                             ; preds = %1006, %1004
  %.pn502 = phi { ptr, i32 } [ %1007, %1006 ], [ %1005, %1004 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %139) #8
  br label %1046

1009:                                             ; preds = %1002
  %1010 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1003) #8
  br label %1046

1011:                                             ; preds = %998
  %1012 = add i64 %933, %970
  %1013 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %985) #8
  %.not504 = icmp ugt i64 %1012, %1013
  br i1 %.not504, label %1014, label %1025

1014:                                             ; preds = %1011
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %142) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1015 unwind label %1018

1015:                                             ; preds = %1014
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %144) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_23vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %143, ptr noundef nonnull align 1 dereferenceable(1) %144) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef nonnull %143)
          to label %1016 unwind label %1020

1016:                                             ; preds = %1015
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %144) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #8
  %1017 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1017, ptr noundef nonnull @.str.10)
          to label %.invoke1431 unwind label %1023

1018:                                             ; preds = %1014
  %1019 = landingpad { ptr, i32 }
          cleanup
  br label %1022

1020:                                             ; preds = %1015
  %1021 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %144) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #8
  br label %1022

1022:                                             ; preds = %1020, %1018
  %.pn505 = phi { ptr, i32 } [ %1021, %1020 ], [ %1019, %1018 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #8
  br label %1046

1023:                                             ; preds = %1016
  %1024 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1017) #8
  br label %1046

1025:                                             ; preds = %1011
  %1026 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %985) #8
  %1027 = getelementptr inbounds i8, ptr %1026, i64 %970
  %1028 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %985) #8
  %1029 = getelementptr inbounds i8, ptr %1028, i64 %970
  %1030 = getelementptr inbounds i8, ptr %1029, i64 %933
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %148) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_(ptr noundef nonnull align 8 dereferenceable(32) %147, ptr noundef %1027, ptr noundef %1030, ptr noundef nonnull align 1 dereferenceable(1) %148)
          to label %1031 unwind label %1035

1031:                                             ; preds = %1025
  invoke void @_ZN3MIR8ConstantC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %146, ptr noundef nonnull %147)
          to label %1032 unwind label %1037

1032:                                             ; preds = %1031
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %145, ptr noundef nonnull %146)
          to label %1033 unwind label %1039

1033:                                             ; preds = %1032
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %145)
          to label %1034 unwind label %1041

1034:                                             ; preds = %1033
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %145) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %146) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %148) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %126) #8
  br label %..loopexit680_crit_edge

1035:                                             ; preds = %1025
  %1036 = landingpad { ptr, i32 }
          cleanup
  br label %1045

1037:                                             ; preds = %1031
  %1038 = landingpad { ptr, i32 }
          cleanup
  br label %1044

1039:                                             ; preds = %1032
  %1040 = landingpad { ptr, i32 }
          cleanup
  br label %1043

1041:                                             ; preds = %1033
  %1042 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %145) #8
  br label %1043

1043:                                             ; preds = %1041, %1039
  %.pn507 = phi { ptr, i32 } [ %1042, %1041 ], [ %1040, %1039 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %146) #8
  br label %1044

1044:                                             ; preds = %1043, %1037
  %.pn507.pn = phi { ptr, i32 } [ %.pn507, %1043 ], [ %1038, %1037 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %147) #8
  br label %1045

1045:                                             ; preds = %1044, %1035
  %.pn507.pn.pn = phi { ptr, i32 } [ %.pn507.pn, %1044 ], [ %1036, %1035 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %148) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %148) #8
  br label %1046

1046:                                             ; preds = %.loopexit687, %.loopexit.split-lp688, %1045, %1023, %1022, %1009, %1008, %996, %995, %982, %981, %967, %966, %954, %953
  %.pn513 = phi { ptr, i32 } [ %983, %982 ], [ %.pn511, %981 ], [ %.pn507.pn.pn, %1045 ], [ %1024, %1023 ], [ %.pn505, %1022 ], [ %1010, %1009 ], [ %.pn502, %1008 ], [ %997, %996 ], [ %.pn499, %995 ], [ %968, %967 ], [ %.pn496, %966 ], [ %955, %954 ], [ %.pn494, %953 ], [ %lpad.loopexit689, %.loopexit687 ], [ %lpad.loopexit.split-lp690, %.loopexit.split-lp688 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %126) #8
  br label %1389

1047:                                             ; preds = %917
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %149) #8
  %1048 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %912)
  %1049 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1048)
  br i1 %1049, label %1050, label %.critedge

1050:                                             ; preds = %1047
  %1051 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %912)
  %1052 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1051)
  store i32 2, ptr %149, align 4, !tbaa !24
  %1053 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %1052, ptr noundef nonnull align 4 dereferenceable(4) %149)
          to label %1054 unwind label %1078

1054:                                             ; preds = %1050
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %149) #8
  br i1 %1053, label %1055, label %.loopexit681

1055:                                             ; preds = %1054
  %1056 = invoke noundef i32 @_ZL21Target_GetPointerBitsv()
          to label %1057 unwind label %1080

1057:                                             ; preds = %1055
  %1058 = lshr i32 %1056, 3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %150) #8
  %1059 = zext nneg i32 %1058 to i64
  %1060 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %1059)
          to label %1061 unwind label %1082

1061:                                             ; preds = %1057
  %1062 = extractvalue { i64, i64 } %1060, 0
  store i64 %1062, ptr %150, align 8
  %1063 = extractvalue { i64, i64 } %1060, 1
  store i64 %1063, ptr %222, align 8
  %1064 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %150)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %151) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %152) #8
  invoke void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind nonnull writable sret(%struct.EncodedLiteralSlice) align 8 %152, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %1059, i64 noundef %1059)
          to label %1065 unwind label %1084

1065:                                             ; preds = %1061
  %1066 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef %1059)
          to label %1067 unwind label %1084

1067:                                             ; preds = %1065
  %1068 = extractvalue { i64, i64 } %1066, 0
  store i64 %1068, ptr %151, align 8
  %1069 = extractvalue { i64, i64 } %1066, 1
  store i64 %1069, ptr %223, align 8
  %1070 = call noundef i64 @_ZNK4U12812truncate_u64Ev(ptr noundef nonnull align 8 dereferenceable(16) %151)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %152) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %151) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %153) #8
  %1071 = invoke noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24) %2)
          to label %1072 unwind label %.loopexit682

1072:                                             ; preds = %1067
  store ptr %1071, ptr %153, align 8, !tbaa !5
  %.not = icmp eq ptr %1071, null
  br i1 %.not, label %1073, label %1093

1073:                                             ; preds = %1072
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %154) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1074 unwind label %1086

1074:                                             ; preds = %1073
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %156) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_24vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %155, ptr noundef nonnull align 1 dereferenceable(1) %156) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef nonnull %155)
          to label %1075 unwind label %1088

1075:                                             ; preds = %1074
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %156) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #8
  %1076 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1076, ptr noundef nonnull @.str.10)
          to label %.invoke1433 unwind label %1091

.invoke1433:                                      ; preds = %1075, %1260, %1244, %1229, %1114, %1097
  %1077 = phi ptr [ %1098, %1097 ], [ %1115, %1114 ], [ %1230, %1229 ], [ %1245, %1244 ], [ %1261, %1260 ], [ %1076, %1075 ]
  invoke void @__cxa_throw(ptr nonnull %1077, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %.cont1434 unwind label %.loopexit.split-lp683

.cont1434:                                        ; preds = %.invoke1433
  unreachable

1078:                                             ; preds = %1050
  %1079 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %149) #8
  br label %1389

1080:                                             ; preds = %1055
  %1081 = landingpad { ptr, i32 }
          cleanup
  br label %1389

1082:                                             ; preds = %1057
  %1083 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %150) #8
  br label %1389

1084:                                             ; preds = %1065, %1061
  %1085 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %152) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %151) #8
  br label %1389

.loopexit682:                                     ; preds = %1067
  %lpad.loopexit684 = landingpad { ptr, i32 }
          cleanup
  br label %1295

.loopexit.split-lp683:                            ; preds = %.invoke1433
  %lpad.loopexit.split-lp685 = landingpad { ptr, i32 }
          cleanup
  br label %1295

1086:                                             ; preds = %1073
  %1087 = landingpad { ptr, i32 }
          cleanup
  br label %1090

1088:                                             ; preds = %1074
  %1089 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %156) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #8
  br label %1090

1090:                                             ; preds = %1088, %1086
  %.pn460 = phi { ptr, i32 } [ %1089, %1088 ], [ %1087, %1086 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #8
  br label %1295

1091:                                             ; preds = %1075
  %1092 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1076) #8
  br label %1295

1093:                                             ; preds = %1072
  %1094 = icmp ugt i64 %1064, 4095
  br i1 %1094, label %1106, label %1095

1095:                                             ; preds = %1093
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %157) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1096 unwind label %1099

1096:                                             ; preds = %1095
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %159) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_25vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %158, ptr noundef nonnull align 1 dereferenceable(1) %159) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull %158)
          to label %1097 unwind label %1101

1097:                                             ; preds = %1096
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %159) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %157) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #8
  %1098 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1098, ptr noundef nonnull @.str.10)
          to label %.invoke1433 unwind label %1104

1099:                                             ; preds = %1095
  %1100 = landingpad { ptr, i32 }
          cleanup
  br label %1103

1101:                                             ; preds = %1096
  %1102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %159) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %157) #8
  br label %1103

1103:                                             ; preds = %1101, %1099
  %.pn462 = phi { ptr, i32 } [ %1102, %1101 ], [ %1100, %1099 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #8
  br label %1295

1104:                                             ; preds = %1097
  %1105 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1098) #8
  br label %1295

1106:                                             ; preds = %1093
  %1107 = add i64 %1064, -4096
  %1108 = getelementptr inbounds i8, ptr %1071, i64 16
  %1109 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %1108) #8
  br i1 %1109, label %1110, label %1223

1110:                                             ; preds = %1106
  %1111 = icmp eq i64 %1107, 0
  br i1 %1111, label %1123, label %1112

1112:                                             ; preds = %1110
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %160) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1113 unwind label %1116

1113:                                             ; preds = %1112
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %162) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_26vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %161, ptr noundef nonnull align 1 dereferenceable(1) %162) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef nonnull %161)
          to label %1114 unwind label %1118

1114:                                             ; preds = %1113
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %161) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %162) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %160) #8
  %1115 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1115, ptr noundef nonnull @.str.10)
          to label %.invoke1433 unwind label %1121

1116:                                             ; preds = %1112
  %1117 = landingpad { ptr, i32 }
          cleanup
  br label %1120

1118:                                             ; preds = %1113
  %1119 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %161) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %162) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #8
  br label %1120

1120:                                             ; preds = %1118, %1116
  %.pn477 = phi { ptr, i32 } [ %1119, %1118 ], [ %1117, %1116 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %160) #8
  br label %1295

1121:                                             ; preds = %1114
  %1122 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1115) #8
  br label %1295

1123:                                             ; preds = %1110
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %163) #8
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %163)
          to label %1124 unwind label %1137

1124:                                             ; preds = %1123
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %164) #8
  %1125 = load ptr, ptr %0, align 8, !tbaa !13
  %1126 = load ptr, ptr %153, align 8, !tbaa !5
  %1127 = getelementptr inbounds i8, ptr %1126, i64 16
  %1128 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN3HIR4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1127) #8
  invoke void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind nonnull writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %164, ptr noundef nonnull align 8 dereferenceable(424) %1125, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(88) %1128, ptr noundef nonnull align 8 dereferenceable(144) %163, i1 noundef zeroext false, ptr noundef null)
          to label %1129 unwind label %1139

1129:                                             ; preds = %1124
  %1130 = call noundef zeroext i1 @_ZNK18StaticTraitResolve8ValuePtr9is_StaticEv(ptr noundef nonnull align 8 dereferenceable(24) %164)
  br i1 %1130, label %1150, label %1131

1131:                                             ; preds = %1129
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %165) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1132 unwind label %1143

1132:                                             ; preds = %1131
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %167) #8
  store ptr %153, ptr %167, align 8, !tbaa !5
  %1133 = getelementptr inbounds i8, ptr %167, i64 8
  store ptr %164, ptr %1133, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_27vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull align 8 dereferenceable(16) %167) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull %166)
          to label %1134 unwind label %1145

1134:                                             ; preds = %1132
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %167) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %165) #8
  %1135 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1135, ptr noundef nonnull @.str.10)
          to label %1136 unwind label %1148

1136:                                             ; preds = %1134
  invoke void @__cxa_throw(ptr nonnull %1135, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %1141

1137:                                             ; preds = %1123
  %1138 = landingpad { ptr, i32 }
          cleanup
  br label %1222

1139:                                             ; preds = %1124
  %1140 = landingpad { ptr, i32 }
          cleanup
  br label %1221

1141:                                             ; preds = %1136
  %1142 = landingpad { ptr, i32 }
          cleanup
  br label %1220

1143:                                             ; preds = %1131
  %1144 = landingpad { ptr, i32 }
          cleanup
  br label %1147

1145:                                             ; preds = %1132
  %1146 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %167) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #8
  br label %1147

1147:                                             ; preds = %1145, %1143
  %.pn479 = phi { ptr, i32 } [ %1146, %1145 ], [ %1144, %1143 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %165) #8
  br label %1220

1148:                                             ; preds = %1134
  %1149 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1135) #8
  br label %1220

1150:                                             ; preds = %1129
  %1151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN18StaticTraitResolve8ValuePtr9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(24) %164)
  %1152 = load ptr, ptr %1151, align 8, !tbaa !5
  %1153 = getelementptr inbounds i8, ptr %1152, i64 304
  %1154 = load i8, ptr %1153, align 8, !tbaa !49, !range !94, !noundef !95
  %1155 = trunc nuw i8 %1154 to i1
  br i1 %1155, label %1170, label %1156

1156:                                             ; preds = %1150
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %168) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1157 unwind label %1163

1157:                                             ; preds = %1156
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %170) #8
  store ptr %153, ptr %170, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %169, ptr noundef nonnull align 8 dereferenceable(8) %170) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull %169)
          to label %1158 unwind label %1165

1158:                                             ; preds = %1157
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %170) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #8
  %1159 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1159, ptr noundef nonnull @.str.10)
          to label %1160 unwind label %1168

1160:                                             ; preds = %1158
  invoke void @__cxa_throw(ptr nonnull %1159, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %1161

1161:                                             ; preds = %1160
  %1162 = landingpad { ptr, i32 }
          cleanup
  br label %1220

1163:                                             ; preds = %1156
  %1164 = landingpad { ptr, i32 }
          cleanup
  br label %1167

1165:                                             ; preds = %1157
  %1166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %170) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #8
  br label %1167

1167:                                             ; preds = %1165, %1163
  %.pn481 = phi { ptr, i32 } [ %1166, %1165 ], [ %1164, %1163 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #8
  br label %1220

1168:                                             ; preds = %1158
  %1169 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1159) #8
  br label %1220

1170:                                             ; preds = %1150
  %1171 = getelementptr inbounds i8, ptr %1152, i64 256
  %1172 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1171) #8
  %1173 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1171) #8
  %.not483 = icmp ugt i64 %1070, %1173
  br i1 %.not483, label %1176, label %1187

1174:                                             ; preds = %.invoke1435
  %1175 = landingpad { ptr, i32 }
          cleanup
  br label %1220

1176:                                             ; preds = %1170
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %171) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %171, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1177 unwind label %1180

1177:                                             ; preds = %1176
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %173) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_30vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %172, ptr noundef nonnull align 1 dereferenceable(1) %173) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %171, ptr noundef nonnull %172)
          to label %1178 unwind label %1182

1178:                                             ; preds = %1177
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %173) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %171) #8
  %1179 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1179, ptr noundef nonnull @.str.10)
          to label %.invoke1435 unwind label %1185

1180:                                             ; preds = %1176
  %1181 = landingpad { ptr, i32 }
          cleanup
  br label %1184

1182:                                             ; preds = %1177
  %1183 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %172) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %173) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %171) #8
  br label %1184

1184:                                             ; preds = %1182, %1180
  %.pn484 = phi { ptr, i32 } [ %1183, %1182 ], [ %1181, %1180 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %171) #8
  br label %1220

1185:                                             ; preds = %1178
  %1186 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1179) #8
  br label %1220

1187:                                             ; preds = %1170
  %1188 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1171) #8
  %.not486 = icmp ugt i64 %1070, %1188
  br i1 %.not486, label %1189, label %1201

1189:                                             ; preds = %1187
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %174) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %174, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1190 unwind label %1194

1190:                                             ; preds = %1189
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %176) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %175, ptr noundef nonnull align 1 dereferenceable(1) %176) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %174, ptr noundef nonnull %175)
          to label %1191 unwind label %1196

1191:                                             ; preds = %1190
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %176) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %174) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %174) #8
  %1192 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1192, ptr noundef nonnull @.str.10)
          to label %.invoke1435 unwind label %1199

.invoke1435:                                      ; preds = %1191, %1178
  %1193 = phi ptr [ %1179, %1178 ], [ %1192, %1191 ]
  invoke void @__cxa_throw(ptr nonnull %1193, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %.cont1436 unwind label %1174

.cont1436:                                        ; preds = %.invoke1435
  unreachable

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) %175) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %176) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %174) #8
  br label %1198

1198:                                             ; preds = %1196, %1194
  %.pn487 = phi { ptr, i32 } [ %1197, %1196 ], [ %1195, %1194 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %174) #8
  br label %1220

1199:                                             ; preds = %1191
  %1200 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1192) #8
  br label %1220

1201:                                             ; preds = %1187
  %1202 = call noundef ptr @_ZNKSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1171) #8
  %1203 = call noundef ptr @_ZNKSt6vectorIhSaIhEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1171) #8
  %1204 = getelementptr inbounds i8, ptr %1203, i64 %1070
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %180) #8
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #8
  invoke void @_ZNSt6vectorIhSaIhEEC2IPKhvEET_S5_RKS0_(ptr noundef nonnull align 8 dereferenceable(24) %179, ptr noundef %1202, ptr noundef %1204, ptr noundef nonnull align 1 dereferenceable(1) %180)
          to label %1205 unwind label %1209

1205:                                             ; preds = %1201
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %178, ptr noundef nonnull %179)
          to label %1206 unwind label %1211

1206:                                             ; preds = %1205
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %177, ptr noundef nonnull %178)
          to label %1207 unwind label %1213

1207:                                             ; preds = %1206
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %177)
          to label %1208 unwind label %1215

1208:                                             ; preds = %1207
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %177) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %178) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %179) #8
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %180) #8
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %164) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %164) #8
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %163) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %163) #8
  br label %1294

1209:                                             ; preds = %1201
  %1210 = landingpad { ptr, i32 }
          cleanup
  br label %1219

1211:                                             ; preds = %1205
  %1212 = landingpad { ptr, i32 }
          cleanup
  br label %1218

1213:                                             ; preds = %1206
  %1214 = landingpad { ptr, i32 }
          cleanup
  br label %1217

1215:                                             ; preds = %1207
  %1216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %177) #8
  br label %1217

1217:                                             ; preds = %1215, %1213
  %.pn489 = phi { ptr, i32 } [ %1216, %1215 ], [ %1214, %1213 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %178) #8
  br label %1218

1218:                                             ; preds = %1217, %1211
  %.pn489.pn = phi { ptr, i32 } [ %.pn489, %1217 ], [ %1212, %1211 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %179) #8
  br label %1219

1219:                                             ; preds = %1218, %1209
  %.pn489.pn.pn = phi { ptr, i32 } [ %.pn489.pn, %1218 ], [ %1210, %1209 ]
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %180) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %180) #8
  br label %1220

1220:                                             ; preds = %1161, %1167, %1168, %1219, %1199, %1198, %1185, %1184, %1174, %1148, %1147, %1141
  %.pn632 = phi { ptr, i32 } [ %1142, %1141 ], [ %1149, %1148 ], [ %.pn479, %1147 ], [ %1162, %1161 ], [ %1169, %1168 ], [ %.pn481, %1167 ], [ %.pn489.pn.pn, %1219 ], [ %1175, %1174 ], [ %1200, %1199 ], [ %.pn487, %1198 ], [ %1186, %1185 ], [ %.pn484, %1184 ]
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %164) #8
  br label %1221

1221:                                             ; preds = %1220, %1139
  %.pn632.pn = phi { ptr, i32 } [ %.pn632, %1220 ], [ %1140, %1139 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %164) #8
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %163) #8
  br label %1222

1222:                                             ; preds = %1221, %1137
  %.pn632.pn.pn = phi { ptr, i32 } [ %.pn632.pn, %1221 ], [ %1138, %1137 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %163) #8
  br label %1295

1223:                                             ; preds = %1106
  %1224 = load ptr, ptr %153, align 8, !tbaa !5
  %1225 = getelementptr inbounds i8, ptr %1224, i64 24
  %1226 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1225) #8
  %.not464 = icmp ugt i64 %1107, %1226
  br i1 %.not464, label %1227, label %1238

1227:                                             ; preds = %1223
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %181) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1228 unwind label %1231

1228:                                             ; preds = %1227
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %183) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_32vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef nonnull align 1 dereferenceable(1) %183) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull %182)
          to label %1229 unwind label %1233

1229:                                             ; preds = %1228
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %183) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %181) #8
  %1230 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1230, ptr noundef nonnull @.str.10)
          to label %.invoke1433 unwind label %1236

1231:                                             ; preds = %1227
  %1232 = landingpad { ptr, i32 }
          cleanup
  br label %1235

1233:                                             ; preds = %1228
  %1234 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %183) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #8
  br label %1235

1235:                                             ; preds = %1233, %1231
  %.pn465 = phi { ptr, i32 } [ %1234, %1233 ], [ %1232, %1231 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %181) #8
  br label %1295

1236:                                             ; preds = %1229
  %1237 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1230) #8
  br label %1295

1238:                                             ; preds = %1223
  %1239 = load ptr, ptr %153, align 8, !tbaa !5
  %1240 = getelementptr inbounds i8, ptr %1239, i64 24
  %1241 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1240) #8
  %.not467 = icmp ugt i64 %1070, %1241
  br i1 %.not467, label %1242, label %1253

1242:                                             ; preds = %1238
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %184) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %184, 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 %186) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %185, ptr noundef nonnull align 1 dereferenceable(1) %186) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull %185)
          to label %1244 unwind label %1248

1244:                                             ; preds = %1243
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %185) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %186) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %184) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %184) #8
  %1245 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1245, ptr noundef nonnull @.str.10)
          to label %.invoke1433 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) %185) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %186) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %184) #8
  br label %1250

1250:                                             ; preds = %1248, %1246
  %.pn468 = phi { ptr, i32 } [ %1249, %1248 ], [ %1247, %1246 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %184) #8
  br label %1295

1251:                                             ; preds = %1244
  %1252 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1245) #8
  br label %1295

1253:                                             ; preds = %1238
  %1254 = add i64 %1070, %1107
  %1255 = load ptr, ptr %153, align 8, !tbaa !5
  %1256 = getelementptr inbounds i8, ptr %1255, i64 24
  %1257 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %1256) #8
  %.not470 = icmp ugt i64 %1254, %1257
  br i1 %.not470, label %1258, label %1269

1258:                                             ; preds = %1253
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %187) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %187, 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 %189) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_34vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %188, ptr noundef nonnull align 1 dereferenceable(1) %189) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef nonnull %188)
          to label %1260 unwind label %1264

1260:                                             ; preds = %1259
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %189) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #8
  %1261 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1261, ptr noundef nonnull @.str.10)
          to label %.invoke1433 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) %188) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %189) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #8
  br label %1266

1266:                                             ; preds = %1264, %1262
  %.pn471 = phi { ptr, i32 } [ %1265, %1264 ], [ %1263, %1262 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #8
  br label %1295

1267:                                             ; preds = %1260
  %1268 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1261) #8
  br label %1295

1269:                                             ; preds = %1253
  %1270 = load ptr, ptr %153, align 8, !tbaa !5
  %1271 = getelementptr inbounds i8, ptr %1270, i64 24
  %1272 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %1271) #8
  %1273 = getelementptr inbounds i8, ptr %1272, i64 %1107
  %1274 = load ptr, ptr %153, align 8, !tbaa !5
  %1275 = getelementptr inbounds i8, ptr %1274, i64 24
  %1276 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv(ptr noundef nonnull align 8 dereferenceable(32) %1275) #8
  %1277 = getelementptr inbounds i8, ptr %1276, i64 %1107
  %1278 = getelementptr inbounds i8, ptr %1277, i64 %1070
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %193) #8
  call void @_ZNSaIhEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %193) #8
  invoke void @_ZNSt6vectorIhSaIhEEC2IPKcvEET_S5_RKS0_(ptr noundef nonnull align 8 dereferenceable(24) %192, ptr noundef %1273, ptr noundef %1278, ptr noundef nonnull align 1 dereferenceable(1) %193)
          to label %1279 unwind label %1283

1279:                                             ; preds = %1269
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %191, ptr noundef nonnull %192)
          to label %1280 unwind label %1285

1280:                                             ; preds = %1279
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %190, ptr noundef nonnull %191)
          to label %1281 unwind label %1287

1281:                                             ; preds = %1280
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %190)
          to label %1282 unwind label %1289

1282:                                             ; preds = %1281
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %190) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %191) #8
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %192) #8
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %193) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %193) #8
  br label %1294

1283:                                             ; preds = %1269
  %1284 = landingpad { ptr, i32 }
          cleanup
  br label %1293

1285:                                             ; preds = %1279
  %1286 = landingpad { ptr, i32 }
          cleanup
  br label %1292

1287:                                             ; preds = %1280
  %1288 = landingpad { ptr, i32 }
          cleanup
  br label %1291

1289:                                             ; preds = %1281
  %1290 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %190) #8
  br label %1291

1291:                                             ; preds = %1289, %1287
  %.pn473 = phi { ptr, i32 } [ %1290, %1289 ], [ %1288, %1287 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %191) #8
  br label %1292

1292:                                             ; preds = %1291, %1285
  %.pn473.pn = phi { ptr, i32 } [ %.pn473, %1291 ], [ %1286, %1285 ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %192) #8
  br label %1293

1293:                                             ; preds = %1292, %1283
  %.pn473.pn.pn = phi { ptr, i32 } [ %.pn473.pn, %1292 ], [ %1284, %1283 ]
  call void @_ZNSt15__new_allocatorIhED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %193) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %193) #8
  br label %1295

1294:                                             ; preds = %1282, %1208
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #8
  br label %..loopexit680_crit_edge

1295:                                             ; preds = %.loopexit682, %.loopexit.split-lp683, %1293, %1267, %1266, %1251, %1250, %1236, %1235, %1222, %1121, %1120, %1104, %1103, %1091, %1090
  %.pn632.pn.pn.pn = phi { ptr, i32 } [ %.pn632.pn.pn, %1222 ], [ %1122, %1121 ], [ %.pn477, %1120 ], [ %.pn473.pn.pn, %1293 ], [ %1268, %1267 ], [ %.pn471, %1266 ], [ %1252, %1251 ], [ %.pn468, %1250 ], [ %1237, %1236 ], [ %.pn465, %1235 ], [ %1105, %1104 ], [ %.pn462, %1103 ], [ %1092, %1091 ], [ %.pn460, %1090 ], [ %lpad.loopexit684, %.loopexit682 ], [ %lpad.loopexit.split-lp685, %.loopexit.split-lp683 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #8
  br label %1389

.critedge:                                        ; preds = %1047
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %149) #8
  br label %.loopexit681

.loopexit681:                                     ; preds = %1054, %.critedge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %194) #8
  store ptr @__func__._ZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefE, ptr %194, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %195) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1296 unwind label %1303

1296:                                             ; preds = %.loopexit681
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %197) #8
  store ptr %194, ptr %197, align 8, !tbaa !5
  %1297 = getelementptr inbounds i8, ptr %197, i64 8
  store ptr %3, ptr %1297, align 8, !tbaa !5
  %1298 = getelementptr inbounds i8, ptr %197, i64 16
  store ptr %2, ptr %1298, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_35vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %196, ptr noundef nonnull align 8 dereferenceable(24) %197)
          to label %1299 unwind label %1305

1299:                                             ; preds = %1296
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull %196)
          to label %1300 unwind label %1307

1300:                                             ; preds = %1299
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %197) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %195) #8
  %1301 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1301, ptr noundef nonnull @.str.5)
          to label %1302 unwind label %1311

1302:                                             ; preds = %1300
  invoke void @__cxa_throw(ptr nonnull %1301, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %1313

1303:                                             ; preds = %.loopexit681
  %1304 = landingpad { ptr, i32 }
          cleanup
  br label %1310

1305:                                             ; preds = %1296
  %1306 = landingpad { ptr, i32 }
          cleanup
  br label %1309

1307:                                             ; preds = %1299
  %1308 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %196) #8
  br label %1309

1309:                                             ; preds = %1307, %1305
  %.pn455 = phi { ptr, i32 } [ %1308, %1307 ], [ %1306, %1305 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %197) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #8
  br label %1310

1310:                                             ; preds = %1309, %1303
  %.pn455.pn = phi { ptr, i32 } [ %.pn455, %1309 ], [ %1304, %1303 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %195) #8
  br label %1315

1311:                                             ; preds = %1300
  %1312 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1301) #8
  br label %1315

1313:                                             ; preds = %1302
  %1314 = landingpad { ptr, i32 }
          cleanup
  br label %1315

1315:                                             ; preds = %1313, %1311, %1310
  %.pn458 = phi { ptr, i32 } [ %1314, %1313 ], [ %1312, %1311 ], [ %.pn455.pn, %1310 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #8
  br label %1389

..loopexit680_crit_edge:                          ; preds = %1294, %1034
  call void @_ZN12field_path_t8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %221)
  br label %.loopexit705

.split.split:                                     ; preds = %1321, %1317, %.preheader703
  %1316 = landingpad { ptr, i32 }
          cleanup
  br label %1389

1317:                                             ; preds = %.preheader703
  %1318 = lshr i32 %259, 3
  %1319 = zext nneg i32 %1318 to i64
  %1320 = invoke { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %1319)
          to label %1321 unwind label %.split.split

1321:                                             ; preds = %1317
  %1322 = extractvalue { i64, i64 } %1320, 0
  store i64 %1322, ptr %200, align 8
  %1323 = extractvalue { i64, i64 } %1320, 1
  store i64 %1323, ptr %219, align 8
  store i32 0, ptr %220, align 8, !tbaa !26
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %199, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %200)
          to label %1324 unwind label %.split.split

1324:                                             ; preds = %1321
  invoke void @_ZN11PatternRule10make_ValueEN3MIR8ConstantE(ptr dead_on_unwind nonnull writable sret(%class.PatternRule) align 8 %198, ptr noundef nonnull %199)
          to label %1325 unwind label %.split874.split

1325:                                             ; preds = %1324
  invoke void @_ZN21PatternRulesetBuilder9push_ruleE11PatternRule(ptr noundef nonnull align 8 dereferenceable(80) %0, ptr noundef nonnull %198)
          to label %..loopexit692_crit_edge unwind label %.split877.split

..loopexit692_crit_edge:                          ; preds = %1325
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %198) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %199) #8
  br label %.loopexit705

.split874.split:                                  ; preds = %1324
  %1326 = landingpad { ptr, i32 }
          cleanup
  br label %1328

.split877.split:                                  ; preds = %1325
  %1327 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11PatternRuleD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %198) #8
  br label %1328

1328:                                             ; preds = %.split877.split, %.split874.split
  %.pn452 = phi { ptr, i32 } [ %1327, %.split877.split ], [ %1326, %.split874.split ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %199) #8
  br label %1389

1329:                                             ; preds = %.lr.ph
  %1330 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %201) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1333 unwind label %1337

1331:                                             ; preds = %1336
  %1332 = landingpad { ptr, i32 }
          cleanup
  br label %1389

1333:                                             ; preds = %1329
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %203) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_36vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %202, ptr noundef nonnull align 1 dereferenceable(1) %203) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %201, i32 noundef 0, ptr noundef nonnull %202)
          to label %1334 unwind label %1339

1334:                                             ; preds = %1333
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %203) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %201) #8
  %1335 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1335, ptr noundef nonnull @.str.59)
          to label %1336 unwind label %1342

1336:                                             ; preds = %1334
  invoke void @__cxa_throw(ptr nonnull %1335, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %1331

1337:                                             ; preds = %1329
  %1338 = landingpad { ptr, i32 }
          cleanup
  br label %1341

1339:                                             ; preds = %1333
  %1340 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %203) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %201) #8
  br label %1341

1341:                                             ; preds = %1339, %1337
  %.pn448 = phi { ptr, i32 } [ %1340, %1339 ], [ %1338, %1337 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %201) #8
  br label %1389

1342:                                             ; preds = %1334
  %1343 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1335) #8
  br label %1389

1344:                                             ; preds = %.lr.ph
  %1345 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %204) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1348 unwind label %1352

1346:                                             ; preds = %1351
  %1347 = landingpad { ptr, i32 }
          cleanup
  br label %1389

1348:                                             ; preds = %1344
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %206) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_37vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %205, ptr noundef nonnull align 1 dereferenceable(1) %206) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %204, i32 noundef 0, ptr noundef nonnull %205)
          to label %1349 unwind label %1354

1349:                                             ; preds = %1348
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %206) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #8
  %1350 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1350, ptr noundef nonnull @.str.59)
          to label %1351 unwind label %1357

1351:                                             ; preds = %1349
  invoke void @__cxa_throw(ptr nonnull %1350, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %1346

1352:                                             ; preds = %1344
  %1353 = landingpad { ptr, i32 }
          cleanup
  br label %1356

1354:                                             ; preds = %1348
  %1355 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %206) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #8
  br label %1356

1356:                                             ; preds = %1354, %1352
  %.pn444 = phi { ptr, i32 } [ %1355, %1354 ], [ %1353, %1352 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #8
  br label %1389

1357:                                             ; preds = %1349
  %1358 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1350) #8
  br label %1389

1359:                                             ; preds = %.lr.ph
  %1360 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %207) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1363 unwind label %1367

1361:                                             ; preds = %1366
  %1362 = landingpad { ptr, i32 }
          cleanup
  br label %1389

1363:                                             ; preds = %1359
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %209) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_38vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %208, ptr noundef nonnull align 1 dereferenceable(1) %209) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %207, i32 noundef 0, ptr noundef nonnull %208)
          to label %1364 unwind label %1369

1364:                                             ; preds = %1363
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %209) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %207) #8
  %1365 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1365, ptr noundef nonnull @.str.59)
          to label %1366 unwind label %1372

1366:                                             ; preds = %1364
  invoke void @__cxa_throw(ptr nonnull %1365, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %1361

1367:                                             ; preds = %1359
  %1368 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1369:                                             ; preds = %1363
  %1370 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %208) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %209) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %207) #8
  br label %1371

1371:                                             ; preds = %1369, %1367
  %.pn440 = phi { ptr, i32 } [ %1370, %1369 ], [ %1368, %1367 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %207) #8
  br label %1389

1372:                                             ; preds = %1364
  %1373 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1365) #8
  br label %1389

1374:                                             ; preds = %.lr.ph
  %1375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %210) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1378 unwind label %1382

1376:                                             ; preds = %1381
  %1377 = landingpad { ptr, i32 }
          cleanup
  br label %1389

1378:                                             ; preds = %1374
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %212) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE4$_39vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull align 1 dereferenceable(1) %212) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %210, i32 noundef 0, ptr noundef nonnull %211)
          to label %1379 unwind label %1384

1379:                                             ; preds = %1378
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %212) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %210) #8
  %1380 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1380, ptr noundef nonnull @.str.59)
          to label %1381 unwind label %1387

1381:                                             ; preds = %1379
  invoke void @__cxa_throw(ptr nonnull %1380, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %1391 unwind label %1376

1382:                                             ; preds = %1374
  %1383 = landingpad { ptr, i32 }
          cleanup
  br label %1386

1384:                                             ; preds = %1378
  %1385 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %212) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %210) #8
  br label %1386

1386:                                             ; preds = %1384, %1382
  %.pn = phi { ptr, i32 } [ %1385, %1384 ], [ %1383, %1382 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %210) #8
  br label %1389

1387:                                             ; preds = %1379
  %1388 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1380) #8
  br label %1389

1389:                                             ; preds = %.loopexit642, %.loopexit.split-lp643, %.loopexit640.split.split, %.loopexit.split-lp, %.loopexit662, %.loopexit.split-lp663, %1376, %1386, %1387, %1361, %1371, %1372, %1346, %1356, %1357, %1331, %1341, %1342, %.split.split, %1328, %943, %947, %1046, %945, %630, %674, %690, %613, %612, %602, %.split1196.split, %641, %640, %748, %816, %705, %704, %308, %320, %334, %348, %362, %376, %390, %408, %422, %436, %450, %464, %478, %496, %510, %524, %534, %535, %282, %292, %293, %267, %277, %278, %913, %941, %1078, %1315, %1082, %1295, %1084, %1080, %910, %894, %864, %848, %832, %592
  %.pn438.pn = phi { ptr, i32 } [ %.pn520, %910 ], [ %.pn524, %894 ], [ %.pn528, %864 ], [ %.pn532, %848 ], [ %.pn536, %832 ], [ %.pn584, %592 ], [ %.pn458, %1315 ], [ %1079, %1078 ], [ %942, %941 ], [ %914, %913 ], [ %1081, %1080 ], [ %1083, %1082 ], [ %.pn632.pn.pn.pn, %1295 ], [ %1085, %1084 ], [ %268, %267 ], [ %279, %278 ], [ %.pn626, %277 ], [ %283, %282 ], [ %294, %293 ], [ %.pn622, %292 ], [ %536, %535 ], [ %.pn586, %534 ], [ %.pn588, %524 ], [ %.pn590, %510 ], [ %.pn592, %496 ], [ %.pn594, %478 ], [ %.pn596, %464 ], [ %.pn598, %450 ], [ %.pn600, %436 ], [ %.pn602, %422 ], [ %.pn604, %408 ], [ %.pn606, %390 ], [ %.pn608, %376 ], [ %.pn610, %362 ], [ %.pn612, %348 ], [ %.pn614, %334 ], [ %.pn616, %320 ], [ %.pn618, %308 ], [ %.pn559, %690 ], [ %.pn563, %674 ], [ %.pn572, %630 ], [ %603, %602 ], [ %614, %613 ], [ %.pn574, %612 ], [ %658, %.split1196.split ], [ %642, %641 ], [ %.pn566, %640 ], [ %706, %705 ], [ %.pn539, %704 ], [ %.pn550.pn.pn.pn, %816 ], [ %749, %748 ], [ %944, %943 ], [ %946, %945 ], [ %.pn513, %1046 ], [ %948, %947 ], [ %.pn452, %1328 ], [ %1316, %.split.split ], [ %1332, %1331 ], [ %1343, %1342 ], [ %.pn448, %1341 ], [ %1347, %1346 ], [ %1358, %1357 ], [ %.pn444, %1356 ], [ %1362, %1361 ], [ %1373, %1372 ], [ %.pn440, %1371 ], [ %1377, %1376 ], [ %1388, %1387 ], [ %.pn, %1386 ], [ %lpad.loopexit664, %.loopexit662 ], [ %lpad.loopexit.split-lp665, %.loopexit.split-lp663 ], [ %lpad.loopexit, %.loopexit640.split.split ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit644, %.loopexit642 ], [ %lpad.loopexit.split-lp645, %.loopexit.split-lp643 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #8
  br label %1390

1390:                                             ; preds = %1389, %217
  %.pn438.pn.pn = phi { ptr, i32 } [ %.pn438.pn, %1389 ], [ %218, %217 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #8
  resume { ptr, i32 } %.pn438.pn.pn

1391:                                             ; preds = %1381, %1366, %1351, %1336, %1302, %1160, %1136, %900, %869, %854, %838, %822, %798, %699, %680, %664, %635, %620, %607, %529, %287, %272
  unreachable
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, double, i32) local_unnamed_addr #2 align 2

declare noundef double @_ZNK19EncodedLiteralSlice10read_floatEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8) local_unnamed_addr #2 align 2

declare { i64, i64 } @_ZNK19EncodedLiteralSlice9read_uintEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @_ZL21Target_GetPointerBitsv() local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8) local_unnamed_addr #2 align 2

declare { i64, i64 } @_ZNK19EncodedLiteralSlice9read_sintEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1

; 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 #2 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 #2 align 2

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

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

declare noundef ptr @_Z18Target_GetTypeReprRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12field_path_t9push_backEh(ptr noundef nonnull align 8 dereferenceable(24), i8 noundef zeroext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK19EncodedLiteralSlice5sliceEm(ptr dead_on_unwind noalias writable sret(%struct.EncodedLiteralSlice) align 8, ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt6vectorIN8TypeRepr5FieldESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare i64 @_ZNK8TypeRepr16get_enum_variantERK4SpanRK18StaticTraitResolveRK19EncodedLiteralSlice(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK8TypeRepr11VariantMode7is_NoneEv(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11PatternRule12make_VariantENS_12Data_VariantE(ptr dead_on_unwind noalias writable sret(%class.PatternRule) align 8, ptr noundef) local_unnamed_addr #2 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 #4 align 2

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

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

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

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

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

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

declare noundef zeroext i1 @_Z16Target_GetSizeOfRK4SpanRK18StaticTraitResolveRKN3HIR7TypeRefERm(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK19EncodedLiteralSlice5sliceEmm(ptr dead_on_unwind noalias writable sret(%struct.EncodedLiteralSlice) align 8, ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, i64 noundef) local_unnamed_addr #2 align 2

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

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

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

declare noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

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

declare noundef ptr @_ZNK19EncodedLiteralSlice9get_relocEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #4 align 2

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

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

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

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

declare void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8, ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve8ValuePtr9is_StaticEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 16}
!10 = !{!"_ZTSZN21PatternRulesetBuilder15append_from_litERK4Span19EncodedLiteralSliceRKN3HIR7TypeRefEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTS21PatternRulesetBuilder", !6, i64 0, !6, i64 8, !15, i64 16, !12, i64 40, !12, i64 48, !19, i64 56}
!15 = !{!"_ZTSSt6vectorIN21PatternRulesetBuilder7RulesetESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN21PatternRulesetBuilder7RulesetESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTS12field_path_t", !20, i64 0}
!20 = !{!"_ZTSSt6vectorIhSaIhEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!25, !25, i64 0}
!25 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!26 = !{!27, !25, i64 16}
!27 = !{!"_ZTSN3MIR8Constant9Data_UintE", !28, i64 0, !25, i64 16}
!28 = !{!"_ZTS4U128", !12, i64 0, !12, i64 8}
!29 = !{!30, !25, i64 16}
!30 = !{!"_ZTSN3MIR8Constant8Data_IntE", !31, i64 0, !25, i64 16}
!31 = !{!"_ZTS4S128", !28, i64 0}
!32 = !{!33, !12, i64 0}
!33 = !{!"_ZTSN8TypeRepr5FieldE", !12, i64 0, !34, i64 8}
!34 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!35 = !{!7, !7, i64 0}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = distinct !{!38, !37}
!39 = !{!40, !40, i64 0}
!40 = !{!"int", !7, i64 0}
!41 = distinct !{!41, !37}
!42 = !{!43, !40, i64 0}
!43 = !{!"_ZTSN11PatternRule12Data_VariantE", !40, i64 0, !44, i64 8}
!44 = !{!"_ZTSSt6vectorI11PatternRuleSaIS0_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseI11PatternRuleSaIS0_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!48 = distinct !{!48, !37}
!49 = !{!50, !72, i64 304}
!50 = !{!"_ZTSN3HIR6StaticE", !51, i64 0, !68, i64 96, !72, i64 168, !34, i64 176, !73, i64 184, !81, i64 256, !72, i64 304, !72, i64 305, !72, i64 306, !86, i64 312}
!51 = !{!"_ZTSN3HIR13GenericParamsE", !52, i64 0, !56, i64 24, !60, i64 48, !64, i64 72}
!52 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!56 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!64 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !65, i64 0}
!65 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !66, i64 0}
!66 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!68 = !{!"_ZTSN3HIR7LinkageE", !69, i64 0, !70, i64 8, !70, i64 40}
!69 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!70 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !71, i64 0, !12, i64 8, !7, i64 16}
!71 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!72 = !{!"bool", !7, i64 0}
!73 = !{!"_ZTSN3HIR7ExprPtrE", !74, i64 0, !75, i64 8, !75, i64 32, !79, i64 56, !80, i64 64}
!74 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!75 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!79 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!80 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!81 = !{!"_ZTS14EncodedLiteral", !20, i64 0, !82, i64 24}
!82 = !{!"_ZTSSt6vectorI5RelocSaIS0_EE", !83, i64 0}
!83 = !{!"_ZTSSt12_Vector_baseI5RelocSaIS0_EE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE12_Vector_implE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!86 = !{!"_ZTSSt3mapIN3HIR4PathE14EncodedLiteralSt4lessIS1_ESaISt4pairIKS1_S2_EEE", !87, i64 0}
!87 = !{!"_ZTSSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !88, i64 0}
!88 = !{!"_ZTSNSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !89, i64 0, !91, i64 8}
!89 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR4PathEEE", !90, i64 0}
!90 = !{!"_ZTSSt4lessIN3HIR4PathEE"}
!91 = !{!"_ZTSSt15_Rb_tree_header", !92, i64 0, !12, i64 32}
!92 = !{!"_ZTSSt18_Rb_tree_node_base", !93, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!93 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!94 = !{i8 0, i8 2}
!95 = !{}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass