; 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.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Terminator" = type { i32, %"union.MIR::Terminator::DataUnion" }
%"union.MIR::Terminator::DataUnion" = type { %"struct.MIR::Terminator::Data_Call" }
%"struct.MIR::Terminator::Data_Call" = type { i32, i32, %"struct.MIR::LValue", %"class.MIR::CallTarget", %"class.std::vector.18" }
%"class.MIR::CallTarget" = type { i32, %"union.MIR::CallTarget::DataUnion" }
%"union.MIR::CallTarget::DataUnion" = type { %"class.HIR::Path" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr.115" }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.23, %class.ThinVector.24, %class.ThinVector.25 }
%class.ThinVector.23 = type { ptr }
%class.ThinVector.24 = type { ptr }
%class.ThinVector.25 = type { ptr }
%"class.std::unique_ptr.115" = type { %"struct.std::__uniq_ptr_data.116" }
%"struct.std::__uniq_ptr_data.116" = type { %"class.std::__uniq_ptr_impl.117" }
%"class.std::__uniq_ptr_impl.117" = type { %"class.std::tuple.118" }
%"class.std::tuple.118" = type { %"struct.std::_Tuple_impl.119" }
%"struct.std::_Tuple_impl.119" = type { %"struct.std::_Head_base.122" }
%"struct.std::_Head_base.122" = type { ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.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.464 = type { ptr, ptr, ptr }
%struct.Span = type { ptr }
%class.anon.465 = type { ptr }
%class.anon.466 = type { i8 }
%class.anon.468 = type { i8 }
%"struct.MIR::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%class.anon.470 = type { i8 }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%class.anon.472 = type { i8 }
%class.anon.474 = type { i8 }
%"struct.MIR::Constant::Data_Float" = type { double, i32 }
%class.anon.476 = type { i8 }
%class.anon.478 = type { i8 }
%class.anon.480 = type { i8 }
%class.anon.482 = type { ptr }
%class.anon.483 = type { ptr }
%class.anon.484 = type { ptr }
%class.anon.485 = type { ptr }
%class.anon.486 = type { ptr }
%class.anon.487 = type { ptr }
%class.anon.488 = type { ptr }
%class.anon.489 = type { ptr, ptr, ptr }
%class.anon.490 = type { i8 }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.49" = type { i8 }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.47" }
%class.anon.492 = type { i8 }
%class.anon.494 = type { i8 }
%class.anon.496 = type { i8 }
%class.anon.498 = type { i8 }
%class.anon.500 = type { ptr }
%class.anon.501 = type { ptr }
%class.anon.502 = type { i8 }
%"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.anon.504 = type { ptr }
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%class.anon.505 = type { ptr }
%class.anon.506 = type { ptr }
%class.anon.507 = type { ptr }
%class.anon.508 = type { ptr, ptr }
%class.anon.509 = type { ptr, ptr }
%class.anon.510 = type { ptr, ptr }
%class.anon.511 = type { i8 }
%class.anon.513 = 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" }
%"struct.PatternRule::Data_ValueRange" = type <{ %"class.MIR::Constant", %"class.MIR::Constant", i8, [7 x i8] }>
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.115" }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.HIR::Struct" = type <{ %"class.HIR::GenericParams", i32, [4 x i8], %"class.HIR::Struct::Data", i32, i32, %"struct.HIR::TraitMarkings", %"struct.HIR::StructMarkings", i32, [4 x i8] }>
%"class.HIR::GenericParams" = type { %"class.std::vector.254", %"class.std::vector.259", %"class.std::vector.264", %"class.std::vector.269" }
%"class.std::vector.254" = type { %"struct.std::_Vector_base.255" }
%"struct.std::_Vector_base.255" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.259" = type { %"struct.std::_Vector_base.260" }
%"struct.std::_Vector_base.260" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.264" = type { %"struct.std::_Vector_base.265" }
%"struct.std::_Vector_base.265" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.269" = type { %"struct.std::_Vector_base.270" }
%"struct.std::_Vector_base.270" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Struct::Data" = type { i32, %"union.HIR::Struct::Data::DataUnion" }
%"union.HIR::Struct::Data::DataUnion" = type { %"class.std::vector.371" }
%"class.std::vector.371" = type { %"struct.std::_Vector_base.372" }
%"struct.std::_Vector_base.372" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TraitMarkings" = type { i8, i8, i8, %"class.std::map.381" }
%"class.std::map.381" = type { %"class.std::_Rb_tree.382" }
%"class.std::_Rb_tree.382" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%"struct.PatternRule::Data_Variant" = type { i32, %"class.std::vector.136" }
%"class.HIR::Enum" = type { %"class.HIR::GenericParams", i8, i32, %"class.HIR::Enum::Class", %"struct.HIR::TraitMarkings" }
%"class.HIR::Enum::Class" = type { i32, %"union.HIR::Enum::Class::DataUnion" }
%"union.HIR::Enum::Class::DataUnion" = type { %"class.std::vector.409", [8 x i8] }
%"class.std::vector.409" = type { %"struct.std::_Vector_base.410" }
%"struct.std::_Vector_base.410" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Enum::DataVariant" = type { %class.RcString, i8, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }
%"struct.PatternRule::Data_Slice" = type { i32, %"class.std::vector.136" }

@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__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj = external hidden unnamed_addr constant [43 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj = external hidden unnamed_addr constant [192 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [16 x i8], align 1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114get_ty_and_valERK4SpanR10MirBuilderRKN3HIR7TypeRefERKN3MIR6LValueERK12field_path_tjRS6_RSA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #0

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

declare i32 @__gxx_personality_v0(...)

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

declare noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440)) #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) #2

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

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

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

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

declare void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440), i32 noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

declare void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, i32 noundef) #0 align 2

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

declare void @_ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef, i1 noundef zeroext) #2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK11PatternRule13as_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(120)) #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(81) ptr @_ZNK11PatternRule13as_ValueRangeEv(ptr noundef nonnull align 8 dereferenceable(120)) #5 align 2

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #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)) #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #0 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)) #5 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)) #5 align 2

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

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

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

declare noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

450:                                              ; preds = %8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %451

451:                                              ; preds = %4345, %450
  %452 = load i32, ptr %22, align 4, !tbaa !9
  %453 = load i32, ptr %12, align 4, !tbaa !9
  %454 = icmp ult i32 %452, %453
  br i1 %454, label %460, label %455

455:                                              ; preds = %451
  store i32 2, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  br label %4352

456:                                              ; preds = %8
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %20, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #9
  br label %4353

460:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %461 = load ptr, ptr %11, align 8, !tbaa !5
  %462 = load i32, ptr %22, align 4, !tbaa !9
  %463 = zext i32 %462 to i64
  %464 = getelementptr inbounds %class.PatternRule, ptr %461, i64 %463
  store ptr %464, ptr %24, align 8, !tbaa !5
  br label %465

465:                                              ; preds = %460
  %466 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %467 unwind label %481

467:                                              ; preds = %465
  br i1 %466, label %468, label %485

468:                                              ; preds = %467
  %469 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %470 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %469, ptr noundef @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj)
          to label %471 unwind label %481

471:                                              ; preds = %468
  %472 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef @.str.75)
          to label %473 unwind label %481

473:                                              ; preds = %471
  %474 = load ptr, ptr %24, align 8, !tbaa !5
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK11PatternRule(ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(120) %474)
          to label %476 unwind label %481

476:                                              ; preds = %473
  %477 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %475, ptr noundef @_ZSt3decRSt8ios_base)
          to label %478 unwind label %481

478:                                              ; preds = %476
  %479 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %477, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %480 unwind label %481

480:                                              ; preds = %478
  br label %485

481:                                              ; preds = %487, %478, %476, %473, %471, %468, %465
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %20, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %21, align 4
  br label %4351

485:                                              ; preds = %480, %467
  br label %486

486:                                              ; preds = %485
  br label %487

487:                                              ; preds = %486
  %488 = load ptr, ptr %24, align 8, !tbaa !5
  %489 = invoke noundef zeroext i1 @_ZNK11PatternRule6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(120) %488)
          to label %490 unwind label %481

490:                                              ; preds = %487
  br i1 %489, label %491, label %492

491:                                              ; preds = %490
  store i32 4, ptr %23, align 4
  br label %4342

492:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #9
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %493 unwind label %522

493:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %494 unwind label %526

494:                                              ; preds = %493
  %495 = load ptr, ptr %10, align 8, !tbaa !5
  %496 = load ptr, ptr %9, align 8, !tbaa !5
  %497 = load ptr, ptr %13, align 8, !tbaa !5
  %498 = load ptr, ptr %14, align 8, !tbaa !5
  %499 = load ptr, ptr %24, align 8, !tbaa !5
  %500 = getelementptr inbounds %class.PatternRule, ptr %499, i32 0, i32 2
  %501 = load i32, ptr %15, align 4, !tbaa !9
  invoke void @_ZN12_GLOBAL__N_114get_ty_and_valERK4SpanR10MirBuilderRKN3HIR7TypeRefERKN3MIR6LValueERK12field_path_tjRS6_RSA_(ptr noundef nonnull align 8 dereferenceable(8) %495, ptr noundef nonnull align 8 dereferenceable(440) %496, ptr noundef nonnull align 8 dereferenceable(8) %497, ptr noundef nonnull align 8 dereferenceable(32) %498, ptr noundef nonnull align 8 dereferenceable(24) %500, i32 noundef %501, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %502 unwind label %530

502:                                              ; preds = %494
  br label %503

503:                                              ; preds = %502
  %504 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %505 unwind label %530

505:                                              ; preds = %503
  br i1 %504, label %506, label %534

506:                                              ; preds = %505
  %507 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %508 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %507, ptr noundef @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj)
          to label %509 unwind label %530

509:                                              ; preds = %506
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %508, ptr noundef @.str.76)
          to label %511 unwind label %530

511:                                              ; preds = %509
  %512 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %510, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %513 unwind label %530

513:                                              ; preds = %511
  %514 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %512, ptr noundef @.str.77)
          to label %515 unwind label %530

515:                                              ; preds = %513
  %516 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %514, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %517 unwind label %530

517:                                              ; preds = %515
  %518 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %516, ptr noundef @_ZSt3decRSt8ios_base)
          to label %519 unwind label %530

519:                                              ; preds = %517
  %520 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %518, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %521 unwind label %530

521:                                              ; preds = %519
  br label %534

522:                                              ; preds = %492
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %20, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %21, align 4
  br label %4350

526:                                              ; preds = %493
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %20, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %21, align 4
  br label %4349

530:                                              ; preds = %519, %517, %515, %513, %511, %509, %506, %503, %494
  %531 = landingpad { ptr, i32 }
          cleanup
  %532 = extractvalue { ptr, i32 } %531, 0
  store ptr %532, ptr %20, align 8
  %533 = extractvalue { ptr, i32 } %531, 1
  store i32 %533, ptr %21, align 4
  br label %4348

534:                                              ; preds = %521, %505
  br label %535

535:                                              ; preds = %534
  br label %536

536:                                              ; preds = %535
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  store ptr %26, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #9
  store i8 1, ptr %28, align 1, !tbaa !11
  br label %537

537:                                              ; preds = %4340, %536
  %538 = load i8, ptr %28, align 1, !tbaa !11, !range !13, !noundef !14
  %539 = trunc i8 %538 to i1
  br i1 %539, label %541, label %540

540:                                              ; preds = %537
  store i32 9, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #9
  br label %4341

541:                                              ; preds = %537
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %542 = load ptr, ptr %27, align 8, !tbaa !5
  %543 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %542)
          to label %544 unwind label %549

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

545:                                              ; preds = %4337, %544
  %546 = load i8, ptr %28, align 1, !tbaa !11, !range !13, !noundef !14
  %547 = trunc i8 %546 to i1
  br i1 %547, label %553, label %548

548:                                              ; preds = %545
  store i32 12, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %4339

549:                                              ; preds = %553, %541
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %20, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %21, align 4
  br label %4338

553:                                              ; preds = %545
  %554 = load ptr, ptr %29, align 8, !tbaa !5
  %555 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %554)
          to label %556 unwind label %549

556:                                              ; preds = %553
  switch i32 %555, label %4336 [
    i32 0, label %557
    i32 1, label %558
    i32 2, label %605
    i32 3, label %650
    i32 4, label %2491
    i32 5, label %3198
    i32 6, label %3243
    i32 7, label %3288
    i32 8, label %3333
    i32 9, label %3384
    i32 10, label %3997
    i32 11, label %4048
    i32 12, label %4099
    i32 13, label %4148
    i32 14, label %4197
    i32 15, label %4246
    i32 16, label %4291
  ]

557:                                              ; preds = %556
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 2459, ptr noundef @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

558:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #9
  store i8 1, ptr %30, align 1, !tbaa !11
  br label %559

559:                                              ; preds = %603, %558
  %560 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %561 = trunc i8 %560 to i1
  br i1 %561, label %563, label %562

562:                                              ; preds = %559
  store i32 16, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #9
  br label %604

563:                                              ; preds = %559
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %564 = load ptr, ptr %29, align 8, !tbaa !5
  %565 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %564)
          to label %566 unwind label %572

566:                                              ; preds = %563
  store ptr %565, ptr %31, align 8, !tbaa !5
  br label %567

567:                                              ; preds = %600, %566
  %568 = load ptr, ptr %31, align 8, !tbaa !5
  %569 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %570 = trunc i8 %569 to i1
  br i1 %570, label %576, label %571

571:                                              ; preds = %567
  store i32 19, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %602

572:                                              ; preds = %584, %563
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %20, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %21, align 4
  br label %601

576:                                              ; preds = %567
  br label %577

577:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %578 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %578)
          to label %579 unwind label %585

579:                                              ; preds = %577
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %580 = getelementptr inbounds %class.anon.465, ptr %34, i32 0, i32 0
  %581 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %581, ptr %580, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef %33)
          to label %582 unwind label %589

582:                                              ; preds = %579
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  %583 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %583, ptr noundef @.str.10)
          to label %584 unwind label %594

584:                                              ; preds = %582
  invoke void @__cxa_throw(ptr %583, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %572

585:                                              ; preds = %577
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %20, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %21, align 4
  br label %593

589:                                              ; preds = %579
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %20, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  br label %593

593:                                              ; preds = %589, %585
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %601

594:                                              ; preds = %582
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %20, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %21, align 4
  call void @__cxa_free_exception(ptr %583) #9
  br label %601

598:                                              ; No predecessors!
  br label %599

599:                                              ; preds = %598
  br label %600

600:                                              ; preds = %599
  store i8 0, ptr %30, align 1, !tbaa !11
  br label %567, !llvm.loop !15

601:                                              ; preds = %594, %593, %572
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #9
  br label %4338

602:                                              ; preds = %571
  br label %603

603:                                              ; preds = %602
  store i8 0, ptr %30, align 1, !tbaa !11
  br label %559, !llvm.loop !17

604:                                              ; preds = %562
  br label %4336

605:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #9
  store i8 1, ptr %35, align 1, !tbaa !11
  br label %606

606:                                              ; preds = %648, %605
  %607 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %608 = trunc i8 %607 to i1
  br i1 %608, label %610, label %609

609:                                              ; preds = %606
  store i32 24, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  br label %649

610:                                              ; preds = %606
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  %611 = load ptr, ptr %29, align 8, !tbaa !5
  %612 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %611)
          to label %613 unwind label %619

613:                                              ; preds = %610
  store ptr %612, ptr %36, align 8, !tbaa !5
  br label %614

614:                                              ; preds = %645, %613
  %615 = load ptr, ptr %36, align 8, !tbaa !5
  %616 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %617 = trunc i8 %616 to i1
  br i1 %617, label %623, label %618

618:                                              ; preds = %614
  store i32 27, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %647

619:                                              ; preds = %629, %610
  %620 = landingpad { ptr, i32 }
          cleanup
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %20, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %21, align 4
  br label %646

623:                                              ; preds = %614
  br label %624

624:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %625 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %625)
          to label %626 unwind label %630

626:                                              ; preds = %624
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 1 dereferenceable(1) %39) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef %38)
          to label %627 unwind label %634

627:                                              ; preds = %626
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  %628 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %628, ptr noundef @.str.10)
          to label %629 unwind label %639

629:                                              ; preds = %627
  invoke void @__cxa_throw(ptr %628, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %619

630:                                              ; preds = %624
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %20, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %21, align 4
  br label %638

634:                                              ; preds = %626
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %20, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  br label %638

638:                                              ; preds = %634, %630
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  br label %646

639:                                              ; preds = %627
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %20, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %21, align 4
  call void @__cxa_free_exception(ptr %628) #9
  br label %646

643:                                              ; No predecessors!
  br label %644

644:                                              ; preds = %643
  br label %645

645:                                              ; preds = %644
  store i8 0, ptr %35, align 1, !tbaa !11
  br label %614, !llvm.loop !18

646:                                              ; preds = %639, %638, %619
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  br label %4338

647:                                              ; preds = %618
  br label %648

648:                                              ; preds = %647
  store i8 0, ptr %35, align 1, !tbaa !11
  br label %606, !llvm.loop !19

649:                                              ; preds = %609
  br label %4336

650:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #9
  store i8 1, ptr %40, align 1, !tbaa !11
  br label %651

651:                                              ; preds = %2489, %650
  %652 = load i8, ptr %40, align 1, !tbaa !11, !range !13, !noundef !14
  %653 = trunc i8 %652 to i1
  br i1 %653, label %655, label %654

654:                                              ; preds = %651
  store i32 32, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  br label %2490

655:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  %656 = load ptr, ptr %29, align 8, !tbaa !5
  %657 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %656)
          to label %658 unwind label %664

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

659:                                              ; preds = %2486, %658
  %660 = load ptr, ptr %41, align 8, !tbaa !5
  %661 = load i8, ptr %40, align 1, !tbaa !11, !range !13, !noundef !14
  %662 = trunc i8 %661 to i1
  br i1 %662, label %668, label %663

663:                                              ; preds = %659
  store i32 35, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  br label %2488

664:                                              ; preds = %2339, %2331, %2328, %2324, %2306, %1951, %1934, %1595, %681, %672, %655
  %665 = landingpad { ptr, i32 }
          cleanup
  %666 = extractvalue { ptr, i32 } %665, 0
  store ptr %666, ptr %20, align 8
  %667 = extractvalue { ptr, i32 } %665, 1
  store i32 %667, ptr %21, align 4
  br label %2487

668:                                              ; preds = %659
  %669 = load ptr, ptr %41, align 8, !tbaa !5
  %670 = load i32, ptr %669, align 4, !tbaa !20
  switch i32 %670, label %2485 [
    i32 14, label %671
    i32 2, label %761
    i32 4, label %761
    i32 6, label %761
    i32 8, label %761
    i32 10, label %761
    i32 0, label %761
    i32 3, label %1170
    i32 5, label %1170
    i32 7, label %1170
    i32 9, label %1170
    i32 11, label %1170
    i32 1, label %1170
    i32 15, label %1595
    i32 12, label %1951
    i32 13, label %1951
    i32 16, label %2323
  ]

671:                                              ; preds = %668
  br label %672

672:                                              ; preds = %671
  %673 = load ptr, ptr %24, align 8, !tbaa !5
  %674 = invoke noundef zeroext i1 @_ZNK11PatternRule7is_BoolEv(ptr noundef nonnull align 8 dereferenceable(120) %673)
          to label %675 unwind label %664

675:                                              ; preds = %672
  br i1 %674, label %695, label %676

676:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %677 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %677)
          to label %678 unwind label %682

678:                                              ; preds = %676
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 1 dereferenceable(1) %44) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef %43)
          to label %679 unwind label %686

679:                                              ; preds = %678
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  %680 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %680, ptr noundef @.str.10)
          to label %681 unwind label %691

681:                                              ; preds = %679
  invoke void @__cxa_throw(ptr %680, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %664

682:                                              ; preds = %676
  %683 = landingpad { ptr, i32 }
          cleanup
  %684 = extractvalue { ptr, i32 } %683, 0
  store ptr %684, ptr %20, align 8
  %685 = extractvalue { ptr, i32 } %683, 1
  store i32 %685, ptr %21, align 4
  br label %690

686:                                              ; preds = %678
  %687 = landingpad { ptr, i32 }
          cleanup
  %688 = extractvalue { ptr, i32 } %687, 0
  store ptr %688, ptr %20, align 8
  %689 = extractvalue { ptr, i32 } %687, 1
  store i32 %689, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  br label %690

690:                                              ; preds = %686, %682
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  br label %2487

691:                                              ; preds = %679
  %692 = landingpad { ptr, i32 }
          cleanup
  %693 = extractvalue { ptr, i32 } %692, 0
  store ptr %693, ptr %20, align 8
  %694 = extractvalue { ptr, i32 } %692, 1
  store i32 %694, ptr %21, align 4
  call void @__cxa_free_exception(ptr %680) #9
  br label %2487

695:                                              ; preds = %675
  br label %696

696:                                              ; preds = %695
  br label %697

697:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #9
  %698 = load ptr, ptr %24, align 8, !tbaa !5
  %699 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK11PatternRule7as_BoolEv(ptr noundef nonnull align 8 dereferenceable(120) %698)
          to label %700 unwind label %719

700:                                              ; preds = %697
  %701 = load i8, ptr %699, align 1, !tbaa !11, !range !13, !noundef !14
  %702 = trunc i8 %701 to i1
  %703 = zext i1 %702 to i8
  store i8 %703, ptr %45, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #9
  %704 = load ptr, ptr %9, align 8, !tbaa !5
  %705 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %704)
          to label %706 unwind label %723

706:                                              ; preds = %700
  store i32 %705, ptr %46, align 4, !tbaa !9
  %707 = load i8, ptr %45, align 1, !tbaa !11, !range !13, !noundef !14
  %708 = trunc i8 %707 to i1
  br i1 %708, label %709, label %736

709:                                              ; preds = %706
  %710 = load ptr, ptr %9, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %48, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %711, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %712 unwind label %723

712:                                              ; preds = %709
  %713 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %48, i32 0, i32 1
  %714 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %714, ptr %713, align 8, !tbaa !22
  %715 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %48, i32 0, i32 2
  %716 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %716, ptr %715, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %47, ptr noundef %48)
          to label %717 unwind label %727

717:                                              ; preds = %712
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %710, ptr noundef %47)
          to label %718 unwind label %731

718:                                              ; preds = %717
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %47) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %48) #9
  br label %755

719:                                              ; preds = %697
  %720 = landingpad { ptr, i32 }
          cleanup
  %721 = extractvalue { ptr, i32 } %720, 0
  store ptr %721, ptr %20, align 8
  %722 = extractvalue { ptr, i32 } %720, 1
  store i32 %722, ptr %21, align 4
  br label %760

723:                                              ; preds = %755, %736, %709, %700
  %724 = landingpad { ptr, i32 }
          cleanup
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %20, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %21, align 4
  br label %759

727:                                              ; preds = %712
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %20, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %21, align 4
  br label %735

731:                                              ; preds = %717
  %732 = landingpad { ptr, i32 }
          cleanup
  %733 = extractvalue { ptr, i32 } %732, 0
  store ptr %733, ptr %20, align 8
  %734 = extractvalue { ptr, i32 } %732, 1
  store i32 %734, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %47) #9
  br label %735

735:                                              ; preds = %731, %727
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %48) #9
  br label %759

736:                                              ; preds = %706
  %737 = load ptr, ptr %9, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %50, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %738, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %739 unwind label %723

739:                                              ; preds = %736
  %740 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %50, i32 0, i32 1
  %741 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %741, ptr %740, align 8, !tbaa !22
  %742 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %50, i32 0, i32 2
  %743 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %743, ptr %742, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %49, ptr noundef %50)
          to label %744 unwind label %746

744:                                              ; preds = %739
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %737, ptr noundef %49)
          to label %745 unwind label %750

745:                                              ; preds = %744
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %49) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %50) #9
  br label %755

746:                                              ; preds = %739
  %747 = landingpad { ptr, i32 }
          cleanup
  %748 = extractvalue { ptr, i32 } %747, 0
  store ptr %748, ptr %20, align 8
  %749 = extractvalue { ptr, i32 } %747, 1
  store i32 %749, ptr %21, align 4
  br label %754

750:                                              ; preds = %744
  %751 = landingpad { ptr, i32 }
          cleanup
  %752 = extractvalue { ptr, i32 } %751, 0
  store ptr %752, ptr %20, align 8
  %753 = extractvalue { ptr, i32 } %751, 1
  store i32 %753, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %49) #9
  br label %754

754:                                              ; preds = %750, %746
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %50) #9
  br label %759

755:                                              ; preds = %745, %718
  %756 = load ptr, ptr %9, align 8, !tbaa !5
  %757 = load i32, ptr %46, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %756, i32 noundef %757)
          to label %758 unwind label %723

758:                                              ; preds = %755
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #9
  br label %2485

759:                                              ; preds = %754, %735, %723
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  br label %760

760:                                              ; preds = %759, %719
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #9
  br label %2487

761:                                              ; preds = %668, %668, %668, %668, %668, %668
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #9
  store i8 1, ptr %51, align 1, !tbaa !11
  br label %762

762:                                              ; preds = %1168, %761
  %763 = load i8, ptr %51, align 1, !tbaa !11, !range !13, !noundef !14
  %764 = trunc i8 %763 to i1
  br i1 %764, label %766, label %765

765:                                              ; preds = %762
  store i32 41, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #9
  br label %1169

766:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %767 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %767, ptr %52, align 8, !tbaa !5
  br label %768

768:                                              ; preds = %1165, %766
  %769 = load i8, ptr %51, align 1, !tbaa !11, !range !13, !noundef !14
  %770 = trunc i8 %769 to i1
  br i1 %770, label %772, label %771

771:                                              ; preds = %768
  store i32 44, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  br label %1167

772:                                              ; preds = %768
  %773 = load ptr, ptr %52, align 8, !tbaa !5
  %774 = invoke noundef i32 @_ZNK11PatternRule3tagEv(ptr noundef nonnull align 8 dereferenceable(120) %773)
          to label %775 unwind label %776

775:                                              ; preds = %772
  switch i32 %774, label %781 [
    i32 0, label %780
    i32 5, label %803
    i32 6, label %911
  ]

776:                                              ; preds = %787, %772
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %20, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %21, align 4
  br label %1166

780:                                              ; preds = %775
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 2489, ptr noundef @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

781:                                              ; preds = %775
  br label %782

782:                                              ; preds = %781
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  %783 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %783)
          to label %784 unwind label %788

784:                                              ; preds = %782
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 1 dereferenceable(1) %55) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef %54)
          to label %785 unwind label %792

785:                                              ; preds = %784
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  %786 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %786, ptr noundef @.str.10)
          to label %787 unwind label %797

787:                                              ; preds = %785
  invoke void @__cxa_throw(ptr %786, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %776

788:                                              ; preds = %782
  %789 = landingpad { ptr, i32 }
          cleanup
  %790 = extractvalue { ptr, i32 } %789, 0
  store ptr %790, ptr %20, align 8
  %791 = extractvalue { ptr, i32 } %789, 1
  store i32 %791, ptr %21, align 4
  br label %796

792:                                              ; preds = %784
  %793 = landingpad { ptr, i32 }
          cleanup
  %794 = extractvalue { ptr, i32 } %793, 0
  store ptr %794, ptr %20, align 8
  %795 = extractvalue { ptr, i32 } %793, 1
  store i32 %795, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  br label %796

796:                                              ; preds = %792, %788
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %1166

797:                                              ; preds = %785
  %798 = landingpad { ptr, i32 }
          cleanup
  %799 = extractvalue { ptr, i32 } %798, 0
  store ptr %799, ptr %20, align 8
  %800 = extractvalue { ptr, i32 } %798, 1
  store i32 %800, ptr %21, align 4
  call void @__cxa_free_exception(ptr %786) #9
  br label %1166

801:                                              ; No predecessors!
  br label %802

802:                                              ; preds = %801
  br label %1164

803:                                              ; preds = %775
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #9
  store i8 1, ptr %56, align 1, !tbaa !11
  br label %804

804:                                              ; preds = %909, %803
  %805 = load i8, ptr %56, align 1, !tbaa !11, !range !13, !noundef !14
  %806 = trunc i8 %805 to i1
  br i1 %806, label %808, label %807

807:                                              ; preds = %804
  store i32 50, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #9
  br label %910

808:                                              ; preds = %804
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #9
  %809 = load ptr, ptr %52, align 8, !tbaa !5
  %810 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %809)
          to label %811 unwind label %817

811:                                              ; preds = %808
  store ptr %810, ptr %57, align 8, !tbaa !5
  br label %812

812:                                              ; preds = %859, %811
  %813 = load ptr, ptr %57, align 8, !tbaa !5
  %814 = load i8, ptr %56, align 1, !tbaa !11, !range !13, !noundef !14
  %815 = trunc i8 %814 to i1
  br i1 %815, label %821, label %816

816:                                              ; preds = %812
  store i32 53, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  br label %908

817:                                              ; preds = %808
  %818 = landingpad { ptr, i32 }
          cleanup
  %819 = extractvalue { ptr, i32 } %818, 0
  store ptr %819, ptr %20, align 8
  %820 = extractvalue { ptr, i32 } %818, 1
  store i32 %820, ptr %21, align 4
  br label %907

821:                                              ; preds = %812
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #9
  %822 = load ptr, ptr %9, align 8, !tbaa !5
  %823 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %822)
          to label %824 unwind label %860

824:                                              ; preds = %821
  store i32 %823, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %59) #9
  %825 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %61, i32 0, i32 0
  %826 = load ptr, ptr %57, align 8, !tbaa !5
  %827 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %826)
          to label %828 unwind label %864

828:                                              ; preds = %824
  %829 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %827, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %825, ptr align 8 %829, i64 16, i1 false), !tbaa.struct !32
  %830 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %61, i32 0, i32 1
  %831 = load ptr, ptr %41, align 8, !tbaa !5
  %832 = load i32, ptr %831, align 4, !tbaa !20
  store i32 %832, ptr %830, align 8, !tbaa !34
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %60, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %61)
          to label %833 unwind label %864

833:                                              ; preds = %828
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %59, ptr noundef %60)
          to label %834 unwind label %868

834:                                              ; preds = %833
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %60) #9
  %835 = load ptr, ptr %9, align 8, !tbaa !5
  %836 = load ptr, ptr %10, align 8, !tbaa !5
  %837 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNK10MirBuilder11get_if_condEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %62, ptr noundef nonnull align 8 dereferenceable(440) %837)
          to label %838 unwind label %872

838:                                              ; preds = %834
  %839 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %64, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %65, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %840 unwind label %876

840:                                              ; preds = %838
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %839, ptr noundef %65)
          to label %841 unwind label %880

841:                                              ; preds = %840
  %842 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %64, i32 0, i32 1
  store i32 14, ptr %842, align 8, !tbaa !37
  %843 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %64, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %843, ptr noundef nonnull align 8 dereferenceable(48) %59) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %63, ptr noundef %64)
          to label %844 unwind label %884

844:                                              ; preds = %841
  invoke void @_ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb(ptr noundef nonnull align 8 dereferenceable(440) %835, ptr noundef nonnull align 8 dereferenceable(8) %836, ptr noundef %62, ptr noundef %63, i1 noundef zeroext true)
          to label %845 unwind label %888

845:                                              ; preds = %844
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %63) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %64) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #9
  %846 = load ptr, ptr %9, align 8, !tbaa !5
  %847 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %67, i32 0, i32 0
  %848 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNK10MirBuilder11get_if_condEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %847, ptr noundef nonnull align 8 dereferenceable(440) %848)
          to label %849 unwind label %872

849:                                              ; preds = %845
  %850 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %67, i32 0, i32 1
  %851 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %851, ptr %850, align 8, !tbaa !22
  %852 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %67, i32 0, i32 2
  %853 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %853, ptr %852, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %66, ptr noundef %67)
          to label %854 unwind label %895

854:                                              ; preds = %849
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %846, ptr noundef %66)
          to label %855 unwind label %899

855:                                              ; preds = %854
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %66) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %67) #9
  %856 = load ptr, ptr %9, align 8, !tbaa !5
  %857 = load i32, ptr %58, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %856, i32 noundef %857)
          to label %858 unwind label %872

858:                                              ; preds = %855
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %59) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  br label %859

859:                                              ; preds = %858
  store i8 0, ptr %56, align 1, !tbaa !11
  br label %812, !llvm.loop !42

860:                                              ; preds = %821
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %20, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %21, align 4
  br label %906

864:                                              ; preds = %828, %824
  %865 = landingpad { ptr, i32 }
          cleanup
  %866 = extractvalue { ptr, i32 } %865, 0
  store ptr %866, ptr %20, align 8
  %867 = extractvalue { ptr, i32 } %865, 1
  store i32 %867, ptr %21, align 4
  br label %905

868:                                              ; preds = %833
  %869 = landingpad { ptr, i32 }
          cleanup
  %870 = extractvalue { ptr, i32 } %869, 0
  store ptr %870, ptr %20, align 8
  %871 = extractvalue { ptr, i32 } %869, 1
  store i32 %871, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %60) #9
  br label %905

872:                                              ; preds = %855, %845, %834
  %873 = landingpad { ptr, i32 }
          cleanup
  %874 = extractvalue { ptr, i32 } %873, 0
  store ptr %874, ptr %20, align 8
  %875 = extractvalue { ptr, i32 } %873, 1
  store i32 %875, ptr %21, align 4
  br label %904

876:                                              ; preds = %838
  %877 = landingpad { ptr, i32 }
          cleanup
  %878 = extractvalue { ptr, i32 } %877, 0
  store ptr %878, ptr %20, align 8
  %879 = extractvalue { ptr, i32 } %877, 1
  store i32 %879, ptr %21, align 4
  br label %894

880:                                              ; preds = %840
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %20, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %21, align 4
  br label %893

884:                                              ; preds = %841
  %885 = landingpad { ptr, i32 }
          cleanup
  %886 = extractvalue { ptr, i32 } %885, 0
  store ptr %886, ptr %20, align 8
  %887 = extractvalue { ptr, i32 } %885, 1
  store i32 %887, ptr %21, align 4
  br label %892

888:                                              ; preds = %844
  %889 = landingpad { ptr, i32 }
          cleanup
  %890 = extractvalue { ptr, i32 } %889, 0
  store ptr %890, ptr %20, align 8
  %891 = extractvalue { ptr, i32 } %889, 1
  store i32 %891, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %63) #9
  br label %892

892:                                              ; preds = %888, %884
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %64) #9
  br label %893

893:                                              ; preds = %892, %880
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  br label %894

894:                                              ; preds = %893, %876
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #9
  br label %904

895:                                              ; preds = %849
  %896 = landingpad { ptr, i32 }
          cleanup
  %897 = extractvalue { ptr, i32 } %896, 0
  store ptr %897, ptr %20, align 8
  %898 = extractvalue { ptr, i32 } %896, 1
  store i32 %898, ptr %21, align 4
  br label %903

899:                                              ; preds = %854
  %900 = landingpad { ptr, i32 }
          cleanup
  %901 = extractvalue { ptr, i32 } %900, 0
  store ptr %901, ptr %20, align 8
  %902 = extractvalue { ptr, i32 } %900, 1
  store i32 %902, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %66) #9
  br label %903

903:                                              ; preds = %899, %895
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %67) #9
  br label %904

904:                                              ; preds = %903, %894, %872
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %59) #9
  br label %905

905:                                              ; preds = %904, %868, %864
  call void @llvm.lifetime.end.p0(i64 48, ptr %59) #9
  br label %906

906:                                              ; preds = %905, %860
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  br label %907

907:                                              ; preds = %906, %817
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #9
  br label %1166

908:                                              ; preds = %816
  br label %909

909:                                              ; preds = %908
  store i8 0, ptr %56, align 1, !tbaa !11
  br label %804, !llvm.loop !43

910:                                              ; preds = %807
  br label %1164

911:                                              ; preds = %775
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #9
  store i8 1, ptr %68, align 1, !tbaa !11
  br label %912

912:                                              ; preds = %1162, %911
  %913 = load i8, ptr %68, align 1, !tbaa !11, !range !13, !noundef !14
  %914 = trunc i8 %913 to i1
  br i1 %914, label %916, label %915

915:                                              ; preds = %912
  store i32 56, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  br label %1163

916:                                              ; preds = %912
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #9
  %917 = load ptr, ptr %52, align 8, !tbaa !5
  %918 = invoke noundef nonnull align 8 dereferenceable(81) ptr @_ZNK11PatternRule13as_ValueRangeEv(ptr noundef nonnull align 8 dereferenceable(120) %917)
          to label %919 unwind label %925

919:                                              ; preds = %916
  store ptr %918, ptr %69, align 8, !tbaa !5
  br label %920

920:                                              ; preds = %1158, %919
  %921 = load ptr, ptr %69, align 8, !tbaa !5
  %922 = load i8, ptr %68, align 1, !tbaa !11, !range !13, !noundef !14
  %923 = trunc i8 %922 to i1
  br i1 %923, label %929, label %924

924:                                              ; preds = %920
  store i32 59, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br label %1161

925:                                              ; preds = %916
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %20, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %21, align 4
  br label %1160

929:                                              ; preds = %920
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #9
  %930 = load ptr, ptr %9, align 8, !tbaa !5
  %931 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %930)
          to label %932 unwind label %977

932:                                              ; preds = %929
  store i32 %931, ptr %70, align 4, !tbaa !9
  %933 = load ptr, ptr %69, align 8, !tbaa !5
  %934 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %933, i32 0, i32 0
  %935 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %934)
          to label %936 unwind label %977

936:                                              ; preds = %932
  %937 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %935, i32 0, i32 0
  %938 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %937, i32 noundef 0)
          to label %939 unwind label %977

939:                                              ; preds = %936
  br i1 %938, label %940, label %1034

940:                                              ; preds = %939
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #9
  %941 = load ptr, ptr %9, align 8, !tbaa !5
  %942 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %941)
          to label %943 unwind label %981

943:                                              ; preds = %940
  store i32 %942, ptr %71, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %72) #9
  %944 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %74, i32 0, i32 0
  %945 = load ptr, ptr %69, align 8, !tbaa !5
  %946 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %945, i32 0, i32 0
  %947 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %946)
          to label %948 unwind label %985

948:                                              ; preds = %943
  %949 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %947, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %944, ptr align 8 %949, i64 16, i1 false), !tbaa.struct !32
  %950 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %74, i32 0, i32 1
  %951 = load ptr, ptr %41, align 8, !tbaa !5
  %952 = load i32, ptr %951, align 4, !tbaa !20
  store i32 %952, ptr %950, align 8, !tbaa !34
  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 %953 unwind label %985

953:                                              ; preds = %948
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %72, ptr noundef %73)
          to label %954 unwind label %989

954:                                              ; preds = %953
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %73) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #9
  %955 = load ptr, ptr %9, align 8, !tbaa !5
  %956 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef 14)
          to label %957 unwind label %993

957:                                              ; preds = %954
  %958 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %78, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %79, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %959 unwind label %997

959:                                              ; preds = %957
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %958, ptr noundef %79)
          to label %960 unwind label %1001

960:                                              ; preds = %959
  %961 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %78, i32 0, i32 1
  store i32 18, ptr %961, align 8, !tbaa !37
  %962 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %78, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %962, ptr noundef nonnull align 8 dereferenceable(48) %72) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %77, ptr noundef %78)
          to label %963 unwind label %1005

963:                                              ; preds = %960
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %75, ptr noundef nonnull align 8 dereferenceable(440) %955, ptr noundef nonnull align 8 dereferenceable(8) %956, ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef %77)
          to label %964 unwind label %1009

964:                                              ; preds = %963
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %77) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %78) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #9
  %965 = load ptr, ptr %9, align 8, !tbaa !5
  %966 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %81, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %966, ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %967 unwind label %1017

967:                                              ; preds = %964
  %968 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %81, i32 0, i32 1
  %969 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %969, ptr %968, align 8, !tbaa !22
  %970 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %81, i32 0, i32 2
  %971 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %971, ptr %970, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %80, ptr noundef %81)
          to label %972 unwind label %1021

972:                                              ; preds = %967
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %965, ptr noundef %80)
          to label %973 unwind label %1025

973:                                              ; preds = %972
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %80) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %81) #9
  %974 = load ptr, ptr %9, align 8, !tbaa !5
  %975 = load i32, ptr %71, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %974, i32 noundef %975)
          to label %976 unwind label %1017

976:                                              ; preds = %973
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %72) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %72) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #9
  br label %1034

977:                                              ; preds = %1154, %1055, %1034, %936, %932, %929
  %978 = landingpad { ptr, i32 }
          cleanup
  %979 = extractvalue { ptr, i32 } %978, 0
  store ptr %979, ptr %20, align 8
  %980 = extractvalue { ptr, i32 } %978, 1
  store i32 %980, ptr %21, align 4
  br label %1159

981:                                              ; preds = %940
  %982 = landingpad { ptr, i32 }
          cleanup
  %983 = extractvalue { ptr, i32 } %982, 0
  store ptr %983, ptr %20, align 8
  %984 = extractvalue { ptr, i32 } %982, 1
  store i32 %984, ptr %21, align 4
  br label %1033

985:                                              ; preds = %948, %943
  %986 = landingpad { ptr, i32 }
          cleanup
  %987 = extractvalue { ptr, i32 } %986, 0
  store ptr %987, ptr %20, align 8
  %988 = extractvalue { ptr, i32 } %986, 1
  store i32 %988, ptr %21, align 4
  br label %1032

989:                                              ; preds = %953
  %990 = landingpad { ptr, i32 }
          cleanup
  %991 = extractvalue { ptr, i32 } %990, 0
  store ptr %991, ptr %20, align 8
  %992 = extractvalue { ptr, i32 } %990, 1
  store i32 %992, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %73) #9
  br label %1032

993:                                              ; preds = %954
  %994 = landingpad { ptr, i32 }
          cleanup
  %995 = extractvalue { ptr, i32 } %994, 0
  store ptr %995, ptr %20, align 8
  %996 = extractvalue { ptr, i32 } %994, 1
  store i32 %996, ptr %21, align 4
  br label %1016

997:                                              ; preds = %957
  %998 = landingpad { ptr, i32 }
          cleanup
  %999 = extractvalue { ptr, i32 } %998, 0
  store ptr %999, ptr %20, align 8
  %1000 = extractvalue { ptr, i32 } %998, 1
  store i32 %1000, ptr %21, align 4
  br label %1015

1001:                                             ; preds = %959
  %1002 = landingpad { ptr, i32 }
          cleanup
  %1003 = extractvalue { ptr, i32 } %1002, 0
  store ptr %1003, ptr %20, align 8
  %1004 = extractvalue { ptr, i32 } %1002, 1
  store i32 %1004, ptr %21, align 4
  br label %1014

1005:                                             ; preds = %960
  %1006 = landingpad { ptr, i32 }
          cleanup
  %1007 = extractvalue { ptr, i32 } %1006, 0
  store ptr %1007, ptr %20, align 8
  %1008 = extractvalue { ptr, i32 } %1006, 1
  store i32 %1008, ptr %21, align 4
  br label %1013

1009:                                             ; preds = %963
  %1010 = landingpad { ptr, i32 }
          cleanup
  %1011 = extractvalue { ptr, i32 } %1010, 0
  store ptr %1011, ptr %20, align 8
  %1012 = extractvalue { ptr, i32 } %1010, 1
  store i32 %1012, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %77) #9
  br label %1013

1013:                                             ; preds = %1009, %1005
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %78) #9
  br label %1014

1014:                                             ; preds = %1013, %1001
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  br label %1015

1015:                                             ; preds = %1014, %997
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #9
  br label %1016

1016:                                             ; preds = %1015, %993
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #9
  br label %1031

1017:                                             ; preds = %973, %964
  %1018 = landingpad { ptr, i32 }
          cleanup
  %1019 = extractvalue { ptr, i32 } %1018, 0
  store ptr %1019, ptr %20, align 8
  %1020 = extractvalue { ptr, i32 } %1018, 1
  store i32 %1020, ptr %21, align 4
  br label %1030

1021:                                             ; preds = %967
  %1022 = landingpad { ptr, i32 }
          cleanup
  %1023 = extractvalue { ptr, i32 } %1022, 0
  store ptr %1023, ptr %20, align 8
  %1024 = extractvalue { ptr, i32 } %1022, 1
  store i32 %1024, ptr %21, align 4
  br label %1029

1025:                                             ; preds = %972
  %1026 = landingpad { ptr, i32 }
          cleanup
  %1027 = extractvalue { ptr, i32 } %1026, 0
  store ptr %1027, ptr %20, align 8
  %1028 = extractvalue { ptr, i32 } %1026, 1
  store i32 %1028, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %80) #9
  br label %1029

1029:                                             ; preds = %1025, %1021
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %81) #9
  br label %1030

1030:                                             ; preds = %1029, %1017
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  br label %1031

1031:                                             ; preds = %1030, %1016
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %72) #9
  br label %1032

1032:                                             ; preds = %1031, %989, %985
  call void @llvm.lifetime.end.p0(i64 48, ptr %72) #9
  br label %1033

1033:                                             ; preds = %1032, %981
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #9
  br label %1159

1034:                                             ; preds = %976, %939
  %1035 = load ptr, ptr %69, align 8, !tbaa !5
  %1036 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1035, i32 0, i32 1
  %1037 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %1036)
          to label %1038 unwind label %977

1038:                                             ; preds = %1034
  %1039 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %1037, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #9
  %1040 = invoke { i64, i64 } @_ZN4U1283maxEv()
          to label %1041 unwind label %1060

1041:                                             ; preds = %1038
  %1042 = getelementptr inbounds { i64, i64 }, ptr %82, i32 0, i32 0
  %1043 = extractvalue { i64, i64 } %1040, 0
  store i64 %1043, ptr %1042, align 8
  %1044 = getelementptr inbounds { i64, i64 }, ptr %82, i32 0, i32 1
  %1045 = extractvalue { i64, i64 } %1040, 1
  store i64 %1045, ptr %1044, align 8
  %1046 = invoke noundef zeroext i1 @_ZNK4U128eqERKS_(ptr noundef nonnull align 8 dereferenceable(16) %1039, ptr noundef nonnull align 8 dereferenceable(16) %82)
          to label %1047 unwind label %1060

1047:                                             ; preds = %1041
  br i1 %1046, label %1048, label %1053

1048:                                             ; preds = %1047
  %1049 = load ptr, ptr %69, align 8, !tbaa !5
  %1050 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1049, i32 0, i32 2
  %1051 = load i8, ptr %1050, align 8, !tbaa !44, !range !13, !noundef !14
  %1052 = trunc i8 %1051 to i1
  br label %1053

1053:                                             ; preds = %1048, %1047
  %1054 = phi i1 [ false, %1047 ], [ %1052, %1048 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #9
  br i1 %1054, label %1055, label %1068

1055:                                             ; preds = %1053
  %1056 = load ptr, ptr %9, align 8, !tbaa !5
  %1057 = load i32, ptr %70, align 4, !tbaa !9
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %83, i32 noundef %1057)
          to label %1058 unwind label %977

1058:                                             ; preds = %1055
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1056, ptr noundef %83)
          to label %1059 unwind label %1064

1059:                                             ; preds = %1058
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %83) #9
  br label %1154

1060:                                             ; preds = %1041, %1038
  %1061 = landingpad { ptr, i32 }
          cleanup
  %1062 = extractvalue { ptr, i32 } %1061, 0
  store ptr %1062, ptr %20, align 8
  %1063 = extractvalue { ptr, i32 } %1061, 1
  store i32 %1063, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #9
  br label %1159

1064:                                             ; preds = %1058
  %1065 = landingpad { ptr, i32 }
          cleanup
  %1066 = extractvalue { ptr, i32 } %1065, 0
  store ptr %1066, ptr %20, align 8
  %1067 = extractvalue { ptr, i32 } %1065, 1
  store i32 %1067, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %83) #9
  br label %1159

1068:                                             ; preds = %1053
  call void @llvm.lifetime.start.p0(i64 48, ptr %84) #9
  %1069 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %86, i32 0, i32 0
  %1070 = load ptr, ptr %69, align 8, !tbaa !5
  %1071 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1070, i32 0, i32 1
  %1072 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %1071)
          to label %1073 unwind label %1106

1073:                                             ; preds = %1068
  %1074 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %1072, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1069, ptr align 8 %1074, i64 16, i1 false), !tbaa.struct !32
  %1075 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %86, i32 0, i32 1
  %1076 = load ptr, ptr %41, align 8, !tbaa !5
  %1077 = load i32, ptr %1076, align 4, !tbaa !20
  store i32 %1077, ptr %1075, align 8, !tbaa !34
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %85, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %86)
          to label %1078 unwind label %1106

1078:                                             ; preds = %1073
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %84, ptr noundef %85)
          to label %1079 unwind label %1110

1079:                                             ; preds = %1078
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %85) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #9
  %1080 = load ptr, ptr %69, align 8, !tbaa !5
  %1081 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1080, i32 0, i32 2
  %1082 = load i8, ptr %1081, align 8, !tbaa !44, !range !13, !noundef !14
  %1083 = trunc i8 %1082 to i1
  %1084 = zext i1 %1083 to i64
  %1085 = select i1 %1083, i32 16, i32 17
  store i32 %1085, ptr %87, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 32, ptr %88) #9
  %1086 = load ptr, ptr %9, align 8, !tbaa !5
  %1087 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %89, i32 noundef 14)
          to label %1088 unwind label %1114

1088:                                             ; preds = %1079
  %1089 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %91, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %92, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %1090 unwind label %1118

1090:                                             ; preds = %1088
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1089, ptr noundef %92)
          to label %1091 unwind label %1122

1091:                                             ; preds = %1090
  %1092 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %91, i32 0, i32 1
  %1093 = load i32, ptr %87, align 4, !tbaa !48
  store i32 %1093, ptr %1092, align 8, !tbaa !37
  %1094 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %91, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %1094, ptr noundef nonnull align 8 dereferenceable(48) %84) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %90, ptr noundef %91)
          to label %1095 unwind label %1126

1095:                                             ; preds = %1091
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %88, ptr noundef nonnull align 8 dereferenceable(440) %1086, ptr noundef nonnull align 8 dereferenceable(8) %1087, ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef %90)
          to label %1096 unwind label %1130

1096:                                             ; preds = %1095
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %90) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %91) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  %1097 = load ptr, ptr %9, align 8, !tbaa !5
  %1098 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %94, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1098, ptr noundef nonnull align 8 dereferenceable(32) %88)
          to label %1099 unwind label %1138

1099:                                             ; preds = %1096
  %1100 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %94, i32 0, i32 1
  %1101 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1101, ptr %1100, align 8, !tbaa !22
  %1102 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %94, i32 0, i32 2
  %1103 = load i32, ptr %70, align 4, !tbaa !9
  store i32 %1103, ptr %1102, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %93, ptr noundef %94)
          to label %1104 unwind label %1142

1104:                                             ; preds = %1099
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1097, ptr noundef %93)
          to label %1105 unwind label %1146

1105:                                             ; preds = %1104
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %93) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %94) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %84) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %84) #9
  br label %1154

1106:                                             ; preds = %1073, %1068
  %1107 = landingpad { ptr, i32 }
          cleanup
  %1108 = extractvalue { ptr, i32 } %1107, 0
  store ptr %1108, ptr %20, align 8
  %1109 = extractvalue { ptr, i32 } %1107, 1
  store i32 %1109, ptr %21, align 4
  br label %1153

1110:                                             ; preds = %1078
  %1111 = landingpad { ptr, i32 }
          cleanup
  %1112 = extractvalue { ptr, i32 } %1111, 0
  store ptr %1112, ptr %20, align 8
  %1113 = extractvalue { ptr, i32 } %1111, 1
  store i32 %1113, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %85) #9
  br label %1153

1114:                                             ; preds = %1079
  %1115 = landingpad { ptr, i32 }
          cleanup
  %1116 = extractvalue { ptr, i32 } %1115, 0
  store ptr %1116, ptr %20, align 8
  %1117 = extractvalue { ptr, i32 } %1115, 1
  store i32 %1117, ptr %21, align 4
  br label %1137

1118:                                             ; preds = %1088
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %20, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %21, align 4
  br label %1136

1122:                                             ; preds = %1090
  %1123 = landingpad { ptr, i32 }
          cleanup
  %1124 = extractvalue { ptr, i32 } %1123, 0
  store ptr %1124, ptr %20, align 8
  %1125 = extractvalue { ptr, i32 } %1123, 1
  store i32 %1125, ptr %21, align 4
  br label %1135

1126:                                             ; preds = %1091
  %1127 = landingpad { ptr, i32 }
          cleanup
  %1128 = extractvalue { ptr, i32 } %1127, 0
  store ptr %1128, ptr %20, align 8
  %1129 = extractvalue { ptr, i32 } %1127, 1
  store i32 %1129, ptr %21, align 4
  br label %1134

1130:                                             ; preds = %1095
  %1131 = landingpad { ptr, i32 }
          cleanup
  %1132 = extractvalue { ptr, i32 } %1131, 0
  store ptr %1132, ptr %20, align 8
  %1133 = extractvalue { ptr, i32 } %1131, 1
  store i32 %1133, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %90) #9
  br label %1134

1134:                                             ; preds = %1130, %1126
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %91) #9
  br label %1135

1135:                                             ; preds = %1134, %1122
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  br label %1136

1136:                                             ; preds = %1135, %1118
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #9
  br label %1137

1137:                                             ; preds = %1136, %1114
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  br label %1152

1138:                                             ; preds = %1096
  %1139 = landingpad { ptr, i32 }
          cleanup
  %1140 = extractvalue { ptr, i32 } %1139, 0
  store ptr %1140, ptr %20, align 8
  %1141 = extractvalue { ptr, i32 } %1139, 1
  store i32 %1141, ptr %21, align 4
  br label %1151

1142:                                             ; preds = %1099
  %1143 = landingpad { ptr, i32 }
          cleanup
  %1144 = extractvalue { ptr, i32 } %1143, 0
  store ptr %1144, ptr %20, align 8
  %1145 = extractvalue { ptr, i32 } %1143, 1
  store i32 %1145, ptr %21, align 4
  br label %1150

1146:                                             ; preds = %1104
  %1147 = landingpad { ptr, i32 }
          cleanup
  %1148 = extractvalue { ptr, i32 } %1147, 0
  store ptr %1148, ptr %20, align 8
  %1149 = extractvalue { ptr, i32 } %1147, 1
  store i32 %1149, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %93) #9
  br label %1150

1150:                                             ; preds = %1146, %1142
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %94) #9
  br label %1151

1151:                                             ; preds = %1150, %1138
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #9
  br label %1152

1152:                                             ; preds = %1151, %1137
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %84) #9
  br label %1153

1153:                                             ; preds = %1152, %1110, %1106
  call void @llvm.lifetime.end.p0(i64 48, ptr %84) #9
  br label %1159

1154:                                             ; preds = %1105, %1059
  %1155 = load ptr, ptr %9, align 8, !tbaa !5
  %1156 = load i32, ptr %70, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %1155, i32 noundef %1156)
          to label %1157 unwind label %977

1157:                                             ; preds = %1154
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #9
  br label %1158

1158:                                             ; preds = %1157
  store i8 0, ptr %68, align 1, !tbaa !11
  br label %920, !llvm.loop !49

1159:                                             ; preds = %1153, %1064, %1060, %1033, %977
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #9
  br label %1160

1160:                                             ; preds = %1159, %925
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  br label %1166

1161:                                             ; preds = %924
  br label %1162

1162:                                             ; preds = %1161
  store i8 0, ptr %68, align 1, !tbaa !11
  br label %912, !llvm.loop !50

1163:                                             ; preds = %915
  br label %1164

1164:                                             ; preds = %1163, %910, %802
  br label %1165

1165:                                             ; preds = %1164
  store i8 0, ptr %51, align 1, !tbaa !11
  br label %768, !llvm.loop !51

1166:                                             ; preds = %1160, %907, %797, %796, %776
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #9
  br label %2487

1167:                                             ; preds = %771
  br label %1168

1168:                                             ; preds = %1167
  store i8 0, ptr %51, align 1, !tbaa !11
  br label %762, !llvm.loop !52

1169:                                             ; preds = %765
  br label %2485

1170:                                             ; preds = %668, %668, %668, %668, %668, %668
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #9
  store i8 1, ptr %95, align 1, !tbaa !11
  br label %1171

1171:                                             ; preds = %1593, %1170
  %1172 = load i8, ptr %95, align 1, !tbaa !11, !range !13, !noundef !14
  %1173 = trunc i8 %1172 to i1
  br i1 %1173, label %1175, label %1174

1174:                                             ; preds = %1171
  store i32 62, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #9
  br label %1594

1175:                                             ; preds = %1171
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #9
  %1176 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %1176, ptr %96, align 8, !tbaa !5
  br label %1177

1177:                                             ; preds = %1590, %1175
  %1178 = load i8, ptr %95, align 1, !tbaa !11, !range !13, !noundef !14
  %1179 = trunc i8 %1178 to i1
  br i1 %1179, label %1181, label %1180

1180:                                             ; preds = %1177
  store i32 65, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  br label %1592

1181:                                             ; preds = %1177
  %1182 = load ptr, ptr %96, align 8, !tbaa !5
  %1183 = invoke noundef i32 @_ZNK11PatternRule3tagEv(ptr noundef nonnull align 8 dereferenceable(120) %1182)
          to label %1184 unwind label %1185

1184:                                             ; preds = %1181
  switch i32 %1183, label %1190 [
    i32 0, label %1189
    i32 5, label %1212
    i32 6, label %1324
  ]

1185:                                             ; preds = %1196, %1181
  %1186 = landingpad { ptr, i32 }
          cleanup
  %1187 = extractvalue { ptr, i32 } %1186, 0
  store ptr %1187, ptr %20, align 8
  %1188 = extractvalue { ptr, i32 } %1186, 1
  store i32 %1188, ptr %21, align 4
  br label %1591

1189:                                             ; preds = %1184
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 2534, ptr noundef @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

1190:                                             ; preds = %1184
  br label %1191

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

1193:                                             ; preds = %1191
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 1 dereferenceable(1) %99) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef %98)
          to label %1194 unwind label %1201

1194:                                             ; preds = %1193
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  %1195 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1195, ptr noundef @.str.10)
          to label %1196 unwind label %1206

1196:                                             ; preds = %1194
  invoke void @__cxa_throw(ptr %1195, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %1185

1197:                                             ; preds = %1191
  %1198 = landingpad { ptr, i32 }
          cleanup
  %1199 = extractvalue { ptr, i32 } %1198, 0
  store ptr %1199, ptr %20, align 8
  %1200 = extractvalue { ptr, i32 } %1198, 1
  store i32 %1200, ptr %21, align 4
  br label %1205

1201:                                             ; preds = %1193
  %1202 = landingpad { ptr, i32 }
          cleanup
  %1203 = extractvalue { ptr, i32 } %1202, 0
  store ptr %1203, ptr %20, align 8
  %1204 = extractvalue { ptr, i32 } %1202, 1
  store i32 %1204, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #9
  br label %1205

1205:                                             ; preds = %1201, %1197
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  br label %1591

1206:                                             ; preds = %1194
  %1207 = landingpad { ptr, i32 }
          cleanup
  %1208 = extractvalue { ptr, i32 } %1207, 0
  store ptr %1208, ptr %20, align 8
  %1209 = extractvalue { ptr, i32 } %1207, 1
  store i32 %1209, ptr %21, align 4
  call void @__cxa_free_exception(ptr %1195) #9
  br label %1591

1210:                                             ; No predecessors!
  br label %1211

1211:                                             ; preds = %1210
  br label %1589

1212:                                             ; preds = %1184
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #9
  store i8 1, ptr %100, align 1, !tbaa !11
  br label %1213

1213:                                             ; preds = %1322, %1212
  %1214 = load i8, ptr %100, align 1, !tbaa !11, !range !13, !noundef !14
  %1215 = trunc i8 %1214 to i1
  br i1 %1215, label %1217, label %1216

1216:                                             ; preds = %1213
  store i32 71, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #9
  br label %1323

1217:                                             ; preds = %1213
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #9
  %1218 = load ptr, ptr %96, align 8, !tbaa !5
  %1219 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %1218)
          to label %1220 unwind label %1226

1220:                                             ; preds = %1217
  store ptr %1219, ptr %101, align 8, !tbaa !5
  br label %1221

1221:                                             ; preds = %1266, %1220
  %1222 = load ptr, ptr %101, align 8, !tbaa !5
  %1223 = load i8, ptr %100, align 1, !tbaa !11, !range !13, !noundef !14
  %1224 = trunc i8 %1223 to i1
  br i1 %1224, label %1230, label %1225

1225:                                             ; preds = %1221
  store i32 74, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  br label %1321

1226:                                             ; preds = %1217
  %1227 = landingpad { ptr, i32 }
          cleanup
  %1228 = extractvalue { ptr, i32 } %1227, 0
  store ptr %1228, ptr %20, align 8
  %1229 = extractvalue { ptr, i32 } %1227, 1
  store i32 %1229, ptr %21, align 4
  br label %1320

1230:                                             ; preds = %1221
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #9
  %1231 = load ptr, ptr %9, align 8, !tbaa !5
  %1232 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %1231)
          to label %1233 unwind label %1267

1233:                                             ; preds = %1230
  store i32 %1232, ptr %102, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %103) #9
  %1234 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %105, i32 0, i32 0
  %1235 = load ptr, ptr %101, align 8, !tbaa !5
  %1236 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %1235)
          to label %1237 unwind label %1271

1237:                                             ; preds = %1233
  %1238 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %1236, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1234, ptr align 8 %1238, i64 16, i1 false), !tbaa.struct !32
  %1239 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %105, i32 0, i32 1
  %1240 = load ptr, ptr %41, align 8, !tbaa !5
  %1241 = load i32, ptr %1240, align 4, !tbaa !20
  store i32 %1241, ptr %1239, align 8, !tbaa !53
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %104, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %105)
          to label %1242 unwind label %1271

1242:                                             ; preds = %1237
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %103, ptr noundef %104)
          to label %1243 unwind label %1275

1243:                                             ; preds = %1242
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %104) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %106) #9
  %1244 = load ptr, ptr %9, align 8, !tbaa !5
  %1245 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %107, i32 noundef 14)
          to label %1246 unwind label %1279

1246:                                             ; preds = %1243
  %1247 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %109, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %110, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %1248 unwind label %1283

1248:                                             ; preds = %1246
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1247, ptr noundef %110)
          to label %1249 unwind label %1287

1249:                                             ; preds = %1248
  %1250 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %109, i32 0, i32 1
  store i32 14, ptr %1250, align 8, !tbaa !37
  %1251 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %109, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %1251, ptr noundef nonnull align 8 dereferenceable(48) %103) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %108, ptr noundef %109)
          to label %1252 unwind label %1291

1252:                                             ; preds = %1249
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %106, ptr noundef nonnull align 8 dereferenceable(440) %1244, ptr noundef nonnull align 8 dereferenceable(8) %1245, ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef %108)
          to label %1253 unwind label %1295

1253:                                             ; preds = %1252
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %108) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %109) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #9
  %1254 = load ptr, ptr %9, align 8, !tbaa !5
  %1255 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %112, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1255, ptr noundef nonnull align 8 dereferenceable(32) %106)
          to label %1256 unwind label %1303

1256:                                             ; preds = %1253
  %1257 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %112, i32 0, i32 1
  %1258 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %1258, ptr %1257, align 8, !tbaa !22
  %1259 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %112, i32 0, i32 2
  %1260 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1260, ptr %1259, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %111, ptr noundef %112)
          to label %1261 unwind label %1307

1261:                                             ; preds = %1256
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1254, ptr noundef %111)
          to label %1262 unwind label %1311

1262:                                             ; preds = %1261
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %111) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %112) #9
  %1263 = load ptr, ptr %9, align 8, !tbaa !5
  %1264 = load i32, ptr %102, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %1263, i32 noundef %1264)
          to label %1265 unwind label %1303

1265:                                             ; preds = %1262
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %103) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %103) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #9
  br label %1266

1266:                                             ; preds = %1265
  store i8 0, ptr %100, align 1, !tbaa !11
  br label %1221, !llvm.loop !56

1267:                                             ; preds = %1230
  %1268 = landingpad { ptr, i32 }
          cleanup
  %1269 = extractvalue { ptr, i32 } %1268, 0
  store ptr %1269, ptr %20, align 8
  %1270 = extractvalue { ptr, i32 } %1268, 1
  store i32 %1270, ptr %21, align 4
  br label %1319

1271:                                             ; preds = %1237, %1233
  %1272 = landingpad { ptr, i32 }
          cleanup
  %1273 = extractvalue { ptr, i32 } %1272, 0
  store ptr %1273, ptr %20, align 8
  %1274 = extractvalue { ptr, i32 } %1272, 1
  store i32 %1274, ptr %21, align 4
  br label %1318

1275:                                             ; preds = %1242
  %1276 = landingpad { ptr, i32 }
          cleanup
  %1277 = extractvalue { ptr, i32 } %1276, 0
  store ptr %1277, ptr %20, align 8
  %1278 = extractvalue { ptr, i32 } %1276, 1
  store i32 %1278, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %104) #9
  br label %1318

1279:                                             ; preds = %1243
  %1280 = landingpad { ptr, i32 }
          cleanup
  %1281 = extractvalue { ptr, i32 } %1280, 0
  store ptr %1281, ptr %20, align 8
  %1282 = extractvalue { ptr, i32 } %1280, 1
  store i32 %1282, ptr %21, align 4
  br label %1302

1283:                                             ; preds = %1246
  %1284 = landingpad { ptr, i32 }
          cleanup
  %1285 = extractvalue { ptr, i32 } %1284, 0
  store ptr %1285, ptr %20, align 8
  %1286 = extractvalue { ptr, i32 } %1284, 1
  store i32 %1286, ptr %21, align 4
  br label %1301

1287:                                             ; preds = %1248
  %1288 = landingpad { ptr, i32 }
          cleanup
  %1289 = extractvalue { ptr, i32 } %1288, 0
  store ptr %1289, ptr %20, align 8
  %1290 = extractvalue { ptr, i32 } %1288, 1
  store i32 %1290, ptr %21, align 4
  br label %1300

1291:                                             ; preds = %1249
  %1292 = landingpad { ptr, i32 }
          cleanup
  %1293 = extractvalue { ptr, i32 } %1292, 0
  store ptr %1293, ptr %20, align 8
  %1294 = extractvalue { ptr, i32 } %1292, 1
  store i32 %1294, ptr %21, align 4
  br label %1299

1295:                                             ; preds = %1252
  %1296 = landingpad { ptr, i32 }
          cleanup
  %1297 = extractvalue { ptr, i32 } %1296, 0
  store ptr %1297, ptr %20, align 8
  %1298 = extractvalue { ptr, i32 } %1296, 1
  store i32 %1298, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %108) #9
  br label %1299

1299:                                             ; preds = %1295, %1291
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %109) #9
  br label %1300

1300:                                             ; preds = %1299, %1287
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #9
  br label %1301

1301:                                             ; preds = %1300, %1283
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #9
  br label %1302

1302:                                             ; preds = %1301, %1279
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #9
  br label %1317

1303:                                             ; preds = %1262, %1253
  %1304 = landingpad { ptr, i32 }
          cleanup
  %1305 = extractvalue { ptr, i32 } %1304, 0
  store ptr %1305, ptr %20, align 8
  %1306 = extractvalue { ptr, i32 } %1304, 1
  store i32 %1306, ptr %21, align 4
  br label %1316

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

1311:                                             ; preds = %1261
  %1312 = landingpad { ptr, i32 }
          cleanup
  %1313 = extractvalue { ptr, i32 } %1312, 0
  store ptr %1313, ptr %20, align 8
  %1314 = extractvalue { ptr, i32 } %1312, 1
  store i32 %1314, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %111) #9
  br label %1315

1315:                                             ; preds = %1311, %1307
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %112) #9
  br label %1316

1316:                                             ; preds = %1315, %1303
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %106) #9
  br label %1317

1317:                                             ; preds = %1316, %1302
  call void @llvm.lifetime.end.p0(i64 32, ptr %106) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %103) #9
  br label %1318

1318:                                             ; preds = %1317, %1275, %1271
  call void @llvm.lifetime.end.p0(i64 48, ptr %103) #9
  br label %1319

1319:                                             ; preds = %1318, %1267
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #9
  br label %1320

1320:                                             ; preds = %1319, %1226
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #9
  br label %1591

1321:                                             ; preds = %1225
  br label %1322

1322:                                             ; preds = %1321
  store i8 0, ptr %100, align 1, !tbaa !11
  br label %1213, !llvm.loop !57

1323:                                             ; preds = %1216
  br label %1589

1324:                                             ; preds = %1184
  call void @llvm.lifetime.start.p0(i64 1, ptr %113) #9
  store i8 1, ptr %113, align 1, !tbaa !11
  br label %1325

1325:                                             ; preds = %1587, %1324
  %1326 = load i8, ptr %113, align 1, !tbaa !11, !range !13, !noundef !14
  %1327 = trunc i8 %1326 to i1
  br i1 %1327, label %1329, label %1328

1328:                                             ; preds = %1325
  store i32 77, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #9
  br label %1588

1329:                                             ; preds = %1325
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #9
  %1330 = load ptr, ptr %96, align 8, !tbaa !5
  %1331 = invoke noundef nonnull align 8 dereferenceable(81) ptr @_ZNK11PatternRule13as_ValueRangeEv(ptr noundef nonnull align 8 dereferenceable(120) %1330)
          to label %1332 unwind label %1338

1332:                                             ; preds = %1329
  store ptr %1331, ptr %114, align 8, !tbaa !5
  br label %1333

1333:                                             ; preds = %1583, %1332
  %1334 = load ptr, ptr %114, align 8, !tbaa !5
  %1335 = load i8, ptr %113, align 1, !tbaa !11, !range !13, !noundef !14
  %1336 = trunc i8 %1335 to i1
  br i1 %1336, label %1342, label %1337

1337:                                             ; preds = %1333
  store i32 80, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  br label %1586

1338:                                             ; preds = %1329
  %1339 = landingpad { ptr, i32 }
          cleanup
  %1340 = extractvalue { ptr, i32 } %1339, 0
  store ptr %1340, ptr %20, align 8
  %1341 = extractvalue { ptr, i32 } %1339, 1
  store i32 %1341, ptr %21, align 4
  br label %1585

1342:                                             ; preds = %1333
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #9
  %1343 = load ptr, ptr %9, align 8, !tbaa !5
  %1344 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %1343)
          to label %1345 unwind label %1397

1345:                                             ; preds = %1342
  store i32 %1344, ptr %115, align 4, !tbaa !9
  %1346 = load ptr, ptr %114, align 8, !tbaa !5
  %1347 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1346, i32 0, i32 0
  %1348 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %1347)
          to label %1349 unwind label %1397

1349:                                             ; preds = %1345
  %1350 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %1348, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %116) #9
  %1351 = invoke { i64, i64 } @_ZN4S1283minEv()
          to label %1352 unwind label %1401

1352:                                             ; preds = %1349
  %1353 = getelementptr inbounds %class.S128, ptr %116, i32 0, i32 0
  %1354 = getelementptr inbounds { i64, i64 }, ptr %1353, i32 0, i32 0
  %1355 = extractvalue { i64, i64 } %1351, 0
  store i64 %1355, ptr %1354, align 8
  %1356 = getelementptr inbounds { i64, i64 }, ptr %1353, i32 0, i32 1
  %1357 = extractvalue { i64, i64 } %1351, 1
  store i64 %1357, ptr %1356, align 8
  %1358 = invoke noundef zeroext i1 @_ZNK4S128neERKS_(ptr noundef nonnull align 8 dereferenceable(16) %1350, ptr noundef nonnull align 8 dereferenceable(16) %116)
          to label %1359 unwind label %1401

1359:                                             ; preds = %1352
  call void @llvm.lifetime.end.p0(i64 16, ptr %116) #9
  br i1 %1358, label %1360, label %1458

1360:                                             ; preds = %1359
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #9
  %1361 = load ptr, ptr %9, align 8, !tbaa !5
  %1362 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %1361)
          to label %1363 unwind label %1405

1363:                                             ; preds = %1360
  store i32 %1362, ptr %117, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %118) #9
  %1364 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %120, i32 0, i32 0
  %1365 = load ptr, ptr %114, align 8, !tbaa !5
  %1366 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1365, i32 0, i32 0
  %1367 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %1366)
          to label %1368 unwind label %1409

1368:                                             ; preds = %1363
  %1369 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %1367, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1364, ptr align 8 %1369, i64 16, i1 false), !tbaa.struct !32
  %1370 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %120, i32 0, i32 1
  %1371 = load ptr, ptr %41, align 8, !tbaa !5
  %1372 = load i32, ptr %1371, align 4, !tbaa !20
  store i32 %1372, ptr %1370, align 8, !tbaa !53
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %119, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %120)
          to label %1373 unwind label %1409

1373:                                             ; preds = %1368
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %118, ptr noundef %119)
          to label %1374 unwind label %1413

1374:                                             ; preds = %1373
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %119) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %121) #9
  %1375 = load ptr, ptr %9, align 8, !tbaa !5
  %1376 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %122, i32 noundef 14)
          to label %1377 unwind label %1417

1377:                                             ; preds = %1374
  %1378 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %124, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %125, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %1379 unwind label %1421

1379:                                             ; preds = %1377
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1378, ptr noundef %125)
          to label %1380 unwind label %1425

1380:                                             ; preds = %1379
  %1381 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %124, i32 0, i32 1
  store i32 18, ptr %1381, align 8, !tbaa !37
  %1382 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %124, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %1382, ptr noundef nonnull align 8 dereferenceable(48) %118) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %123, ptr noundef %124)
          to label %1383 unwind label %1429

1383:                                             ; preds = %1380
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %121, ptr noundef nonnull align 8 dereferenceable(440) %1375, ptr noundef nonnull align 8 dereferenceable(8) %1376, ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef %123)
          to label %1384 unwind label %1433

1384:                                             ; preds = %1383
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %123) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %124) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  %1385 = load ptr, ptr %9, align 8, !tbaa !5
  %1386 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %127, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1386, ptr noundef nonnull align 8 dereferenceable(32) %121)
          to label %1387 unwind label %1441

1387:                                             ; preds = %1384
  %1388 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %127, i32 0, i32 1
  %1389 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1389, ptr %1388, align 8, !tbaa !22
  %1390 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %127, i32 0, i32 2
  %1391 = load i32, ptr %117, align 4, !tbaa !9
  store i32 %1391, ptr %1390, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %126, ptr noundef %127)
          to label %1392 unwind label %1445

1392:                                             ; preds = %1387
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1385, ptr noundef %126)
          to label %1393 unwind label %1449

1393:                                             ; preds = %1392
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %126) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %127) #9
  %1394 = load ptr, ptr %9, align 8, !tbaa !5
  %1395 = load i32, ptr %117, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %1394, i32 noundef %1395)
          to label %1396 unwind label %1441

1396:                                             ; preds = %1393
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %118) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %118) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #9
  br label %1458

1397:                                             ; preds = %1579, %1480, %1458, %1345, %1342
  %1398 = landingpad { ptr, i32 }
          cleanup
  %1399 = extractvalue { ptr, i32 } %1398, 0
  store ptr %1399, ptr %20, align 8
  %1400 = extractvalue { ptr, i32 } %1398, 1
  store i32 %1400, ptr %21, align 4
  br label %1584

1401:                                             ; preds = %1352, %1349
  %1402 = landingpad { ptr, i32 }
          cleanup
  %1403 = extractvalue { ptr, i32 } %1402, 0
  store ptr %1403, ptr %20, align 8
  %1404 = extractvalue { ptr, i32 } %1402, 1
  store i32 %1404, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %116) #9
  br label %1584

1405:                                             ; preds = %1360
  %1406 = landingpad { ptr, i32 }
          cleanup
  %1407 = extractvalue { ptr, i32 } %1406, 0
  store ptr %1407, ptr %20, align 8
  %1408 = extractvalue { ptr, i32 } %1406, 1
  store i32 %1408, ptr %21, align 4
  br label %1457

1409:                                             ; preds = %1368, %1363
  %1410 = landingpad { ptr, i32 }
          cleanup
  %1411 = extractvalue { ptr, i32 } %1410, 0
  store ptr %1411, ptr %20, align 8
  %1412 = extractvalue { ptr, i32 } %1410, 1
  store i32 %1412, ptr %21, align 4
  br label %1456

1413:                                             ; preds = %1373
  %1414 = landingpad { ptr, i32 }
          cleanup
  %1415 = extractvalue { ptr, i32 } %1414, 0
  store ptr %1415, ptr %20, align 8
  %1416 = extractvalue { ptr, i32 } %1414, 1
  store i32 %1416, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %119) #9
  br label %1456

1417:                                             ; preds = %1374
  %1418 = landingpad { ptr, i32 }
          cleanup
  %1419 = extractvalue { ptr, i32 } %1418, 0
  store ptr %1419, ptr %20, align 8
  %1420 = extractvalue { ptr, i32 } %1418, 1
  store i32 %1420, ptr %21, align 4
  br label %1440

1421:                                             ; preds = %1377
  %1422 = landingpad { ptr, i32 }
          cleanup
  %1423 = extractvalue { ptr, i32 } %1422, 0
  store ptr %1423, ptr %20, align 8
  %1424 = extractvalue { ptr, i32 } %1422, 1
  store i32 %1424, ptr %21, align 4
  br label %1439

1425:                                             ; preds = %1379
  %1426 = landingpad { ptr, i32 }
          cleanup
  %1427 = extractvalue { ptr, i32 } %1426, 0
  store ptr %1427, ptr %20, align 8
  %1428 = extractvalue { ptr, i32 } %1426, 1
  store i32 %1428, ptr %21, align 4
  br label %1438

1429:                                             ; preds = %1380
  %1430 = landingpad { ptr, i32 }
          cleanup
  %1431 = extractvalue { ptr, i32 } %1430, 0
  store ptr %1431, ptr %20, align 8
  %1432 = extractvalue { ptr, i32 } %1430, 1
  store i32 %1432, ptr %21, align 4
  br label %1437

1433:                                             ; preds = %1383
  %1434 = landingpad { ptr, i32 }
          cleanup
  %1435 = extractvalue { ptr, i32 } %1434, 0
  store ptr %1435, ptr %20, align 8
  %1436 = extractvalue { ptr, i32 } %1434, 1
  store i32 %1436, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %123) #9
  br label %1437

1437:                                             ; preds = %1433, %1429
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %124) #9
  br label %1438

1438:                                             ; preds = %1437, %1425
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #9
  br label %1439

1439:                                             ; preds = %1438, %1421
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #9
  br label %1440

1440:                                             ; preds = %1439, %1417
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  br label %1455

1441:                                             ; preds = %1393, %1384
  %1442 = landingpad { ptr, i32 }
          cleanup
  %1443 = extractvalue { ptr, i32 } %1442, 0
  store ptr %1443, ptr %20, align 8
  %1444 = extractvalue { ptr, i32 } %1442, 1
  store i32 %1444, ptr %21, align 4
  br label %1454

1445:                                             ; preds = %1387
  %1446 = landingpad { ptr, i32 }
          cleanup
  %1447 = extractvalue { ptr, i32 } %1446, 0
  store ptr %1447, ptr %20, align 8
  %1448 = extractvalue { ptr, i32 } %1446, 1
  store i32 %1448, ptr %21, align 4
  br label %1453

1449:                                             ; preds = %1392
  %1450 = landingpad { ptr, i32 }
          cleanup
  %1451 = extractvalue { ptr, i32 } %1450, 0
  store ptr %1451, ptr %20, align 8
  %1452 = extractvalue { ptr, i32 } %1450, 1
  store i32 %1452, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %126) #9
  br label %1453

1453:                                             ; preds = %1449, %1445
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %127) #9
  br label %1454

1454:                                             ; preds = %1453, %1441
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  br label %1455

1455:                                             ; preds = %1454, %1440
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %118) #9
  br label %1456

1456:                                             ; preds = %1455, %1413, %1409
  call void @llvm.lifetime.end.p0(i64 48, ptr %118) #9
  br label %1457

1457:                                             ; preds = %1456, %1405
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #9
  br label %1584

1458:                                             ; preds = %1396, %1359
  %1459 = load ptr, ptr %114, align 8, !tbaa !5
  %1460 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1459, i32 0, i32 1
  %1461 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %1460)
          to label %1462 unwind label %1397

1462:                                             ; preds = %1458
  %1463 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %1461, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %128) #9
  %1464 = invoke { i64, i64 } @_ZN4S1283maxEv()
          to label %1465 unwind label %1485

1465:                                             ; preds = %1462
  %1466 = getelementptr inbounds %class.S128, ptr %128, i32 0, i32 0
  %1467 = getelementptr inbounds { i64, i64 }, ptr %1466, i32 0, i32 0
  %1468 = extractvalue { i64, i64 } %1464, 0
  store i64 %1468, ptr %1467, align 8
  %1469 = getelementptr inbounds { i64, i64 }, ptr %1466, i32 0, i32 1
  %1470 = extractvalue { i64, i64 } %1464, 1
  store i64 %1470, ptr %1469, align 8
  %1471 = invoke noundef zeroext i1 @_ZNK4S128eqERKS_(ptr noundef nonnull align 8 dereferenceable(16) %1463, ptr noundef nonnull align 8 dereferenceable(16) %128)
          to label %1472 unwind label %1485

1472:                                             ; preds = %1465
  br i1 %1471, label %1473, label %1478

1473:                                             ; preds = %1472
  %1474 = load ptr, ptr %114, align 8, !tbaa !5
  %1475 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1474, i32 0, i32 2
  %1476 = load i8, ptr %1475, align 8, !tbaa !44, !range !13, !noundef !14
  %1477 = trunc i8 %1476 to i1
  br label %1478

1478:                                             ; preds = %1473, %1472
  %1479 = phi i1 [ false, %1472 ], [ %1477, %1473 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr %128) #9
  br i1 %1479, label %1480, label %1493

1480:                                             ; preds = %1478
  %1481 = load ptr, ptr %9, align 8, !tbaa !5
  %1482 = load i32, ptr %115, align 4, !tbaa !9
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %129, i32 noundef %1482)
          to label %1483 unwind label %1397

1483:                                             ; preds = %1480
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1481, ptr noundef %129)
          to label %1484 unwind label %1489

1484:                                             ; preds = %1483
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %129) #9
  br label %1579

1485:                                             ; preds = %1465, %1462
  %1486 = landingpad { ptr, i32 }
          cleanup
  %1487 = extractvalue { ptr, i32 } %1486, 0
  store ptr %1487, ptr %20, align 8
  %1488 = extractvalue { ptr, i32 } %1486, 1
  store i32 %1488, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %128) #9
  br label %1584

1489:                                             ; preds = %1483
  %1490 = landingpad { ptr, i32 }
          cleanup
  %1491 = extractvalue { ptr, i32 } %1490, 0
  store ptr %1491, ptr %20, align 8
  %1492 = extractvalue { ptr, i32 } %1490, 1
  store i32 %1492, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %129) #9
  br label %1584

1493:                                             ; preds = %1478
  call void @llvm.lifetime.start.p0(i64 48, ptr %130) #9
  %1494 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %132, i32 0, i32 0
  %1495 = load ptr, ptr %114, align 8, !tbaa !5
  %1496 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1495, i32 0, i32 1
  %1497 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %1496)
          to label %1498 unwind label %1531

1498:                                             ; preds = %1493
  %1499 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %1497, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1494, ptr align 8 %1499, i64 16, i1 false), !tbaa.struct !32
  %1500 = getelementptr inbounds %"struct.MIR::Constant::Data_Int", ptr %132, i32 0, i32 1
  %1501 = load ptr, ptr %41, align 8, !tbaa !5
  %1502 = load i32, ptr %1501, align 4, !tbaa !20
  store i32 %1502, ptr %1500, align 8, !tbaa !53
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %131, ptr noundef byval(%"struct.MIR::Constant::Data_Int") align 8 %132)
          to label %1503 unwind label %1531

1503:                                             ; preds = %1498
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %130, ptr noundef %131)
          to label %1504 unwind label %1535

1504:                                             ; preds = %1503
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %131) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #9
  %1505 = load ptr, ptr %114, align 8, !tbaa !5
  %1506 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1505, i32 0, i32 2
  %1507 = load i8, ptr %1506, align 8, !tbaa !44, !range !13, !noundef !14
  %1508 = trunc i8 %1507 to i1
  %1509 = zext i1 %1508 to i64
  %1510 = select i1 %1508, i32 16, i32 17
  store i32 %1510, ptr %133, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 32, ptr %134) #9
  %1511 = load ptr, ptr %9, align 8, !tbaa !5
  %1512 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %135, i32 noundef 14)
          to label %1513 unwind label %1539

1513:                                             ; preds = %1504
  %1514 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %137, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %138, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %1515 unwind label %1543

1515:                                             ; preds = %1513
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1514, ptr noundef %138)
          to label %1516 unwind label %1547

1516:                                             ; preds = %1515
  %1517 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %137, i32 0, i32 1
  %1518 = load i32, ptr %133, align 4, !tbaa !48
  store i32 %1518, ptr %1517, align 8, !tbaa !37
  %1519 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %137, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %1519, ptr noundef nonnull align 8 dereferenceable(48) %130) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %136, ptr noundef %137)
          to label %1520 unwind label %1551

1520:                                             ; preds = %1516
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %134, ptr noundef nonnull align 8 dereferenceable(440) %1511, ptr noundef nonnull align 8 dereferenceable(8) %1512, ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef %136)
          to label %1521 unwind label %1555

1521:                                             ; preds = %1520
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %136) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %137) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %135) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #9
  %1522 = load ptr, ptr %9, align 8, !tbaa !5
  %1523 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %140, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1523, ptr noundef nonnull align 8 dereferenceable(32) %134)
          to label %1524 unwind label %1563

1524:                                             ; preds = %1521
  %1525 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %140, i32 0, i32 1
  %1526 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1526, ptr %1525, align 8, !tbaa !22
  %1527 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %140, i32 0, i32 2
  %1528 = load i32, ptr %115, align 4, !tbaa !9
  store i32 %1528, ptr %1527, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %139, ptr noundef %140)
          to label %1529 unwind label %1567

1529:                                             ; preds = %1524
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1522, ptr noundef %139)
          to label %1530 unwind label %1571

1530:                                             ; preds = %1529
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %139) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %140) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %130) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %130) #9
  br label %1579

1531:                                             ; preds = %1498, %1493
  %1532 = landingpad { ptr, i32 }
          cleanup
  %1533 = extractvalue { ptr, i32 } %1532, 0
  store ptr %1533, ptr %20, align 8
  %1534 = extractvalue { ptr, i32 } %1532, 1
  store i32 %1534, ptr %21, align 4
  br label %1578

1535:                                             ; preds = %1503
  %1536 = landingpad { ptr, i32 }
          cleanup
  %1537 = extractvalue { ptr, i32 } %1536, 0
  store ptr %1537, ptr %20, align 8
  %1538 = extractvalue { ptr, i32 } %1536, 1
  store i32 %1538, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %131) #9
  br label %1578

1539:                                             ; preds = %1504
  %1540 = landingpad { ptr, i32 }
          cleanup
  %1541 = extractvalue { ptr, i32 } %1540, 0
  store ptr %1541, ptr %20, align 8
  %1542 = extractvalue { ptr, i32 } %1540, 1
  store i32 %1542, ptr %21, align 4
  br label %1562

1543:                                             ; preds = %1513
  %1544 = landingpad { ptr, i32 }
          cleanup
  %1545 = extractvalue { ptr, i32 } %1544, 0
  store ptr %1545, ptr %20, align 8
  %1546 = extractvalue { ptr, i32 } %1544, 1
  store i32 %1546, ptr %21, align 4
  br label %1561

1547:                                             ; preds = %1515
  %1548 = landingpad { ptr, i32 }
          cleanup
  %1549 = extractvalue { ptr, i32 } %1548, 0
  store ptr %1549, ptr %20, align 8
  %1550 = extractvalue { ptr, i32 } %1548, 1
  store i32 %1550, ptr %21, align 4
  br label %1560

1551:                                             ; preds = %1516
  %1552 = landingpad { ptr, i32 }
          cleanup
  %1553 = extractvalue { ptr, i32 } %1552, 0
  store ptr %1553, ptr %20, align 8
  %1554 = extractvalue { ptr, i32 } %1552, 1
  store i32 %1554, ptr %21, align 4
  br label %1559

1555:                                             ; preds = %1520
  %1556 = landingpad { ptr, i32 }
          cleanup
  %1557 = extractvalue { ptr, i32 } %1556, 0
  store ptr %1557, ptr %20, align 8
  %1558 = extractvalue { ptr, i32 } %1556, 1
  store i32 %1558, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %136) #9
  br label %1559

1559:                                             ; preds = %1555, %1551
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %137) #9
  br label %1560

1560:                                             ; preds = %1559, %1547
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #9
  br label %1561

1561:                                             ; preds = %1560, %1543
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %135) #9
  br label %1562

1562:                                             ; preds = %1561, %1539
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #9
  br label %1577

1563:                                             ; preds = %1521
  %1564 = landingpad { ptr, i32 }
          cleanup
  %1565 = extractvalue { ptr, i32 } %1564, 0
  store ptr %1565, ptr %20, align 8
  %1566 = extractvalue { ptr, i32 } %1564, 1
  store i32 %1566, ptr %21, align 4
  br label %1576

1567:                                             ; preds = %1524
  %1568 = landingpad { ptr, i32 }
          cleanup
  %1569 = extractvalue { ptr, i32 } %1568, 0
  store ptr %1569, ptr %20, align 8
  %1570 = extractvalue { ptr, i32 } %1568, 1
  store i32 %1570, ptr %21, align 4
  br label %1575

1571:                                             ; preds = %1529
  %1572 = landingpad { ptr, i32 }
          cleanup
  %1573 = extractvalue { ptr, i32 } %1572, 0
  store ptr %1573, ptr %20, align 8
  %1574 = extractvalue { ptr, i32 } %1572, 1
  store i32 %1574, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %139) #9
  br label %1575

1575:                                             ; preds = %1571, %1567
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %140) #9
  br label %1576

1576:                                             ; preds = %1575, %1563
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %134) #9
  br label %1577

1577:                                             ; preds = %1576, %1562
  call void @llvm.lifetime.end.p0(i64 32, ptr %134) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %130) #9
  br label %1578

1578:                                             ; preds = %1577, %1535, %1531
  call void @llvm.lifetime.end.p0(i64 48, ptr %130) #9
  br label %1584

1579:                                             ; preds = %1530, %1484
  %1580 = load ptr, ptr %9, align 8, !tbaa !5
  %1581 = load i32, ptr %115, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %1580, i32 noundef %1581)
          to label %1582 unwind label %1397

1582:                                             ; preds = %1579
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #9
  br label %1583

1583:                                             ; preds = %1582
  store i8 0, ptr %113, align 1, !tbaa !11
  br label %1333, !llvm.loop !58

1584:                                             ; preds = %1578, %1489, %1485, %1457, %1401, %1397
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #9
  br label %1585

1585:                                             ; preds = %1584, %1338
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %113) #9
  br label %1591

1586:                                             ; preds = %1337
  br label %1587

1587:                                             ; preds = %1586
  store i8 0, ptr %113, align 1, !tbaa !11
  br label %1325, !llvm.loop !59

1588:                                             ; preds = %1328
  br label %1589

1589:                                             ; preds = %1588, %1323, %1211
  br label %1590

1590:                                             ; preds = %1589
  store i8 0, ptr %95, align 1, !tbaa !11
  br label %1177, !llvm.loop !60

1591:                                             ; preds = %1585, %1320, %1206, %1205, %1185
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #9
  br label %2487

1592:                                             ; preds = %1180
  br label %1593

1593:                                             ; preds = %1592
  store i8 0, ptr %95, align 1, !tbaa !11
  br label %1171, !llvm.loop !61

1594:                                             ; preds = %1174
  br label %2485

1595:                                             ; preds = %668
  %1596 = load ptr, ptr %24, align 8, !tbaa !5
  %1597 = invoke noundef i32 @_ZNK11PatternRule3tagEv(ptr noundef nonnull align 8 dereferenceable(120) %1596)
          to label %1598 unwind label %664

1598:                                             ; preds = %1595
  switch i32 %1597, label %1928 [
    i32 0, label %1599
    i32 5, label %1600
    i32 6, label %1698
  ]

1599:                                             ; preds = %1598
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 2613, ptr noundef @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

1600:                                             ; preds = %1598
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #9
  %1601 = load ptr, ptr %24, align 8, !tbaa !5
  %1602 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %1601)
          to label %1603 unwind label %1640

1603:                                             ; preds = %1600
  store ptr %1602, ptr %141, align 8, !tbaa !5
  %1604 = load ptr, ptr %141, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #9
  %1605 = load ptr, ptr %9, align 8, !tbaa !5
  %1606 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %1605)
          to label %1607 unwind label %1644

1607:                                             ; preds = %1603
  store i32 %1606, ptr %142, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %143) #9
  %1608 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %145, i32 0, i32 0
  %1609 = load ptr, ptr %141, align 8, !tbaa !5
  %1610 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %1609)
          to label %1611 unwind label %1648

1611:                                             ; preds = %1607
  %1612 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %1610, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1608, ptr align 8 %1612, i64 16, i1 false), !tbaa.struct !32
  %1613 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %145, i32 0, i32 1
  %1614 = load ptr, ptr %41, align 8, !tbaa !5
  %1615 = load i32, ptr %1614, align 4, !tbaa !20
  store i32 %1615, ptr %1613, align 8, !tbaa !34
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %144, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %145)
          to label %1616 unwind label %1648

1616:                                             ; preds = %1611
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %143, ptr noundef %144)
          to label %1617 unwind label %1652

1617:                                             ; preds = %1616
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %144) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %146) #9
  %1618 = load ptr, ptr %9, align 8, !tbaa !5
  %1619 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %147, i32 noundef 14)
          to label %1620 unwind label %1656

1620:                                             ; preds = %1617
  %1621 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %149, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %150, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %1622 unwind label %1660

1622:                                             ; preds = %1620
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1621, ptr noundef %150)
          to label %1623 unwind label %1664

1623:                                             ; preds = %1622
  %1624 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %149, i32 0, i32 1
  store i32 14, ptr %1624, align 8, !tbaa !37
  %1625 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %149, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %1625, ptr noundef nonnull align 8 dereferenceable(48) %143) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %148, ptr noundef %149)
          to label %1626 unwind label %1668

1626:                                             ; preds = %1623
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %146, ptr noundef nonnull align 8 dereferenceable(440) %1618, ptr noundef nonnull align 8 dereferenceable(8) %1619, ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef %148)
          to label %1627 unwind label %1672

1627:                                             ; preds = %1626
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %148) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %149) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %147) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #9
  %1628 = load ptr, ptr %9, align 8, !tbaa !5
  %1629 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %152, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1629, ptr noundef nonnull align 8 dereferenceable(32) %146)
          to label %1630 unwind label %1680

1630:                                             ; preds = %1627
  %1631 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %152, i32 0, i32 1
  %1632 = load i32, ptr %142, align 4, !tbaa !9
  store i32 %1632, ptr %1631, align 8, !tbaa !22
  %1633 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %152, i32 0, i32 2
  %1634 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1634, ptr %1633, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %151, ptr noundef %152)
          to label %1635 unwind label %1684

1635:                                             ; preds = %1630
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1628, ptr noundef %151)
          to label %1636 unwind label %1688

1636:                                             ; preds = %1635
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %151) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %152) #9
  %1637 = load ptr, ptr %9, align 8, !tbaa !5
  %1638 = load i32, ptr %142, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %1637, i32 noundef %1638)
          to label %1639 unwind label %1680

1639:                                             ; preds = %1636
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %143) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %143) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #9
  br label %1950

1640:                                             ; preds = %1600
  %1641 = landingpad { ptr, i32 }
          cleanup
  %1642 = extractvalue { ptr, i32 } %1641, 0
  store ptr %1642, ptr %20, align 8
  %1643 = extractvalue { ptr, i32 } %1641, 1
  store i32 %1643, ptr %21, align 4
  br label %1697

1644:                                             ; preds = %1603
  %1645 = landingpad { ptr, i32 }
          cleanup
  %1646 = extractvalue { ptr, i32 } %1645, 0
  store ptr %1646, ptr %20, align 8
  %1647 = extractvalue { ptr, i32 } %1645, 1
  store i32 %1647, ptr %21, align 4
  br label %1696

1648:                                             ; preds = %1611, %1607
  %1649 = landingpad { ptr, i32 }
          cleanup
  %1650 = extractvalue { ptr, i32 } %1649, 0
  store ptr %1650, ptr %20, align 8
  %1651 = extractvalue { ptr, i32 } %1649, 1
  store i32 %1651, ptr %21, align 4
  br label %1695

1652:                                             ; preds = %1616
  %1653 = landingpad { ptr, i32 }
          cleanup
  %1654 = extractvalue { ptr, i32 } %1653, 0
  store ptr %1654, ptr %20, align 8
  %1655 = extractvalue { ptr, i32 } %1653, 1
  store i32 %1655, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %144) #9
  br label %1695

1656:                                             ; preds = %1617
  %1657 = landingpad { ptr, i32 }
          cleanup
  %1658 = extractvalue { ptr, i32 } %1657, 0
  store ptr %1658, ptr %20, align 8
  %1659 = extractvalue { ptr, i32 } %1657, 1
  store i32 %1659, ptr %21, align 4
  br label %1679

1660:                                             ; preds = %1620
  %1661 = landingpad { ptr, i32 }
          cleanup
  %1662 = extractvalue { ptr, i32 } %1661, 0
  store ptr %1662, ptr %20, align 8
  %1663 = extractvalue { ptr, i32 } %1661, 1
  store i32 %1663, ptr %21, align 4
  br label %1678

1664:                                             ; preds = %1622
  %1665 = landingpad { ptr, i32 }
          cleanup
  %1666 = extractvalue { ptr, i32 } %1665, 0
  store ptr %1666, ptr %20, align 8
  %1667 = extractvalue { ptr, i32 } %1665, 1
  store i32 %1667, ptr %21, align 4
  br label %1677

1668:                                             ; preds = %1623
  %1669 = landingpad { ptr, i32 }
          cleanup
  %1670 = extractvalue { ptr, i32 } %1669, 0
  store ptr %1670, ptr %20, align 8
  %1671 = extractvalue { ptr, i32 } %1669, 1
  store i32 %1671, ptr %21, align 4
  br label %1676

1672:                                             ; preds = %1626
  %1673 = landingpad { ptr, i32 }
          cleanup
  %1674 = extractvalue { ptr, i32 } %1673, 0
  store ptr %1674, ptr %20, align 8
  %1675 = extractvalue { ptr, i32 } %1673, 1
  store i32 %1675, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %148) #9
  br label %1676

1676:                                             ; preds = %1672, %1668
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %149) #9
  br label %1677

1677:                                             ; preds = %1676, %1664
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %150) #9
  br label %1678

1678:                                             ; preds = %1677, %1660
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %147) #9
  br label %1679

1679:                                             ; preds = %1678, %1656
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #9
  br label %1694

1680:                                             ; preds = %1636, %1627
  %1681 = landingpad { ptr, i32 }
          cleanup
  %1682 = extractvalue { ptr, i32 } %1681, 0
  store ptr %1682, ptr %20, align 8
  %1683 = extractvalue { ptr, i32 } %1681, 1
  store i32 %1683, ptr %21, align 4
  br label %1693

1684:                                             ; preds = %1630
  %1685 = landingpad { ptr, i32 }
          cleanup
  %1686 = extractvalue { ptr, i32 } %1685, 0
  store ptr %1686, ptr %20, align 8
  %1687 = extractvalue { ptr, i32 } %1685, 1
  store i32 %1687, ptr %21, align 4
  br label %1692

1688:                                             ; preds = %1635
  %1689 = landingpad { ptr, i32 }
          cleanup
  %1690 = extractvalue { ptr, i32 } %1689, 0
  store ptr %1690, ptr %20, align 8
  %1691 = extractvalue { ptr, i32 } %1689, 1
  store i32 %1691, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %151) #9
  br label %1692

1692:                                             ; preds = %1688, %1684
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %152) #9
  br label %1693

1693:                                             ; preds = %1692, %1680
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  br label %1694

1694:                                             ; preds = %1693, %1679
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %143) #9
  br label %1695

1695:                                             ; preds = %1694, %1652, %1648
  call void @llvm.lifetime.end.p0(i64 48, ptr %143) #9
  br label %1696

1696:                                             ; preds = %1695, %1644
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #9
  br label %1697

1697:                                             ; preds = %1696, %1640
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #9
  br label %2487

1698:                                             ; preds = %1598
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #9
  %1699 = load ptr, ptr %24, align 8, !tbaa !5
  %1700 = invoke noundef nonnull align 8 dereferenceable(81) ptr @_ZNK11PatternRule13as_ValueRangeEv(ptr noundef nonnull align 8 dereferenceable(120) %1699)
          to label %1701 unwind label %1750

1701:                                             ; preds = %1698
  store ptr %1700, ptr %153, align 8, !tbaa !5
  %1702 = load ptr, ptr %153, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #9
  %1703 = load ptr, ptr %9, align 8, !tbaa !5
  %1704 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %1703)
          to label %1705 unwind label %1754

1705:                                             ; preds = %1701
  store i32 %1704, ptr %154, align 4, !tbaa !9
  %1706 = load ptr, ptr %153, align 8, !tbaa !5
  %1707 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1706, i32 0, i32 0
  %1708 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %1707)
          to label %1709 unwind label %1754

1709:                                             ; preds = %1705
  %1710 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %1708, i32 0, i32 0
  %1711 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %1710, i32 noundef 0)
          to label %1712 unwind label %1754

1712:                                             ; preds = %1709
  br i1 %1711, label %1713, label %1811

1713:                                             ; preds = %1712
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #9
  %1714 = load ptr, ptr %9, align 8, !tbaa !5
  %1715 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %1714)
          to label %1716 unwind label %1758

1716:                                             ; preds = %1713
  store i32 %1715, ptr %155, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %156) #9
  %1717 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %158, i32 0, i32 0
  %1718 = load ptr, ptr %153, align 8, !tbaa !5
  %1719 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1718, i32 0, i32 0
  %1720 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %1719)
          to label %1721 unwind label %1762

1721:                                             ; preds = %1716
  %1722 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %1720, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1717, ptr align 8 %1722, i64 16, i1 false), !tbaa.struct !32
  %1723 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %158, i32 0, i32 1
  %1724 = load ptr, ptr %41, align 8, !tbaa !5
  %1725 = load i32, ptr %1724, align 4, !tbaa !20
  store i32 %1725, ptr %1723, align 8, !tbaa !34
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %157, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %158)
          to label %1726 unwind label %1762

1726:                                             ; preds = %1721
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %156, ptr noundef %157)
          to label %1727 unwind label %1766

1727:                                             ; preds = %1726
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %157) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %159) #9
  %1728 = load ptr, ptr %9, align 8, !tbaa !5
  %1729 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %160, i32 noundef 14)
          to label %1730 unwind label %1770

1730:                                             ; preds = %1727
  %1731 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %162, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %163, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %1732 unwind label %1774

1732:                                             ; preds = %1730
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1731, ptr noundef %163)
          to label %1733 unwind label %1778

1733:                                             ; preds = %1732
  %1734 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %162, i32 0, i32 1
  store i32 18, ptr %1734, align 8, !tbaa !37
  %1735 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %162, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %1735, ptr noundef nonnull align 8 dereferenceable(48) %156) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %161, ptr noundef %162)
          to label %1736 unwind label %1782

1736:                                             ; preds = %1733
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %159, ptr noundef nonnull align 8 dereferenceable(440) %1728, ptr noundef nonnull align 8 dereferenceable(8) %1729, ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef %161)
          to label %1737 unwind label %1786

1737:                                             ; preds = %1736
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %161) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %162) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #9
  %1738 = load ptr, ptr %9, align 8, !tbaa !5
  %1739 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %165, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1739, ptr noundef nonnull align 8 dereferenceable(32) %159)
          to label %1740 unwind label %1794

1740:                                             ; preds = %1737
  %1741 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %165, i32 0, i32 1
  %1742 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1742, ptr %1741, align 8, !tbaa !22
  %1743 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %165, i32 0, i32 2
  %1744 = load i32, ptr %155, align 4, !tbaa !9
  store i32 %1744, ptr %1743, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %164, ptr noundef %165)
          to label %1745 unwind label %1798

1745:                                             ; preds = %1740
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1738, ptr noundef %164)
          to label %1746 unwind label %1802

1746:                                             ; preds = %1745
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %164) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %165) #9
  %1747 = load ptr, ptr %9, align 8, !tbaa !5
  %1748 = load i32, ptr %155, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %1747, i32 noundef %1748)
          to label %1749 unwind label %1794

1749:                                             ; preds = %1746
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %159) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %156) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %156) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #9
  br label %1811

1750:                                             ; preds = %1698
  %1751 = landingpad { ptr, i32 }
          cleanup
  %1752 = extractvalue { ptr, i32 } %1751, 0
  store ptr %1752, ptr %20, align 8
  %1753 = extractvalue { ptr, i32 } %1751, 1
  store i32 %1753, ptr %21, align 4
  br label %1927

1754:                                             ; preds = %1922, %1827, %1815, %1811, %1709, %1705, %1701
  %1755 = landingpad { ptr, i32 }
          cleanup
  %1756 = extractvalue { ptr, i32 } %1755, 0
  store ptr %1756, ptr %20, align 8
  %1757 = extractvalue { ptr, i32 } %1755, 1
  store i32 %1757, ptr %21, align 4
  br label %1926

1758:                                             ; preds = %1713
  %1759 = landingpad { ptr, i32 }
          cleanup
  %1760 = extractvalue { ptr, i32 } %1759, 0
  store ptr %1760, ptr %20, align 8
  %1761 = extractvalue { ptr, i32 } %1759, 1
  store i32 %1761, ptr %21, align 4
  br label %1810

1762:                                             ; preds = %1721, %1716
  %1763 = landingpad { ptr, i32 }
          cleanup
  %1764 = extractvalue { ptr, i32 } %1763, 0
  store ptr %1764, ptr %20, align 8
  %1765 = extractvalue { ptr, i32 } %1763, 1
  store i32 %1765, ptr %21, align 4
  br label %1809

1766:                                             ; preds = %1726
  %1767 = landingpad { ptr, i32 }
          cleanup
  %1768 = extractvalue { ptr, i32 } %1767, 0
  store ptr %1768, ptr %20, align 8
  %1769 = extractvalue { ptr, i32 } %1767, 1
  store i32 %1769, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %157) #9
  br label %1809

1770:                                             ; preds = %1727
  %1771 = landingpad { ptr, i32 }
          cleanup
  %1772 = extractvalue { ptr, i32 } %1771, 0
  store ptr %1772, ptr %20, align 8
  %1773 = extractvalue { ptr, i32 } %1771, 1
  store i32 %1773, ptr %21, align 4
  br label %1793

1774:                                             ; preds = %1730
  %1775 = landingpad { ptr, i32 }
          cleanup
  %1776 = extractvalue { ptr, i32 } %1775, 0
  store ptr %1776, ptr %20, align 8
  %1777 = extractvalue { ptr, i32 } %1775, 1
  store i32 %1777, ptr %21, align 4
  br label %1792

1778:                                             ; preds = %1732
  %1779 = landingpad { ptr, i32 }
          cleanup
  %1780 = extractvalue { ptr, i32 } %1779, 0
  store ptr %1780, ptr %20, align 8
  %1781 = extractvalue { ptr, i32 } %1779, 1
  store i32 %1781, ptr %21, align 4
  br label %1791

1782:                                             ; preds = %1733
  %1783 = landingpad { ptr, i32 }
          cleanup
  %1784 = extractvalue { ptr, i32 } %1783, 0
  store ptr %1784, ptr %20, align 8
  %1785 = extractvalue { ptr, i32 } %1783, 1
  store i32 %1785, ptr %21, align 4
  br label %1790

1786:                                             ; preds = %1736
  %1787 = landingpad { ptr, i32 }
          cleanup
  %1788 = extractvalue { ptr, i32 } %1787, 0
  store ptr %1788, ptr %20, align 8
  %1789 = extractvalue { ptr, i32 } %1787, 1
  store i32 %1789, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %161) #9
  br label %1790

1790:                                             ; preds = %1786, %1782
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %162) #9
  br label %1791

1791:                                             ; preds = %1790, %1778
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #9
  br label %1792

1792:                                             ; preds = %1791, %1774
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #9
  br label %1793

1793:                                             ; preds = %1792, %1770
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #9
  br label %1808

1794:                                             ; preds = %1746, %1737
  %1795 = landingpad { ptr, i32 }
          cleanup
  %1796 = extractvalue { ptr, i32 } %1795, 0
  store ptr %1796, ptr %20, align 8
  %1797 = extractvalue { ptr, i32 } %1795, 1
  store i32 %1797, ptr %21, align 4
  br label %1807

1798:                                             ; preds = %1740
  %1799 = landingpad { ptr, i32 }
          cleanup
  %1800 = extractvalue { ptr, i32 } %1799, 0
  store ptr %1800, ptr %20, align 8
  %1801 = extractvalue { ptr, i32 } %1799, 1
  store i32 %1801, ptr %21, align 4
  br label %1806

1802:                                             ; preds = %1745
  %1803 = landingpad { ptr, i32 }
          cleanup
  %1804 = extractvalue { ptr, i32 } %1803, 0
  store ptr %1804, ptr %20, align 8
  %1805 = extractvalue { ptr, i32 } %1803, 1
  store i32 %1805, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %164) #9
  br label %1806

1806:                                             ; preds = %1802, %1798
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %165) #9
  br label %1807

1807:                                             ; preds = %1806, %1794
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  br label %1808

1808:                                             ; preds = %1807, %1793
  call void @llvm.lifetime.end.p0(i64 32, ptr %159) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %156) #9
  br label %1809

1809:                                             ; preds = %1808, %1766, %1762
  call void @llvm.lifetime.end.p0(i64 48, ptr %156) #9
  br label %1810

1810:                                             ; preds = %1809, %1758
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #9
  br label %1926

1811:                                             ; preds = %1749, %1712
  %1812 = load ptr, ptr %153, align 8, !tbaa !5
  %1813 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1812, i32 0, i32 1
  %1814 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %1813)
          to label %1815 unwind label %1754

1815:                                             ; preds = %1811
  %1816 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %1814, i32 0, i32 0
  %1817 = invoke noundef zeroext i1 @_ZNK4U128geEj(ptr noundef nonnull align 8 dereferenceable(16) %1816, i32 noundef 1114111)
          to label %1818 unwind label %1754

1818:                                             ; preds = %1815
  br i1 %1817, label %1819, label %1836

1819:                                             ; preds = %1818
  %1820 = load ptr, ptr %153, align 8, !tbaa !5
  %1821 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1820, i32 0, i32 2
  %1822 = load i8, ptr %1821, align 8, !tbaa !44, !range !13, !noundef !14
  %1823 = trunc i8 %1822 to i1
  br i1 %1823, label %1824, label %1825

1824:                                             ; preds = %1819
  br label %1827

1825:                                             ; preds = %1819
  call void @__assert_fail(ptr noundef @.str.78, ptr noundef @.str.17, i32 noundef 2601, ptr noundef @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

1826:                                             ; No predecessors!
  br label %1827

1827:                                             ; preds = %1826, %1824
  %1828 = load ptr, ptr %9, align 8, !tbaa !5
  %1829 = load i32, ptr %154, align 4, !tbaa !9
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %166, i32 noundef %1829)
          to label %1830 unwind label %1754

1830:                                             ; preds = %1827
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1828, ptr noundef %166)
          to label %1831 unwind label %1832

1831:                                             ; preds = %1830
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %166) #9
  br label %1922

1832:                                             ; preds = %1830
  %1833 = landingpad { ptr, i32 }
          cleanup
  %1834 = extractvalue { ptr, i32 } %1833, 0
  store ptr %1834, ptr %20, align 8
  %1835 = extractvalue { ptr, i32 } %1833, 1
  store i32 %1835, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %166) #9
  br label %1926

1836:                                             ; preds = %1818
  call void @llvm.lifetime.start.p0(i64 48, ptr %167) #9
  %1837 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %169, i32 0, i32 0
  %1838 = load ptr, ptr %153, align 8, !tbaa !5
  %1839 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1838, i32 0, i32 1
  %1840 = invoke noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %1839)
          to label %1841 unwind label %1874

1841:                                             ; preds = %1836
  %1842 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %1840, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1837, ptr align 8 %1842, i64 16, i1 false), !tbaa.struct !32
  %1843 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %169, i32 0, i32 1
  %1844 = load ptr, ptr %41, align 8, !tbaa !5
  %1845 = load i32, ptr %1844, align 4, !tbaa !20
  store i32 %1845, ptr %1843, align 8, !tbaa !34
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %168, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %169)
          to label %1846 unwind label %1874

1846:                                             ; preds = %1841
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %167, ptr noundef %168)
          to label %1847 unwind label %1878

1847:                                             ; preds = %1846
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %168) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %170) #9
  %1848 = load ptr, ptr %153, align 8, !tbaa !5
  %1849 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %1848, i32 0, i32 2
  %1850 = load i8, ptr %1849, align 8, !tbaa !44, !range !13, !noundef !14
  %1851 = trunc i8 %1850 to i1
  %1852 = zext i1 %1851 to i64
  %1853 = select i1 %1851, i32 16, i32 17
  store i32 %1853, ptr %170, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 32, ptr %171) #9
  %1854 = load ptr, ptr %9, align 8, !tbaa !5
  %1855 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %172, i32 noundef 14)
          to label %1856 unwind label %1882

1856:                                             ; preds = %1847
  %1857 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %174, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %175, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %1858 unwind label %1886

1858:                                             ; preds = %1856
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1857, ptr noundef %175)
          to label %1859 unwind label %1890

1859:                                             ; preds = %1858
  %1860 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %174, i32 0, i32 1
  %1861 = load i32, ptr %170, align 4, !tbaa !48
  store i32 %1861, ptr %1860, align 8, !tbaa !37
  %1862 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %174, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %1862, ptr noundef nonnull align 8 dereferenceable(48) %167) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %173, ptr noundef %174)
          to label %1863 unwind label %1894

1863:                                             ; preds = %1859
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %171, ptr noundef nonnull align 8 dereferenceable(440) %1854, ptr noundef nonnull align 8 dereferenceable(8) %1855, ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef %173)
          to label %1864 unwind label %1898

1864:                                             ; preds = %1863
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %173) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %174) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #9
  %1865 = load ptr, ptr %9, align 8, !tbaa !5
  %1866 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %177, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1866, ptr noundef nonnull align 8 dereferenceable(32) %171)
          to label %1867 unwind label %1906

1867:                                             ; preds = %1864
  %1868 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %177, i32 0, i32 1
  %1869 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1869, ptr %1868, align 8, !tbaa !22
  %1870 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %177, i32 0, i32 2
  %1871 = load i32, ptr %154, align 4, !tbaa !9
  store i32 %1871, ptr %1870, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %176, ptr noundef %177)
          to label %1872 unwind label %1910

1872:                                             ; preds = %1867
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1865, ptr noundef %176)
          to label %1873 unwind label %1914

1873:                                             ; preds = %1872
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %176) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %177) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %171) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %170) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %167) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %167) #9
  br label %1922

1874:                                             ; preds = %1841, %1836
  %1875 = landingpad { ptr, i32 }
          cleanup
  %1876 = extractvalue { ptr, i32 } %1875, 0
  store ptr %1876, ptr %20, align 8
  %1877 = extractvalue { ptr, i32 } %1875, 1
  store i32 %1877, ptr %21, align 4
  br label %1921

1878:                                             ; preds = %1846
  %1879 = landingpad { ptr, i32 }
          cleanup
  %1880 = extractvalue { ptr, i32 } %1879, 0
  store ptr %1880, ptr %20, align 8
  %1881 = extractvalue { ptr, i32 } %1879, 1
  store i32 %1881, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %168) #9
  br label %1921

1882:                                             ; preds = %1847
  %1883 = landingpad { ptr, i32 }
          cleanup
  %1884 = extractvalue { ptr, i32 } %1883, 0
  store ptr %1884, ptr %20, align 8
  %1885 = extractvalue { ptr, i32 } %1883, 1
  store i32 %1885, ptr %21, align 4
  br label %1905

1886:                                             ; preds = %1856
  %1887 = landingpad { ptr, i32 }
          cleanup
  %1888 = extractvalue { ptr, i32 } %1887, 0
  store ptr %1888, ptr %20, align 8
  %1889 = extractvalue { ptr, i32 } %1887, 1
  store i32 %1889, ptr %21, align 4
  br label %1904

1890:                                             ; preds = %1858
  %1891 = landingpad { ptr, i32 }
          cleanup
  %1892 = extractvalue { ptr, i32 } %1891, 0
  store ptr %1892, ptr %20, align 8
  %1893 = extractvalue { ptr, i32 } %1891, 1
  store i32 %1893, ptr %21, align 4
  br label %1903

1894:                                             ; preds = %1859
  %1895 = landingpad { ptr, i32 }
          cleanup
  %1896 = extractvalue { ptr, i32 } %1895, 0
  store ptr %1896, ptr %20, align 8
  %1897 = extractvalue { ptr, i32 } %1895, 1
  store i32 %1897, ptr %21, align 4
  br label %1902

1898:                                             ; preds = %1863
  %1899 = landingpad { ptr, i32 }
          cleanup
  %1900 = extractvalue { ptr, i32 } %1899, 0
  store ptr %1900, ptr %20, align 8
  %1901 = extractvalue { ptr, i32 } %1899, 1
  store i32 %1901, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %173) #9
  br label %1902

1902:                                             ; preds = %1898, %1894
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %174) #9
  br label %1903

1903:                                             ; preds = %1902, %1890
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #9
  br label %1904

1904:                                             ; preds = %1903, %1886
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #9
  br label %1905

1905:                                             ; preds = %1904, %1882
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #9
  br label %1920

1906:                                             ; preds = %1864
  %1907 = landingpad { ptr, i32 }
          cleanup
  %1908 = extractvalue { ptr, i32 } %1907, 0
  store ptr %1908, ptr %20, align 8
  %1909 = extractvalue { ptr, i32 } %1907, 1
  store i32 %1909, ptr %21, align 4
  br label %1919

1910:                                             ; preds = %1867
  %1911 = landingpad { ptr, i32 }
          cleanup
  %1912 = extractvalue { ptr, i32 } %1911, 0
  store ptr %1912, ptr %20, align 8
  %1913 = extractvalue { ptr, i32 } %1911, 1
  store i32 %1913, ptr %21, align 4
  br label %1918

1914:                                             ; preds = %1872
  %1915 = landingpad { ptr, i32 }
          cleanup
  %1916 = extractvalue { ptr, i32 } %1915, 0
  store ptr %1916, ptr %20, align 8
  %1917 = extractvalue { ptr, i32 } %1915, 1
  store i32 %1917, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %176) #9
  br label %1918

1918:                                             ; preds = %1914, %1910
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %177) #9
  br label %1919

1919:                                             ; preds = %1918, %1906
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #9
  br label %1920

1920:                                             ; preds = %1919, %1905
  call void @llvm.lifetime.end.p0(i64 32, ptr %171) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %170) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %167) #9
  br label %1921

1921:                                             ; preds = %1920, %1878, %1874
  call void @llvm.lifetime.end.p0(i64 48, ptr %167) #9
  br label %1926

1922:                                             ; preds = %1873, %1831
  %1923 = load ptr, ptr %9, align 8, !tbaa !5
  %1924 = load i32, ptr %154, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %1923, i32 noundef %1924)
          to label %1925 unwind label %1754

1925:                                             ; preds = %1922
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #9
  br label %1950

1926:                                             ; preds = %1921, %1832, %1810, %1754
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #9
  br label %1927

1927:                                             ; preds = %1926, %1750
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #9
  br label %2487

1928:                                             ; preds = %1598
  br label %1929

1929:                                             ; preds = %1928
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #9
  %1930 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull align 8 dereferenceable(8) %1930)
          to label %1931 unwind label %1935

1931:                                             ; preds = %1929
  call void @llvm.lifetime.start.p0(i64 1, ptr %180) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull align 1 dereferenceable(1) %180) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef %179)
          to label %1932 unwind label %1939

1932:                                             ; preds = %1931
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %180) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #9
  %1933 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1933, ptr noundef @.str.10)
          to label %1934 unwind label %1944

1934:                                             ; preds = %1932
  invoke void @__cxa_throw(ptr %1933, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %664

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

1939:                                             ; preds = %1931
  %1940 = landingpad { ptr, i32 }
          cleanup
  %1941 = extractvalue { ptr, i32 } %1940, 0
  store ptr %1941, ptr %20, align 8
  %1942 = extractvalue { ptr, i32 } %1940, 1
  store i32 %1942, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %180) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %178) #9
  br label %1943

1943:                                             ; preds = %1939, %1935
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #9
  br label %2487

1944:                                             ; preds = %1932
  %1945 = landingpad { ptr, i32 }
          cleanup
  %1946 = extractvalue { ptr, i32 } %1945, 0
  store ptr %1946, ptr %20, align 8
  %1947 = extractvalue { ptr, i32 } %1945, 1
  store i32 %1947, ptr %21, align 4
  call void @__cxa_free_exception(ptr %1933) #9
  br label %2487

1948:                                             ; No predecessors!
  br label %1949

1949:                                             ; preds = %1948
  br label %1950

1950:                                             ; preds = %1949, %1925, %1639
  br label %2485

1951:                                             ; preds = %668, %668
  %1952 = load ptr, ptr %24, align 8, !tbaa !5
  %1953 = invoke noundef i32 @_ZNK11PatternRule3tagEv(ptr noundef nonnull align 8 dereferenceable(120) %1952)
          to label %1954 unwind label %664

1954:                                             ; preds = %1951
  switch i32 %1953, label %2300 [
    i32 0, label %1955
    i32 5, label %1956
    i32 6, label %2059
  ]

1955:                                             ; preds = %1954
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 2656, ptr noundef @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

1956:                                             ; preds = %1954
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #9
  %1957 = load ptr, ptr %24, align 8, !tbaa !5
  %1958 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %1957)
          to label %1959 unwind label %2001

1959:                                             ; preds = %1956
  store ptr %1958, ptr %181, align 8, !tbaa !5
  %1960 = load ptr, ptr %181, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %182) #9
  %1961 = load ptr, ptr %9, align 8, !tbaa !5
  %1962 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %1961)
          to label %1963 unwind label %2005

1963:                                             ; preds = %1959
  store i32 %1962, ptr %182, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %183) #9
  %1964 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %185, i32 0, i32 0
  %1965 = load ptr, ptr %181, align 8, !tbaa !5
  %1966 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %1965)
          to label %1967 unwind label %2009

1967:                                             ; preds = %1963
  %1968 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %1966, i32 0, i32 0
  %1969 = load double, ptr %1968, align 8, !tbaa !62
  store double %1969, ptr %1964, align 8, !tbaa !62
  %1970 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %185, i32 0, i32 1
  %1971 = load ptr, ptr %41, align 8, !tbaa !5
  %1972 = load i32, ptr %1971, align 4, !tbaa !20
  store i32 %1972, ptr %1970, align 8, !tbaa !65
  %1973 = getelementptr inbounds { double, i32 }, ptr %185, i32 0, i32 0
  %1974 = load double, ptr %1973, align 8
  %1975 = getelementptr inbounds { double, i32 }, ptr %185, i32 0, i32 1
  %1976 = load i32, ptr %1975, align 8
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %184, double %1974, i32 %1976)
          to label %1977 unwind label %2009

1977:                                             ; preds = %1967
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %183, ptr noundef %184)
          to label %1978 unwind label %2013

1978:                                             ; preds = %1977
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %184) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %186) #9
  %1979 = load ptr, ptr %9, align 8, !tbaa !5
  %1980 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %187) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %187, i32 noundef 14)
          to label %1981 unwind label %2017

1981:                                             ; preds = %1978
  %1982 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %189, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %190, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %1983 unwind label %2021

1983:                                             ; preds = %1981
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %1982, ptr noundef %190)
          to label %1984 unwind label %2025

1984:                                             ; preds = %1983
  %1985 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %189, i32 0, i32 1
  store i32 14, ptr %1985, align 8, !tbaa !37
  %1986 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %189, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %1986, ptr noundef nonnull align 8 dereferenceable(48) %183) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %188, ptr noundef %189)
          to label %1987 unwind label %2029

1987:                                             ; preds = %1984
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %186, ptr noundef nonnull align 8 dereferenceable(440) %1979, ptr noundef nonnull align 8 dereferenceable(8) %1980, ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef %188)
          to label %1988 unwind label %2033

1988:                                             ; preds = %1987
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %188) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %189) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #9
  %1989 = load ptr, ptr %9, align 8, !tbaa !5
  %1990 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %192, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1990, ptr noundef nonnull align 8 dereferenceable(32) %186)
          to label %1991 unwind label %2041

1991:                                             ; preds = %1988
  %1992 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %192, i32 0, i32 1
  %1993 = load i32, ptr %182, align 4, !tbaa !9
  store i32 %1993, ptr %1992, align 8, !tbaa !22
  %1994 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %192, i32 0, i32 2
  %1995 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1995, ptr %1994, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %191, ptr noundef %192)
          to label %1996 unwind label %2045

1996:                                             ; preds = %1991
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %1989, ptr noundef %191)
          to label %1997 unwind label %2049

1997:                                             ; preds = %1996
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %191) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %192) #9
  %1998 = load ptr, ptr %9, align 8, !tbaa !5
  %1999 = load i32, ptr %182, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %1998, i32 noundef %1999)
          to label %2000 unwind label %2041

2000:                                             ; preds = %1997
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %186) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %183) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %183) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #9
  br label %2322

2001:                                             ; preds = %1956
  %2002 = landingpad { ptr, i32 }
          cleanup
  %2003 = extractvalue { ptr, i32 } %2002, 0
  store ptr %2003, ptr %20, align 8
  %2004 = extractvalue { ptr, i32 } %2002, 1
  store i32 %2004, ptr %21, align 4
  br label %2058

2005:                                             ; preds = %1959
  %2006 = landingpad { ptr, i32 }
          cleanup
  %2007 = extractvalue { ptr, i32 } %2006, 0
  store ptr %2007, ptr %20, align 8
  %2008 = extractvalue { ptr, i32 } %2006, 1
  store i32 %2008, ptr %21, align 4
  br label %2057

2009:                                             ; preds = %1967, %1963
  %2010 = landingpad { ptr, i32 }
          cleanup
  %2011 = extractvalue { ptr, i32 } %2010, 0
  store ptr %2011, ptr %20, align 8
  %2012 = extractvalue { ptr, i32 } %2010, 1
  store i32 %2012, ptr %21, align 4
  br label %2056

2013:                                             ; preds = %1977
  %2014 = landingpad { ptr, i32 }
          cleanup
  %2015 = extractvalue { ptr, i32 } %2014, 0
  store ptr %2015, ptr %20, align 8
  %2016 = extractvalue { ptr, i32 } %2014, 1
  store i32 %2016, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %184) #9
  br label %2056

2017:                                             ; preds = %1978
  %2018 = landingpad { ptr, i32 }
          cleanup
  %2019 = extractvalue { ptr, i32 } %2018, 0
  store ptr %2019, ptr %20, align 8
  %2020 = extractvalue { ptr, i32 } %2018, 1
  store i32 %2020, ptr %21, align 4
  br label %2040

2021:                                             ; preds = %1981
  %2022 = landingpad { ptr, i32 }
          cleanup
  %2023 = extractvalue { ptr, i32 } %2022, 0
  store ptr %2023, ptr %20, align 8
  %2024 = extractvalue { ptr, i32 } %2022, 1
  store i32 %2024, ptr %21, align 4
  br label %2039

2025:                                             ; preds = %1983
  %2026 = landingpad { ptr, i32 }
          cleanup
  %2027 = extractvalue { ptr, i32 } %2026, 0
  store ptr %2027, ptr %20, align 8
  %2028 = extractvalue { ptr, i32 } %2026, 1
  store i32 %2028, ptr %21, align 4
  br label %2038

2029:                                             ; preds = %1984
  %2030 = landingpad { ptr, i32 }
          cleanup
  %2031 = extractvalue { ptr, i32 } %2030, 0
  store ptr %2031, ptr %20, align 8
  %2032 = extractvalue { ptr, i32 } %2030, 1
  store i32 %2032, ptr %21, align 4
  br label %2037

2033:                                             ; preds = %1987
  %2034 = landingpad { ptr, i32 }
          cleanup
  %2035 = extractvalue { ptr, i32 } %2034, 0
  store ptr %2035, ptr %20, align 8
  %2036 = extractvalue { ptr, i32 } %2034, 1
  store i32 %2036, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %188) #9
  br label %2037

2037:                                             ; preds = %2033, %2029
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %189) #9
  br label %2038

2038:                                             ; preds = %2037, %2025
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %190) #9
  br label %2039

2039:                                             ; preds = %2038, %2021
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %187) #9
  br label %2040

2040:                                             ; preds = %2039, %2017
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #9
  br label %2055

2041:                                             ; preds = %1997, %1988
  %2042 = landingpad { ptr, i32 }
          cleanup
  %2043 = extractvalue { ptr, i32 } %2042, 0
  store ptr %2043, ptr %20, align 8
  %2044 = extractvalue { ptr, i32 } %2042, 1
  store i32 %2044, ptr %21, align 4
  br label %2054

2045:                                             ; preds = %1991
  %2046 = landingpad { ptr, i32 }
          cleanup
  %2047 = extractvalue { ptr, i32 } %2046, 0
  store ptr %2047, ptr %20, align 8
  %2048 = extractvalue { ptr, i32 } %2046, 1
  store i32 %2048, ptr %21, align 4
  br label %2053

2049:                                             ; preds = %1996
  %2050 = landingpad { ptr, i32 }
          cleanup
  %2051 = extractvalue { ptr, i32 } %2050, 0
  store ptr %2051, ptr %20, align 8
  %2052 = extractvalue { ptr, i32 } %2050, 1
  store i32 %2052, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %191) #9
  br label %2053

2053:                                             ; preds = %2049, %2045
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %192) #9
  br label %2054

2054:                                             ; preds = %2053, %2041
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #9
  br label %2055

2055:                                             ; preds = %2054, %2040
  call void @llvm.lifetime.end.p0(i64 32, ptr %186) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %183) #9
  br label %2056

2056:                                             ; preds = %2055, %2013, %2009
  call void @llvm.lifetime.end.p0(i64 48, ptr %183) #9
  br label %2057

2057:                                             ; preds = %2056, %2005
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #9
  br label %2058

2058:                                             ; preds = %2057, %2001
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #9
  br label %2487

2059:                                             ; preds = %1954
  call void @llvm.lifetime.start.p0(i64 8, ptr %193) #9
  %2060 = load ptr, ptr %24, align 8, !tbaa !5
  %2061 = invoke noundef nonnull align 8 dereferenceable(81) ptr @_ZNK11PatternRule13as_ValueRangeEv(ptr noundef nonnull align 8 dereferenceable(120) %2060)
          to label %2062 unwind label %2077

2062:                                             ; preds = %2059
  store ptr %2061, ptr %193, align 8, !tbaa !5
  %2063 = load ptr, ptr %193, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %194) #9
  %2064 = load ptr, ptr %9, align 8, !tbaa !5
  %2065 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %2064)
          to label %2066 unwind label %2081

2066:                                             ; preds = %2062
  store i32 %2065, ptr %194, align 4, !tbaa !9
  %2067 = load ptr, ptr %193, align 8, !tbaa !5
  %2068 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %2067, i32 0, i32 0
  %2069 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %2068)
          to label %2070 unwind label %2081

2070:                                             ; preds = %2066
  %2071 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %2069, i32 0, i32 0
  %2072 = load double, ptr %2071, align 8, !tbaa !62
  %2073 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #9
  %2074 = fneg double %2073
  %2075 = fcmp oeq double %2072, %2074
  br i1 %2075, label %2076, label %2085

2076:                                             ; preds = %2070
  br label %2180

2077:                                             ; preds = %2059
  %2078 = landingpad { ptr, i32 }
          cleanup
  %2079 = extractvalue { ptr, i32 } %2078, 0
  store ptr %2079, ptr %20, align 8
  %2080 = extractvalue { ptr, i32 } %2078, 1
  store i32 %2080, ptr %21, align 4
  br label %2299

2081:                                             ; preds = %2294, %2194, %2180, %2066, %2062
  %2082 = landingpad { ptr, i32 }
          cleanup
  %2083 = extractvalue { ptr, i32 } %2082, 0
  store ptr %2083, ptr %20, align 8
  %2084 = extractvalue { ptr, i32 } %2082, 1
  store i32 %2084, ptr %21, align 4
  br label %2298

2085:                                             ; preds = %2070
  call void @llvm.lifetime.start.p0(i64 4, ptr %195) #9
  %2086 = load ptr, ptr %9, align 8, !tbaa !5
  %2087 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %2086)
          to label %2088 unwind label %2127

2088:                                             ; preds = %2085
  store i32 %2087, ptr %195, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %196) #9
  %2089 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %198, i32 0, i32 0
  %2090 = load ptr, ptr %193, align 8, !tbaa !5
  %2091 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %2090, i32 0, i32 0
  %2092 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %2091)
          to label %2093 unwind label %2131

2093:                                             ; preds = %2088
  %2094 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %2092, i32 0, i32 0
  %2095 = load double, ptr %2094, align 8, !tbaa !62
  store double %2095, ptr %2089, align 8, !tbaa !62
  %2096 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %198, i32 0, i32 1
  %2097 = load ptr, ptr %41, align 8, !tbaa !5
  %2098 = load i32, ptr %2097, align 4, !tbaa !20
  store i32 %2098, ptr %2096, align 8, !tbaa !65
  %2099 = getelementptr inbounds { double, i32 }, ptr %198, i32 0, i32 0
  %2100 = load double, ptr %2099, align 8
  %2101 = getelementptr inbounds { double, i32 }, ptr %198, i32 0, i32 1
  %2102 = load i32, ptr %2101, align 8
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %197, double %2100, i32 %2102)
          to label %2103 unwind label %2131

2103:                                             ; preds = %2093
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %196, ptr noundef %197)
          to label %2104 unwind label %2135

2104:                                             ; preds = %2103
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %197) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %199) #9
  %2105 = load ptr, ptr %9, align 8, !tbaa !5
  %2106 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %200, i32 noundef 14)
          to label %2107 unwind label %2139

2107:                                             ; preds = %2104
  %2108 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %202, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %203, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %2109 unwind label %2143

2109:                                             ; preds = %2107
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %2108, ptr noundef %203)
          to label %2110 unwind label %2147

2110:                                             ; preds = %2109
  %2111 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %202, i32 0, i32 1
  store i32 18, ptr %2111, align 8, !tbaa !37
  %2112 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %202, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %2112, ptr noundef nonnull align 8 dereferenceable(48) %196) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %201, ptr noundef %202)
          to label %2113 unwind label %2151

2113:                                             ; preds = %2110
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %199, ptr noundef nonnull align 8 dereferenceable(440) %2105, ptr noundef nonnull align 8 dereferenceable(8) %2106, ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef %201)
          to label %2114 unwind label %2155

2114:                                             ; preds = %2113
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %201) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %202) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %200) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #9
  %2115 = load ptr, ptr %9, align 8, !tbaa !5
  %2116 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %205, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2116, ptr noundef nonnull align 8 dereferenceable(32) %199)
          to label %2117 unwind label %2163

2117:                                             ; preds = %2114
  %2118 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %205, i32 0, i32 1
  %2119 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %2119, ptr %2118, align 8, !tbaa !22
  %2120 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %205, i32 0, i32 2
  %2121 = load i32, ptr %195, align 4, !tbaa !9
  store i32 %2121, ptr %2120, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %204, ptr noundef %205)
          to label %2122 unwind label %2167

2122:                                             ; preds = %2117
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %2115, ptr noundef %204)
          to label %2123 unwind label %2171

2123:                                             ; preds = %2122
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %204) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %205) #9
  %2124 = load ptr, ptr %9, align 8, !tbaa !5
  %2125 = load i32, ptr %195, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %2124, i32 noundef %2125)
          to label %2126 unwind label %2163

2126:                                             ; preds = %2123
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %199) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %196) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %196) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %195) #9
  br label %2180

2127:                                             ; preds = %2085
  %2128 = landingpad { ptr, i32 }
          cleanup
  %2129 = extractvalue { ptr, i32 } %2128, 0
  store ptr %2129, ptr %20, align 8
  %2130 = extractvalue { ptr, i32 } %2128, 1
  store i32 %2130, ptr %21, align 4
  br label %2179

2131:                                             ; preds = %2093, %2088
  %2132 = landingpad { ptr, i32 }
          cleanup
  %2133 = extractvalue { ptr, i32 } %2132, 0
  store ptr %2133, ptr %20, align 8
  %2134 = extractvalue { ptr, i32 } %2132, 1
  store i32 %2134, ptr %21, align 4
  br label %2178

2135:                                             ; preds = %2103
  %2136 = landingpad { ptr, i32 }
          cleanup
  %2137 = extractvalue { ptr, i32 } %2136, 0
  store ptr %2137, ptr %20, align 8
  %2138 = extractvalue { ptr, i32 } %2136, 1
  store i32 %2138, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %197) #9
  br label %2178

2139:                                             ; preds = %2104
  %2140 = landingpad { ptr, i32 }
          cleanup
  %2141 = extractvalue { ptr, i32 } %2140, 0
  store ptr %2141, ptr %20, align 8
  %2142 = extractvalue { ptr, i32 } %2140, 1
  store i32 %2142, ptr %21, align 4
  br label %2162

2143:                                             ; preds = %2107
  %2144 = landingpad { ptr, i32 }
          cleanup
  %2145 = extractvalue { ptr, i32 } %2144, 0
  store ptr %2145, ptr %20, align 8
  %2146 = extractvalue { ptr, i32 } %2144, 1
  store i32 %2146, ptr %21, align 4
  br label %2161

2147:                                             ; preds = %2109
  %2148 = landingpad { ptr, i32 }
          cleanup
  %2149 = extractvalue { ptr, i32 } %2148, 0
  store ptr %2149, ptr %20, align 8
  %2150 = extractvalue { ptr, i32 } %2148, 1
  store i32 %2150, ptr %21, align 4
  br label %2160

2151:                                             ; preds = %2110
  %2152 = landingpad { ptr, i32 }
          cleanup
  %2153 = extractvalue { ptr, i32 } %2152, 0
  store ptr %2153, ptr %20, align 8
  %2154 = extractvalue { ptr, i32 } %2152, 1
  store i32 %2154, ptr %21, align 4
  br label %2159

2155:                                             ; preds = %2113
  %2156 = landingpad { ptr, i32 }
          cleanup
  %2157 = extractvalue { ptr, i32 } %2156, 0
  store ptr %2157, ptr %20, align 8
  %2158 = extractvalue { ptr, i32 } %2156, 1
  store i32 %2158, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %201) #9
  br label %2159

2159:                                             ; preds = %2155, %2151
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %202) #9
  br label %2160

2160:                                             ; preds = %2159, %2147
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %203) #9
  br label %2161

2161:                                             ; preds = %2160, %2143
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %200) #9
  br label %2162

2162:                                             ; preds = %2161, %2139
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #9
  br label %2177

2163:                                             ; preds = %2123, %2114
  %2164 = landingpad { ptr, i32 }
          cleanup
  %2165 = extractvalue { ptr, i32 } %2164, 0
  store ptr %2165, ptr %20, align 8
  %2166 = extractvalue { ptr, i32 } %2164, 1
  store i32 %2166, ptr %21, align 4
  br label %2176

2167:                                             ; preds = %2117
  %2168 = landingpad { ptr, i32 }
          cleanup
  %2169 = extractvalue { ptr, i32 } %2168, 0
  store ptr %2169, ptr %20, align 8
  %2170 = extractvalue { ptr, i32 } %2168, 1
  store i32 %2170, ptr %21, align 4
  br label %2175

2171:                                             ; preds = %2122
  %2172 = landingpad { ptr, i32 }
          cleanup
  %2173 = extractvalue { ptr, i32 } %2172, 0
  store ptr %2173, ptr %20, align 8
  %2174 = extractvalue { ptr, i32 } %2172, 1
  store i32 %2174, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %204) #9
  br label %2175

2175:                                             ; preds = %2171, %2167
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %205) #9
  br label %2176

2176:                                             ; preds = %2175, %2163
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %199) #9
  br label %2177

2177:                                             ; preds = %2176, %2162
  call void @llvm.lifetime.end.p0(i64 32, ptr %199) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %196) #9
  br label %2178

2178:                                             ; preds = %2177, %2135, %2131
  call void @llvm.lifetime.end.p0(i64 48, ptr %196) #9
  br label %2179

2179:                                             ; preds = %2178, %2127
  call void @llvm.lifetime.end.p0(i64 4, ptr %195) #9
  br label %2298

2180:                                             ; preds = %2126, %2076
  %2181 = load ptr, ptr %193, align 8, !tbaa !5
  %2182 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %2181, i32 0, i32 0
  %2183 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %2182)
          to label %2184 unwind label %2081

2184:                                             ; preds = %2180
  %2185 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %2183, i32 0, i32 0
  %2186 = load double, ptr %2185, align 8, !tbaa !62
  %2187 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #9
  %2188 = fcmp oeq double %2186, %2187
  br i1 %2188, label %2189, label %2203

2189:                                             ; preds = %2184
  %2190 = load ptr, ptr %193, align 8, !tbaa !5
  %2191 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %2190, i32 0, i32 2
  %2192 = load i8, ptr %2191, align 8, !tbaa !44, !range !13, !noundef !14
  %2193 = trunc i8 %2192 to i1
  br i1 %2193, label %2194, label %2203

2194:                                             ; preds = %2189
  %2195 = load ptr, ptr %9, align 8, !tbaa !5
  %2196 = load i32, ptr %194, align 4, !tbaa !9
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %206, i32 noundef %2196)
          to label %2197 unwind label %2081

2197:                                             ; preds = %2194
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %2195, ptr noundef %206)
          to label %2198 unwind label %2199

2198:                                             ; preds = %2197
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %206) #9
  br label %2294

2199:                                             ; preds = %2197
  %2200 = landingpad { ptr, i32 }
          cleanup
  %2201 = extractvalue { ptr, i32 } %2200, 0
  store ptr %2201, ptr %20, align 8
  %2202 = extractvalue { ptr, i32 } %2200, 1
  store i32 %2202, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %206) #9
  br label %2298

2203:                                             ; preds = %2189, %2184
  call void @llvm.lifetime.start.p0(i64 48, ptr %207) #9
  %2204 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %209, i32 0, i32 0
  %2205 = load ptr, ptr %193, align 8, !tbaa !5
  %2206 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %2205, i32 0, i32 1
  %2207 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %2206)
          to label %2208 unwind label %2246

2208:                                             ; preds = %2203
  %2209 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %2207, i32 0, i32 0
  %2210 = load double, ptr %2209, align 8, !tbaa !62
  store double %2210, ptr %2204, align 8, !tbaa !62
  %2211 = getelementptr inbounds %"struct.MIR::Constant::Data_Float", ptr %209, i32 0, i32 1
  %2212 = load ptr, ptr %41, align 8, !tbaa !5
  %2213 = load i32, ptr %2212, align 4, !tbaa !20
  store i32 %2213, ptr %2211, align 8, !tbaa !65
  %2214 = getelementptr inbounds { double, i32 }, ptr %209, i32 0, i32 0
  %2215 = load double, ptr %2214, align 8
  %2216 = getelementptr inbounds { double, i32 }, ptr %209, i32 0, i32 1
  %2217 = load i32, ptr %2216, align 8
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %208, double %2215, i32 %2217)
          to label %2218 unwind label %2246

2218:                                             ; preds = %2208
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %207, ptr noundef %208)
          to label %2219 unwind label %2250

2219:                                             ; preds = %2218
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %208) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %210) #9
  %2220 = load ptr, ptr %193, align 8, !tbaa !5
  %2221 = getelementptr inbounds %"struct.PatternRule::Data_ValueRange", ptr %2220, i32 0, i32 2
  %2222 = load i8, ptr %2221, align 8, !tbaa !44, !range !13, !noundef !14
  %2223 = trunc i8 %2222 to i1
  %2224 = zext i1 %2223 to i64
  %2225 = select i1 %2223, i32 16, i32 17
  store i32 %2225, ptr %210, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 32, ptr %211) #9
  %2226 = load ptr, ptr %9, align 8, !tbaa !5
  %2227 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %212) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %212, i32 noundef 14)
          to label %2228 unwind label %2254

2228:                                             ; preds = %2219
  %2229 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %214, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %215, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %2230 unwind label %2258

2230:                                             ; preds = %2228
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %2229, ptr noundef %215)
          to label %2231 unwind label %2262

2231:                                             ; preds = %2230
  %2232 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %214, i32 0, i32 1
  %2233 = load i32, ptr %210, align 4, !tbaa !48
  store i32 %2233, ptr %2232, align 8, !tbaa !37
  %2234 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %214, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %2234, ptr noundef nonnull align 8 dereferenceable(48) %207) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %213, ptr noundef %214)
          to label %2235 unwind label %2266

2235:                                             ; preds = %2231
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %211, ptr noundef nonnull align 8 dereferenceable(440) %2226, ptr noundef nonnull align 8 dereferenceable(8) %2227, ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef %213)
          to label %2236 unwind label %2270

2236:                                             ; preds = %2235
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %213) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %214) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #9
  %2237 = load ptr, ptr %9, align 8, !tbaa !5
  %2238 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %217, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2238, ptr noundef nonnull align 8 dereferenceable(32) %211)
          to label %2239 unwind label %2278

2239:                                             ; preds = %2236
  %2240 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %217, i32 0, i32 1
  %2241 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %2241, ptr %2240, align 8, !tbaa !22
  %2242 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %217, i32 0, i32 2
  %2243 = load i32, ptr %194, align 4, !tbaa !9
  store i32 %2243, ptr %2242, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %216, ptr noundef %217)
          to label %2244 unwind label %2282

2244:                                             ; preds = %2239
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %2237, ptr noundef %216)
          to label %2245 unwind label %2286

2245:                                             ; preds = %2244
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %216) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %217) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %211) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %210) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %207) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %207) #9
  br label %2294

2246:                                             ; preds = %2208, %2203
  %2247 = landingpad { ptr, i32 }
          cleanup
  %2248 = extractvalue { ptr, i32 } %2247, 0
  store ptr %2248, ptr %20, align 8
  %2249 = extractvalue { ptr, i32 } %2247, 1
  store i32 %2249, ptr %21, align 4
  br label %2293

2250:                                             ; preds = %2218
  %2251 = landingpad { ptr, i32 }
          cleanup
  %2252 = extractvalue { ptr, i32 } %2251, 0
  store ptr %2252, ptr %20, align 8
  %2253 = extractvalue { ptr, i32 } %2251, 1
  store i32 %2253, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %208) #9
  br label %2293

2254:                                             ; preds = %2219
  %2255 = landingpad { ptr, i32 }
          cleanup
  %2256 = extractvalue { ptr, i32 } %2255, 0
  store ptr %2256, ptr %20, align 8
  %2257 = extractvalue { ptr, i32 } %2255, 1
  store i32 %2257, ptr %21, align 4
  br label %2277

2258:                                             ; preds = %2228
  %2259 = landingpad { ptr, i32 }
          cleanup
  %2260 = extractvalue { ptr, i32 } %2259, 0
  store ptr %2260, ptr %20, align 8
  %2261 = extractvalue { ptr, i32 } %2259, 1
  store i32 %2261, ptr %21, align 4
  br label %2276

2262:                                             ; preds = %2230
  %2263 = landingpad { ptr, i32 }
          cleanup
  %2264 = extractvalue { ptr, i32 } %2263, 0
  store ptr %2264, ptr %20, align 8
  %2265 = extractvalue { ptr, i32 } %2263, 1
  store i32 %2265, ptr %21, align 4
  br label %2275

2266:                                             ; preds = %2231
  %2267 = landingpad { ptr, i32 }
          cleanup
  %2268 = extractvalue { ptr, i32 } %2267, 0
  store ptr %2268, ptr %20, align 8
  %2269 = extractvalue { ptr, i32 } %2267, 1
  store i32 %2269, ptr %21, align 4
  br label %2274

2270:                                             ; preds = %2235
  %2271 = landingpad { ptr, i32 }
          cleanup
  %2272 = extractvalue { ptr, i32 } %2271, 0
  store ptr %2272, ptr %20, align 8
  %2273 = extractvalue { ptr, i32 } %2271, 1
  store i32 %2273, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %213) #9
  br label %2274

2274:                                             ; preds = %2270, %2266
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %214) #9
  br label %2275

2275:                                             ; preds = %2274, %2262
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %215) #9
  br label %2276

2276:                                             ; preds = %2275, %2258
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #9
  br label %2277

2277:                                             ; preds = %2276, %2254
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #9
  br label %2292

2278:                                             ; preds = %2236
  %2279 = landingpad { ptr, i32 }
          cleanup
  %2280 = extractvalue { ptr, i32 } %2279, 0
  store ptr %2280, ptr %20, align 8
  %2281 = extractvalue { ptr, i32 } %2279, 1
  store i32 %2281, ptr %21, align 4
  br label %2291

2282:                                             ; preds = %2239
  %2283 = landingpad { ptr, i32 }
          cleanup
  %2284 = extractvalue { ptr, i32 } %2283, 0
  store ptr %2284, ptr %20, align 8
  %2285 = extractvalue { ptr, i32 } %2283, 1
  store i32 %2285, ptr %21, align 4
  br label %2290

2286:                                             ; preds = %2244
  %2287 = landingpad { ptr, i32 }
          cleanup
  %2288 = extractvalue { ptr, i32 } %2287, 0
  store ptr %2288, ptr %20, align 8
  %2289 = extractvalue { ptr, i32 } %2287, 1
  store i32 %2289, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %216) #9
  br label %2290

2290:                                             ; preds = %2286, %2282
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %217) #9
  br label %2291

2291:                                             ; preds = %2290, %2278
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %211) #9
  br label %2292

2292:                                             ; preds = %2291, %2277
  call void @llvm.lifetime.end.p0(i64 32, ptr %211) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %210) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %207) #9
  br label %2293

2293:                                             ; preds = %2292, %2250, %2246
  call void @llvm.lifetime.end.p0(i64 48, ptr %207) #9
  br label %2298

2294:                                             ; preds = %2245, %2198
  %2295 = load ptr, ptr %9, align 8, !tbaa !5
  %2296 = load i32, ptr %194, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %2295, i32 noundef %2296)
          to label %2297 unwind label %2081

2297:                                             ; preds = %2294
  call void @llvm.lifetime.end.p0(i64 4, ptr %194) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #9
  br label %2322

2298:                                             ; preds = %2293, %2199, %2179, %2081
  call void @llvm.lifetime.end.p0(i64 4, ptr %194) #9
  br label %2299

2299:                                             ; preds = %2298, %2077
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #9
  br label %2487

2300:                                             ; preds = %1954
  br label %2301

2301:                                             ; preds = %2300
  call void @llvm.lifetime.start.p0(i64 8, ptr %218) #9
  %2302 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull align 8 dereferenceable(8) %2302)
          to label %2303 unwind label %2307

2303:                                             ; preds = %2301
  call void @llvm.lifetime.start.p0(i64 1, ptr %220) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %219, ptr noundef nonnull align 1 dereferenceable(1) %220) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef %219)
          to label %2304 unwind label %2311

2304:                                             ; preds = %2303
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %220) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #9
  %2305 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2305, ptr noundef @.str.10)
          to label %2306 unwind label %2316

2306:                                             ; preds = %2304
  invoke void @__cxa_throw(ptr %2305, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %664

2307:                                             ; preds = %2301
  %2308 = landingpad { ptr, i32 }
          cleanup
  %2309 = extractvalue { ptr, i32 } %2308, 0
  store ptr %2309, ptr %20, align 8
  %2310 = extractvalue { ptr, i32 } %2308, 1
  store i32 %2310, ptr %21, align 4
  br label %2315

2311:                                             ; preds = %2303
  %2312 = landingpad { ptr, i32 }
          cleanup
  %2313 = extractvalue { ptr, i32 } %2312, 0
  store ptr %2313, ptr %20, align 8
  %2314 = extractvalue { ptr, i32 } %2312, 1
  store i32 %2314, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %220) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #9
  br label %2315

2315:                                             ; preds = %2311, %2307
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #9
  br label %2487

2316:                                             ; preds = %2304
  %2317 = landingpad { ptr, i32 }
          cleanup
  %2318 = extractvalue { ptr, i32 } %2317, 0
  store ptr %2318, ptr %20, align 8
  %2319 = extractvalue { ptr, i32 } %2317, 1
  store i32 %2319, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2305) #9
  br label %2487

2320:                                             ; No predecessors!
  br label %2321

2321:                                             ; preds = %2320
  br label %2322

2322:                                             ; preds = %2321, %2297, %2000
  br label %2485

2323:                                             ; preds = %668
  br label %2324

2324:                                             ; preds = %2323
  %2325 = load ptr, ptr %24, align 8, !tbaa !5
  %2326 = invoke noundef zeroext i1 @_ZNK11PatternRule8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %2325)
          to label %2327 unwind label %664

2327:                                             ; preds = %2324
  br i1 %2326, label %2328, label %2334

2328:                                             ; preds = %2327
  %2329 = load ptr, ptr %24, align 8, !tbaa !5
  %2330 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %2329)
          to label %2331 unwind label %664

2331:                                             ; preds = %2328
  %2332 = invoke noundef zeroext i1 @_ZNK3MIR8Constant15is_StaticStringEv(ptr noundef nonnull align 8 dereferenceable(40) %2330)
          to label %2333 unwind label %664

2333:                                             ; preds = %2331
  br i1 %2332, label %2353, label %2334

2334:                                             ; preds = %2333, %2327
  call void @llvm.lifetime.start.p0(i64 8, ptr %221) #9
  %2335 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull align 8 dereferenceable(8) %2335)
          to label %2336 unwind label %2340

2336:                                             ; preds = %2334
  call void @llvm.lifetime.start.p0(i64 1, ptr %223) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %222, ptr noundef nonnull align 1 dereferenceable(1) %223) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef %222)
          to label %2337 unwind label %2344

2337:                                             ; preds = %2336
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %223) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #9
  %2338 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2338, ptr noundef @.str.10)
          to label %2339 unwind label %2349

2339:                                             ; preds = %2337
  invoke void @__cxa_throw(ptr %2338, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %664

2340:                                             ; preds = %2334
  %2341 = landingpad { ptr, i32 }
          cleanup
  %2342 = extractvalue { ptr, i32 } %2341, 0
  store ptr %2342, ptr %20, align 8
  %2343 = extractvalue { ptr, i32 } %2341, 1
  store i32 %2343, ptr %21, align 4
  br label %2348

2344:                                             ; preds = %2336
  %2345 = landingpad { ptr, i32 }
          cleanup
  %2346 = extractvalue { ptr, i32 } %2345, 0
  store ptr %2346, ptr %20, align 8
  %2347 = extractvalue { ptr, i32 } %2345, 1
  store i32 %2347, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %222) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %223) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %221) #9
  br label %2348

2348:                                             ; preds = %2344, %2340
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #9
  br label %2487

2349:                                             ; preds = %2337
  %2350 = landingpad { ptr, i32 }
          cleanup
  %2351 = extractvalue { ptr, i32 } %2350, 0
  store ptr %2351, ptr %20, align 8
  %2352 = extractvalue { ptr, i32 } %2350, 1
  store i32 %2352, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2338) #9
  br label %2487

2353:                                             ; preds = %2333
  br label %2354

2354:                                             ; preds = %2353
  br label %2355

2355:                                             ; preds = %2354
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #9
  %2356 = load ptr, ptr %24, align 8, !tbaa !5
  %2357 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %2356)
          to label %2358 unwind label %2368

2358:                                             ; preds = %2355
  store ptr %2357, ptr %224, align 8, !tbaa !5
  br label %2359

2359:                                             ; preds = %2358
  %2360 = invoke noundef zeroext i1 @_ZNK3MIR6LValue8is_DerefEv(ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %2361 unwind label %2368

2361:                                             ; preds = %2359
  br i1 %2360, label %2385, label %2362

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

2364:                                             ; preds = %2362
  call void @llvm.lifetime.start.p0(i64 1, ptr %227) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_9vEEOT_"(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 %2365 unwind label %2376

2365:                                             ; preds = %2364
  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
  %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 %2381

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

2368:                                             ; preds = %2367, %2359, %2355
  %2369 = landingpad { ptr, i32 }
          cleanup
  %2370 = extractvalue { ptr, i32 } %2369, 0
  store ptr %2370, ptr %20, align 8
  %2371 = extractvalue { ptr, i32 } %2369, 1
  store i32 %2371, ptr %21, align 4
  br label %2484

2372:                                             ; preds = %2362
  %2373 = landingpad { ptr, i32 }
          cleanup
  %2374 = extractvalue { ptr, i32 } %2373, 0
  store ptr %2374, ptr %20, align 8
  %2375 = extractvalue { ptr, i32 } %2373, 1
  store i32 %2375, ptr %21, align 4
  br label %2380

2376:                                             ; preds = %2364
  %2377 = landingpad { ptr, i32 }
          cleanup
  %2378 = extractvalue { ptr, i32 } %2377, 0
  store ptr %2378, ptr %20, align 8
  %2379 = extractvalue { ptr, i32 } %2377, 1
  store i32 %2379, ptr %21, 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 %2380

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

2381:                                             ; preds = %2365
  %2382 = landingpad { ptr, i32 }
          cleanup
  %2383 = extractvalue { ptr, i32 } %2382, 0
  store ptr %2383, ptr %20, align 8
  %2384 = extractvalue { ptr, i32 } %2382, 1
  store i32 %2384, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2366) #9
  br label %2484

2385:                                             ; preds = %2361
  br label %2386

2386:                                             ; preds = %2385
  br label %2387

2387:                                             ; preds = %2386
  %2388 = getelementptr inbounds %"struct.MIR::LValue", ptr %25, i32 0, i32 1
  call void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %2388) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %228) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %228, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %2389 unwind label %2421

2389:                                             ; preds = %2387
  call void @llvm.lifetime.start.p0(i64 4, ptr %229) #9
  %2390 = load ptr, ptr %9, align 8, !tbaa !5
  %2391 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %2390)
          to label %2392 unwind label %2425

2392:                                             ; preds = %2389
  store i32 %2391, ptr %229, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %230) #9
  %2393 = load ptr, ptr %224, align 8, !tbaa !5
  %2394 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR8Constant15as_StaticStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(40) %2393)
          to label %2395 unwind label %2429

2395:                                             ; preds = %2392
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %232, ptr noundef nonnull align 8 dereferenceable(32) %2394)
          to label %2396 unwind label %2429

2396:                                             ; preds = %2395
  invoke void @_ZN3MIR8ConstantC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %231, ptr noundef %232)
          to label %2397 unwind label %2433

2397:                                             ; preds = %2396
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %230, ptr noundef %231)
          to label %2398 unwind label %2437

2398:                                             ; preds = %2397
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %231) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %233) #9
  %2399 = load ptr, ptr %9, align 8, !tbaa !5
  %2400 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %234) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %234, i32 noundef 14)
          to label %2401 unwind label %2442

2401:                                             ; preds = %2398
  %2402 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %236, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %237, ptr noundef nonnull align 8 dereferenceable(32) %228)
          to label %2403 unwind label %2446

2403:                                             ; preds = %2401
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %2402, ptr noundef %237)
          to label %2404 unwind label %2450

2404:                                             ; preds = %2403
  %2405 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %236, i32 0, i32 1
  store i32 14, ptr %2405, align 8, !tbaa !37
  %2406 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %236, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %2406, ptr noundef nonnull align 8 dereferenceable(48) %230) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %235, ptr noundef %236)
          to label %2407 unwind label %2454

2407:                                             ; preds = %2404
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %233, ptr noundef nonnull align 8 dereferenceable(440) %2399, ptr noundef nonnull align 8 dereferenceable(8) %2400, ptr noundef nonnull align 8 dereferenceable(8) %234, ptr noundef %235)
          to label %2408 unwind label %2458

2408:                                             ; preds = %2407
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %235) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %236) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #9
  %2409 = load ptr, ptr %9, align 8, !tbaa !5
  %2410 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %239, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %2410, ptr noundef nonnull align 8 dereferenceable(32) %233)
          to label %2411 unwind label %2466

2411:                                             ; preds = %2408
  %2412 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %239, i32 0, i32 1
  %2413 = load i32, ptr %229, align 4, !tbaa !9
  store i32 %2413, ptr %2412, align 8, !tbaa !22
  %2414 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %239, i32 0, i32 2
  %2415 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %2415, ptr %2414, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %238, ptr noundef %239)
          to label %2416 unwind label %2470

2416:                                             ; preds = %2411
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %2409, ptr noundef %238)
          to label %2417 unwind label %2474

2417:                                             ; preds = %2416
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %238) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %239) #9
  %2418 = load ptr, ptr %9, align 8, !tbaa !5
  %2419 = load i32, ptr %229, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %2418, i32 noundef %2419)
          to label %2420 unwind label %2466

2420:                                             ; preds = %2417
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %233) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %230) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %230) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %229) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %228) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #9
  br label %2485

2421:                                             ; preds = %2387
  %2422 = landingpad { ptr, i32 }
          cleanup
  %2423 = extractvalue { ptr, i32 } %2422, 0
  store ptr %2423, ptr %20, align 8
  %2424 = extractvalue { ptr, i32 } %2422, 1
  store i32 %2424, ptr %21, align 4
  br label %2483

2425:                                             ; preds = %2389
  %2426 = landingpad { ptr, i32 }
          cleanup
  %2427 = extractvalue { ptr, i32 } %2426, 0
  store ptr %2427, ptr %20, align 8
  %2428 = extractvalue { ptr, i32 } %2426, 1
  store i32 %2428, ptr %21, align 4
  br label %2482

2429:                                             ; preds = %2395, %2392
  %2430 = landingpad { ptr, i32 }
          cleanup
  %2431 = extractvalue { ptr, i32 } %2430, 0
  store ptr %2431, ptr %20, align 8
  %2432 = extractvalue { ptr, i32 } %2430, 1
  store i32 %2432, ptr %21, align 4
  br label %2481

2433:                                             ; preds = %2396
  %2434 = landingpad { ptr, i32 }
          cleanup
  %2435 = extractvalue { ptr, i32 } %2434, 0
  store ptr %2435, ptr %20, align 8
  %2436 = extractvalue { ptr, i32 } %2434, 1
  store i32 %2436, ptr %21, align 4
  br label %2441

2437:                                             ; preds = %2397
  %2438 = landingpad { ptr, i32 }
          cleanup
  %2439 = extractvalue { ptr, i32 } %2438, 0
  store ptr %2439, ptr %20, align 8
  %2440 = extractvalue { ptr, i32 } %2438, 1
  store i32 %2440, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %231) #9
  br label %2441

2441:                                             ; preds = %2437, %2433
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %232) #9
  br label %2481

2442:                                             ; preds = %2398
  %2443 = landingpad { ptr, i32 }
          cleanup
  %2444 = extractvalue { ptr, i32 } %2443, 0
  store ptr %2444, ptr %20, align 8
  %2445 = extractvalue { ptr, i32 } %2443, 1
  store i32 %2445, ptr %21, align 4
  br label %2465

2446:                                             ; preds = %2401
  %2447 = landingpad { ptr, i32 }
          cleanup
  %2448 = extractvalue { ptr, i32 } %2447, 0
  store ptr %2448, ptr %20, align 8
  %2449 = extractvalue { ptr, i32 } %2447, 1
  store i32 %2449, ptr %21, align 4
  br label %2464

2450:                                             ; preds = %2403
  %2451 = landingpad { ptr, i32 }
          cleanup
  %2452 = extractvalue { ptr, i32 } %2451, 0
  store ptr %2452, ptr %20, align 8
  %2453 = extractvalue { ptr, i32 } %2451, 1
  store i32 %2453, ptr %21, align 4
  br label %2463

2454:                                             ; preds = %2404
  %2455 = landingpad { ptr, i32 }
          cleanup
  %2456 = extractvalue { ptr, i32 } %2455, 0
  store ptr %2456, ptr %20, align 8
  %2457 = extractvalue { ptr, i32 } %2455, 1
  store i32 %2457, ptr %21, align 4
  br label %2462

2458:                                             ; preds = %2407
  %2459 = landingpad { ptr, i32 }
          cleanup
  %2460 = extractvalue { ptr, i32 } %2459, 0
  store ptr %2460, ptr %20, align 8
  %2461 = extractvalue { ptr, i32 } %2459, 1
  store i32 %2461, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %235) #9
  br label %2462

2462:                                             ; preds = %2458, %2454
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %236) #9
  br label %2463

2463:                                             ; preds = %2462, %2450
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %237) #9
  br label %2464

2464:                                             ; preds = %2463, %2446
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %234) #9
  br label %2465

2465:                                             ; preds = %2464, %2442
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #9
  br label %2480

2466:                                             ; preds = %2417, %2408
  %2467 = landingpad { ptr, i32 }
          cleanup
  %2468 = extractvalue { ptr, i32 } %2467, 0
  store ptr %2468, ptr %20, align 8
  %2469 = extractvalue { ptr, i32 } %2467, 1
  store i32 %2469, ptr %21, align 4
  br label %2479

2470:                                             ; preds = %2411
  %2471 = landingpad { ptr, i32 }
          cleanup
  %2472 = extractvalue { ptr, i32 } %2471, 0
  store ptr %2472, ptr %20, align 8
  %2473 = extractvalue { ptr, i32 } %2471, 1
  store i32 %2473, ptr %21, align 4
  br label %2478

2474:                                             ; preds = %2416
  %2475 = landingpad { ptr, i32 }
          cleanup
  %2476 = extractvalue { ptr, i32 } %2475, 0
  store ptr %2476, ptr %20, align 8
  %2477 = extractvalue { ptr, i32 } %2475, 1
  store i32 %2477, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %238) #9
  br label %2478

2478:                                             ; preds = %2474, %2470
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %239) #9
  br label %2479

2479:                                             ; preds = %2478, %2466
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #9
  br label %2480

2480:                                             ; preds = %2479, %2465
  call void @llvm.lifetime.end.p0(i64 32, ptr %233) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %230) #9
  br label %2481

2481:                                             ; preds = %2480, %2441, %2429
  call void @llvm.lifetime.end.p0(i64 48, ptr %230) #9
  br label %2482

2482:                                             ; preds = %2481, %2425
  call void @llvm.lifetime.end.p0(i64 4, ptr %229) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %228) #9
  br label %2483

2483:                                             ; preds = %2482, %2421
  call void @llvm.lifetime.end.p0(i64 32, ptr %228) #9
  br label %2484

2484:                                             ; preds = %2483, %2381, %2380, %2368
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #9
  br label %2487

2485:                                             ; preds = %2420, %2322, %1950, %1594, %1169, %758, %668
  br label %2486

2486:                                             ; preds = %2485
  store i8 0, ptr %40, align 1, !tbaa !11
  br label %659, !llvm.loop !66

2487:                                             ; preds = %2484, %2349, %2348, %2316, %2315, %2299, %2058, %1944, %1943, %1927, %1697, %1591, %1166, %760, %691, %690, %664
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  br label %4338

2488:                                             ; preds = %663
  br label %2489

2489:                                             ; preds = %2488
  store i8 0, ptr %40, align 1, !tbaa !11
  br label %651, !llvm.loop !67

2490:                                             ; preds = %654
  br label %4336

2491:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %240) #9
  store i8 1, ptr %240, align 1, !tbaa !11
  br label %2492

2492:                                             ; preds = %3196, %2491
  %2493 = load i8, ptr %240, align 1, !tbaa !11, !range !13, !noundef !14
  %2494 = trunc i8 %2493 to i1
  br i1 %2494, label %2496, label %2495

2495:                                             ; preds = %2492
  store i32 93, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #9
  br label %3197

2496:                                             ; preds = %2492
  call void @llvm.lifetime.start.p0(i64 8, ptr %241) #9
  %2497 = load ptr, ptr %29, align 8, !tbaa !5
  %2498 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2497)
          to label %2499 unwind label %2505

2499:                                             ; preds = %2496
  store ptr %2498, ptr %241, align 8, !tbaa !5
  br label %2500

2500:                                             ; preds = %3193, %2499
  %2501 = load ptr, ptr %241, align 8, !tbaa !5
  %2502 = load i8, ptr %240, align 1, !tbaa !11, !range !13, !noundef !14
  %2503 = trunc i8 %2502 to i1
  br i1 %2503, label %2509, label %2504

2504:                                             ; preds = %2500
  store i32 96, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #9
  br label %3195

2505:                                             ; preds = %2496
  %2506 = landingpad { ptr, i32 }
          cleanup
  %2507 = extractvalue { ptr, i32 } %2506, 0
  store ptr %2507, ptr %20, align 8
  %2508 = extractvalue { ptr, i32 } %2506, 1
  store i32 %2508, ptr %21, align 4
  br label %3194

2509:                                             ; preds = %2500
  call void @llvm.lifetime.start.p0(i64 1, ptr %242) #9
  store i8 1, ptr %242, align 1, !tbaa !11
  br label %2510

2510:                                             ; preds = %3191, %2509
  %2511 = load i8, ptr %242, align 1, !tbaa !11, !range !13, !noundef !14
  %2512 = trunc i8 %2511 to i1
  br i1 %2512, label %2514, label %2513

2513:                                             ; preds = %2510
  store i32 99, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %242) #9
  br label %3192

2514:                                             ; preds = %2510
  call void @llvm.lifetime.start.p0(i64 8, ptr %243) #9
  %2515 = load ptr, ptr %241, align 8, !tbaa !5
  %2516 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2515, i32 0, i32 1
  store ptr %2516, ptr %243, align 8, !tbaa !5
  br label %2517

2517:                                             ; preds = %3188, %2514
  %2518 = load i8, ptr %242, align 1, !tbaa !11, !range !13, !noundef !14
  %2519 = trunc i8 %2518 to i1
  br i1 %2519, label %2521, label %2520

2520:                                             ; preds = %2517
  store i32 102, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #9
  br label %3190

2521:                                             ; preds = %2517
  %2522 = load ptr, ptr %243, align 8, !tbaa !5
  %2523 = invoke noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %2522)
          to label %2524 unwind label %2525

2524:                                             ; preds = %2521
  switch i32 %2523, label %3187 [
    i32 0, label %2529
    i32 1, label %2530
    i32 2, label %2577
    i32 4, label %2624
    i32 5, label %2825
    i32 3, label %2876
    i32 6, label %2927
  ]

2525:                                             ; preds = %2521
  %2526 = landingpad { ptr, i32 }
          cleanup
  %2527 = extractvalue { ptr, i32 } %2526, 0
  store ptr %2527, ptr %20, align 8
  %2528 = extractvalue { ptr, i32 } %2526, 1
  store i32 %2528, ptr %21, align 4
  br label %3189

2529:                                             ; preds = %2524
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 2675, ptr noundef @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

2530:                                             ; preds = %2524
  call void @llvm.lifetime.start.p0(i64 1, ptr %244) #9
  store i8 1, ptr %244, align 1, !tbaa !11
  br label %2531

2531:                                             ; preds = %2575, %2530
  %2532 = load i8, ptr %244, align 1, !tbaa !11, !range !13, !noundef !14
  %2533 = trunc i8 %2532 to i1
  br i1 %2533, label %2535, label %2534

2534:                                             ; preds = %2531
  store i32 106, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %244) #9
  br label %2576

2535:                                             ; preds = %2531
  call void @llvm.lifetime.start.p0(i64 8, ptr %245) #9
  %2536 = load ptr, ptr %243, align 8, !tbaa !5
  %2537 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %2536)
          to label %2538 unwind label %2544

2538:                                             ; preds = %2535
  store ptr %2537, ptr %245, align 8, !tbaa !5
  br label %2539

2539:                                             ; preds = %2572, %2538
  %2540 = load ptr, ptr %245, align 8, !tbaa !5
  %2541 = load i8, ptr %244, align 1, !tbaa !11, !range !13, !noundef !14
  %2542 = trunc i8 %2541 to i1
  br i1 %2542, label %2548, label %2543

2543:                                             ; preds = %2539
  store i32 109, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #9
  br label %2574

2544:                                             ; preds = %2556, %2535
  %2545 = landingpad { ptr, i32 }
          cleanup
  %2546 = extractvalue { ptr, i32 } %2545, 0
  store ptr %2546, ptr %20, align 8
  %2547 = extractvalue { ptr, i32 } %2545, 1
  store i32 %2547, ptr %21, align 4
  br label %2573

2548:                                             ; preds = %2539
  br label %2549

2549:                                             ; preds = %2548
  call void @llvm.lifetime.start.p0(i64 8, ptr %246) #9
  %2550 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull align 8 dereferenceable(8) %2550)
          to label %2551 unwind label %2557

2551:                                             ; preds = %2549
  call void @llvm.lifetime.start.p0(i64 8, ptr %248) #9
  %2552 = getelementptr inbounds %class.anon.482, ptr %248, i32 0, i32 0
  %2553 = load ptr, ptr %241, align 8, !tbaa !5
  store ptr %2553, ptr %2552, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %247, ptr noundef nonnull align 8 dereferenceable(8) %248) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef %247)
          to label %2554 unwind label %2561

2554:                                             ; preds = %2551
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %248) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #9
  %2555 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2555, ptr noundef @.str.10)
          to label %2556 unwind label %2566

2556:                                             ; preds = %2554
  invoke void @__cxa_throw(ptr %2555, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %2544

2557:                                             ; preds = %2549
  %2558 = landingpad { ptr, i32 }
          cleanup
  %2559 = extractvalue { ptr, i32 } %2558, 0
  store ptr %2559, ptr %20, align 8
  %2560 = extractvalue { ptr, i32 } %2558, 1
  store i32 %2560, ptr %21, align 4
  br label %2565

2561:                                             ; preds = %2551
  %2562 = landingpad { ptr, i32 }
          cleanup
  %2563 = extractvalue { ptr, i32 } %2562, 0
  store ptr %2563, ptr %20, align 8
  %2564 = extractvalue { ptr, i32 } %2562, 1
  store i32 %2564, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %248) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #9
  br label %2565

2565:                                             ; preds = %2561, %2557
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #9
  br label %2573

2566:                                             ; preds = %2554
  %2567 = landingpad { ptr, i32 }
          cleanup
  %2568 = extractvalue { ptr, i32 } %2567, 0
  store ptr %2568, ptr %20, align 8
  %2569 = extractvalue { ptr, i32 } %2567, 1
  store i32 %2569, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2555) #9
  br label %2573

2570:                                             ; No predecessors!
  br label %2571

2571:                                             ; preds = %2570
  br label %2572

2572:                                             ; preds = %2571
  store i8 0, ptr %244, align 1, !tbaa !11
  br label %2539, !llvm.loop !68

2573:                                             ; preds = %2566, %2565, %2544
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %244) #9
  br label %3189

2574:                                             ; preds = %2543
  br label %2575

2575:                                             ; preds = %2574
  store i8 0, ptr %244, align 1, !tbaa !11
  br label %2531, !llvm.loop !69

2576:                                             ; preds = %2534
  br label %3187

2577:                                             ; preds = %2524
  call void @llvm.lifetime.start.p0(i64 1, ptr %249) #9
  store i8 1, ptr %249, align 1, !tbaa !11
  br label %2578

2578:                                             ; preds = %2622, %2577
  %2579 = load i8, ptr %249, align 1, !tbaa !11, !range !13, !noundef !14
  %2580 = trunc i8 %2579 to i1
  br i1 %2580, label %2582, label %2581

2581:                                             ; preds = %2578
  store i32 114, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %249) #9
  br label %2623

2582:                                             ; preds = %2578
  call void @llvm.lifetime.start.p0(i64 8, ptr %250) #9
  %2583 = load ptr, ptr %243, align 8, !tbaa !5
  %2584 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %2583)
          to label %2585 unwind label %2591

2585:                                             ; preds = %2582
  store ptr %2584, ptr %250, align 8, !tbaa !5
  br label %2586

2586:                                             ; preds = %2619, %2585
  %2587 = load ptr, ptr %250, align 8, !tbaa !5
  %2588 = load i8, ptr %249, align 1, !tbaa !11, !range !13, !noundef !14
  %2589 = trunc i8 %2588 to i1
  br i1 %2589, label %2595, label %2590

2590:                                             ; preds = %2586
  store i32 117, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #9
  br label %2621

2591:                                             ; preds = %2603, %2582
  %2592 = landingpad { ptr, i32 }
          cleanup
  %2593 = extractvalue { ptr, i32 } %2592, 0
  store ptr %2593, ptr %20, align 8
  %2594 = extractvalue { ptr, i32 } %2592, 1
  store i32 %2594, ptr %21, align 4
  br label %2620

2595:                                             ; preds = %2586
  br label %2596

2596:                                             ; preds = %2595
  call void @llvm.lifetime.start.p0(i64 8, ptr %251) #9
  %2597 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef nonnull align 8 dereferenceable(8) %2597)
          to label %2598 unwind label %2604

2598:                                             ; preds = %2596
  call void @llvm.lifetime.start.p0(i64 8, ptr %253) #9
  %2599 = getelementptr inbounds %class.anon.483, ptr %253, i32 0, i32 0
  %2600 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %2600, ptr %2599, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %252, ptr noundef nonnull align 8 dereferenceable(8) %253) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef %252)
          to label %2601 unwind label %2608

2601:                                             ; preds = %2598
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %253) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %251) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #9
  %2602 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2602, ptr noundef @.str.10)
          to label %2603 unwind label %2613

2603:                                             ; preds = %2601
  invoke void @__cxa_throw(ptr %2602, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %2591

2604:                                             ; preds = %2596
  %2605 = landingpad { ptr, i32 }
          cleanup
  %2606 = extractvalue { ptr, i32 } %2605, 0
  store ptr %2606, ptr %20, align 8
  %2607 = extractvalue { ptr, i32 } %2605, 1
  store i32 %2607, ptr %21, align 4
  br label %2612

2608:                                             ; preds = %2598
  %2609 = landingpad { ptr, i32 }
          cleanup
  %2610 = extractvalue { ptr, i32 } %2609, 0
  store ptr %2610, ptr %20, align 8
  %2611 = extractvalue { ptr, i32 } %2609, 1
  store i32 %2611, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %252) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %253) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %251) #9
  br label %2612

2612:                                             ; preds = %2608, %2604
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #9
  br label %2620

2613:                                             ; preds = %2601
  %2614 = landingpad { ptr, i32 }
          cleanup
  %2615 = extractvalue { ptr, i32 } %2614, 0
  store ptr %2615, ptr %20, align 8
  %2616 = extractvalue { ptr, i32 } %2614, 1
  store i32 %2616, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2602) #9
  br label %2620

2617:                                             ; No predecessors!
  br label %2618

2618:                                             ; preds = %2617
  br label %2619

2619:                                             ; preds = %2618
  store i8 0, ptr %249, align 1, !tbaa !11
  br label %2586, !llvm.loop !70

2620:                                             ; preds = %2613, %2612, %2591
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %249) #9
  br label %3189

2621:                                             ; preds = %2590
  br label %2622

2622:                                             ; preds = %2621
  store i8 0, ptr %249, align 1, !tbaa !11
  br label %2578, !llvm.loop !71

2623:                                             ; preds = %2581
  br label %3187

2624:                                             ; preds = %2524
  call void @llvm.lifetime.start.p0(i64 1, ptr %254) #9
  store i8 1, ptr %254, align 1, !tbaa !11
  br label %2625

2625:                                             ; preds = %2823, %2624
  %2626 = load i8, ptr %254, align 1, !tbaa !11, !range !13, !noundef !14
  %2627 = trunc i8 %2626 to i1
  br i1 %2627, label %2629, label %2628

2628:                                             ; preds = %2625
  store i32 122, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %254) #9
  br label %2824

2629:                                             ; preds = %2625
  call void @llvm.lifetime.start.p0(i64 8, ptr %255) #9
  %2630 = load ptr, ptr %243, align 8, !tbaa !5
  %2631 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %2630)
          to label %2632 unwind label %2638

2632:                                             ; preds = %2629
  store ptr %2631, ptr %255, align 8, !tbaa !5
  br label %2633

2633:                                             ; preds = %2820, %2632
  %2634 = load ptr, ptr %255, align 8, !tbaa !5
  %2635 = load i8, ptr %254, align 1, !tbaa !11, !range !13, !noundef !14
  %2636 = trunc i8 %2635 to i1
  br i1 %2636, label %2642, label %2637

2637:                                             ; preds = %2633
  store i32 125, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #9
  br label %2822

2638:                                             ; preds = %2629
  %2639 = landingpad { ptr, i32 }
          cleanup
  %2640 = extractvalue { ptr, i32 } %2639, 0
  store ptr %2640, ptr %20, align 8
  %2641 = extractvalue { ptr, i32 } %2639, 1
  store i32 %2641, ptr %21, align 4
  br label %2821

2642:                                             ; preds = %2633
  call void @llvm.lifetime.start.p0(i64 8, ptr %256) #9
  %2643 = load ptr, ptr %255, align 8, !tbaa !5
  %2644 = load ptr, ptr %2643, align 8, !tbaa !5
  %2645 = getelementptr inbounds %"class.HIR::Struct", ptr %2644, i32 0, i32 3
  store ptr %2645, ptr %256, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %257) #9
  store i8 1, ptr %257, align 1, !tbaa !11
  br label %2646

2646:                                             ; preds = %2818, %2642
  %2647 = load i8, ptr %257, align 1, !tbaa !11, !range !13, !noundef !14
  %2648 = trunc i8 %2647 to i1
  br i1 %2648, label %2650, label %2649

2649:                                             ; preds = %2646
  store i32 128, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %257) #9
  br label %2819

2650:                                             ; preds = %2646
  call void @llvm.lifetime.start.p0(i64 8, ptr %258) #9
  %2651 = load ptr, ptr %256, align 8, !tbaa !5
  store ptr %2651, ptr %258, align 8, !tbaa !5
  br label %2652

2652:                                             ; preds = %2815, %2650
  %2653 = load i8, ptr %257, align 1, !tbaa !11, !range !13, !noundef !14
  %2654 = trunc i8 %2653 to i1
  br i1 %2654, label %2656, label %2655

2655:                                             ; preds = %2652
  store i32 131, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #9
  br label %2817

2656:                                             ; preds = %2652
  %2657 = load ptr, ptr %258, align 8, !tbaa !5
  %2658 = invoke noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %2657)
          to label %2659 unwind label %2660

2659:                                             ; preds = %2656
  switch i32 %2658, label %2814 [
    i32 0, label %2664
    i32 1, label %2665
    i32 2, label %2712
    i32 3, label %2763
  ]

2660:                                             ; preds = %2656
  %2661 = landingpad { ptr, i32 }
          cleanup
  %2662 = extractvalue { ptr, i32 } %2661, 0
  store ptr %2662, ptr %20, align 8
  %2663 = extractvalue { ptr, i32 } %2661, 1
  store i32 %2663, ptr %21, align 4
  br label %2816

2664:                                             ; preds = %2659
  call void @__assert_fail(ptr noundef @.str.26, ptr noundef @.str.17, i32 noundef 2684, ptr noundef @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

2665:                                             ; preds = %2659
  call void @llvm.lifetime.start.p0(i64 1, ptr %259) #9
  store i8 1, ptr %259, align 1, !tbaa !11
  br label %2666

2666:                                             ; preds = %2710, %2665
  %2667 = load i8, ptr %259, align 1, !tbaa !11, !range !13, !noundef !14
  %2668 = trunc i8 %2667 to i1
  br i1 %2668, label %2670, label %2669

2669:                                             ; preds = %2666
  store i32 135, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %259) #9
  br label %2711

2670:                                             ; preds = %2666
  call void @llvm.lifetime.start.p0(i64 8, ptr %260) #9
  %2671 = load ptr, ptr %258, align 8, !tbaa !5
  %2672 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %2671)
          to label %2673 unwind label %2679

2673:                                             ; preds = %2670
  store ptr %2672, ptr %260, align 8, !tbaa !5
  br label %2674

2674:                                             ; preds = %2707, %2673
  %2675 = load ptr, ptr %260, align 8, !tbaa !5
  %2676 = load i8, ptr %259, align 1, !tbaa !11, !range !13, !noundef !14
  %2677 = trunc i8 %2676 to i1
  br i1 %2677, label %2683, label %2678

2678:                                             ; preds = %2674
  store i32 138, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #9
  br label %2709

2679:                                             ; preds = %2691, %2670
  %2680 = landingpad { ptr, i32 }
          cleanup
  %2681 = extractvalue { ptr, i32 } %2680, 0
  store ptr %2681, ptr %20, align 8
  %2682 = extractvalue { ptr, i32 } %2680, 1
  store i32 %2682, ptr %21, align 4
  br label %2708

2683:                                             ; preds = %2674
  br label %2684

2684:                                             ; preds = %2683
  call void @llvm.lifetime.start.p0(i64 8, ptr %261) #9
  %2685 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull align 8 dereferenceable(8) %2685)
          to label %2686 unwind label %2692

2686:                                             ; preds = %2684
  call void @llvm.lifetime.start.p0(i64 8, ptr %263) #9
  %2687 = getelementptr inbounds %class.anon.484, ptr %263, i32 0, i32 0
  %2688 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %2688, ptr %2687, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %262, ptr noundef nonnull align 8 dereferenceable(8) %263) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef %262)
          to label %2689 unwind label %2696

2689:                                             ; preds = %2686
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %261) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #9
  %2690 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2690, ptr noundef @.str.10)
          to label %2691 unwind label %2701

2691:                                             ; preds = %2689
  invoke void @__cxa_throw(ptr %2690, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %2679

2692:                                             ; preds = %2684
  %2693 = landingpad { ptr, i32 }
          cleanup
  %2694 = extractvalue { ptr, i32 } %2693, 0
  store ptr %2694, ptr %20, align 8
  %2695 = extractvalue { ptr, i32 } %2693, 1
  store i32 %2695, ptr %21, align 4
  br label %2700

2696:                                             ; preds = %2686
  %2697 = landingpad { ptr, i32 }
          cleanup
  %2698 = extractvalue { ptr, i32 } %2697, 0
  store ptr %2698, ptr %20, align 8
  %2699 = extractvalue { ptr, i32 } %2697, 1
  store i32 %2699, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %263) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %261) #9
  br label %2700

2700:                                             ; preds = %2696, %2692
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #9
  br label %2708

2701:                                             ; preds = %2689
  %2702 = landingpad { ptr, i32 }
          cleanup
  %2703 = extractvalue { ptr, i32 } %2702, 0
  store ptr %2703, ptr %20, align 8
  %2704 = extractvalue { ptr, i32 } %2702, 1
  store i32 %2704, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2690) #9
  br label %2708

2705:                                             ; No predecessors!
  br label %2706

2706:                                             ; preds = %2705
  br label %2707

2707:                                             ; preds = %2706
  store i8 0, ptr %259, align 1, !tbaa !11
  br label %2674, !llvm.loop !72

2708:                                             ; preds = %2701, %2700, %2679
  call void @llvm.lifetime.end.p0(i64 8, ptr %260) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %259) #9
  br label %2816

2709:                                             ; preds = %2678
  br label %2710

2710:                                             ; preds = %2709
  store i8 0, ptr %259, align 1, !tbaa !11
  br label %2666, !llvm.loop !73

2711:                                             ; preds = %2669
  br label %2814

2712:                                             ; preds = %2659
  call void @llvm.lifetime.start.p0(i64 1, ptr %264) #9
  store i8 1, ptr %264, align 1, !tbaa !11
  br label %2713

2713:                                             ; preds = %2761, %2712
  %2714 = load i8, ptr %264, align 1, !tbaa !11, !range !13, !noundef !14
  %2715 = trunc i8 %2714 to i1
  br i1 %2715, label %2717, label %2716

2716:                                             ; preds = %2713
  store i32 143, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %264) #9
  br label %2762

2717:                                             ; preds = %2713
  call void @llvm.lifetime.start.p0(i64 8, ptr %265) #9
  %2718 = load ptr, ptr %258, align 8, !tbaa !5
  %2719 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %2718)
          to label %2720 unwind label %2726

2720:                                             ; preds = %2717
  store ptr %2719, ptr %265, align 8, !tbaa !5
  br label %2721

2721:                                             ; preds = %2758, %2720
  %2722 = load ptr, ptr %265, align 8, !tbaa !5
  %2723 = load i8, ptr %264, align 1, !tbaa !11, !range !13, !noundef !14
  %2724 = trunc i8 %2723 to i1
  br i1 %2724, label %2730, label %2725

2725:                                             ; preds = %2721
  store i32 146, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %265) #9
  br label %2760

2726:                                             ; preds = %2717
  %2727 = landingpad { ptr, i32 }
          cleanup
  %2728 = extractvalue { ptr, i32 } %2727, 0
  store ptr %2728, ptr %20, align 8
  %2729 = extractvalue { ptr, i32 } %2727, 1
  store i32 %2729, ptr %21, align 4
  br label %2759

2730:                                             ; preds = %2721
  br label %2731

2731:                                             ; preds = %2730
  call void @llvm.lifetime.start.p0(i64 8, ptr %266) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %266, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #9
  %2732 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef nonnull align 8 dereferenceable(8) %2732)
          to label %2733 unwind label %2738

2733:                                             ; preds = %2731
  call void @llvm.lifetime.start.p0(i64 8, ptr %269) #9
  %2734 = getelementptr inbounds %class.anon.485, ptr %269, i32 0, i32 0
  store ptr %266, ptr %2734, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %268, ptr noundef nonnull align 8 dereferenceable(8) %269) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef %268)
          to label %2735 unwind label %2742

2735:                                             ; preds = %2733
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %267) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #9
  %2736 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2736, ptr noundef @.str.5)
          to label %2737 unwind label %2747

2737:                                             ; preds = %2735
  invoke void @__cxa_throw(ptr %2736, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %2751

2738:                                             ; preds = %2731
  %2739 = landingpad { ptr, i32 }
          cleanup
  %2740 = extractvalue { ptr, i32 } %2739, 0
  store ptr %2740, ptr %20, align 8
  %2741 = extractvalue { ptr, i32 } %2739, 1
  store i32 %2741, ptr %21, align 4
  br label %2746

2742:                                             ; preds = %2733
  %2743 = landingpad { ptr, i32 }
          cleanup
  %2744 = extractvalue { ptr, i32 } %2743, 0
  store ptr %2744, ptr %20, align 8
  %2745 = extractvalue { ptr, i32 } %2743, 1
  store i32 %2745, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %269) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %267) #9
  br label %2746

2746:                                             ; preds = %2742, %2738
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #9
  br label %2755

2747:                                             ; preds = %2735
  %2748 = landingpad { ptr, i32 }
          cleanup
  %2749 = extractvalue { ptr, i32 } %2748, 0
  store ptr %2749, ptr %20, align 8
  %2750 = extractvalue { ptr, i32 } %2748, 1
  store i32 %2750, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2736) #9
  br label %2755

2751:                                             ; preds = %2737
  %2752 = landingpad { ptr, i32 }
          cleanup
  %2753 = extractvalue { ptr, i32 } %2752, 0
  store ptr %2753, ptr %20, align 8
  %2754 = extractvalue { ptr, i32 } %2752, 1
  store i32 %2754, ptr %21, align 4
  br label %2755

2755:                                             ; preds = %2751, %2747, %2746
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #9
  br label %2759

2756:                                             ; No predecessors!
  br label %2757

2757:                                             ; preds = %2756
  br label %2758

2758:                                             ; preds = %2757
  store i8 0, ptr %264, align 1, !tbaa !11
  br label %2721, !llvm.loop !74

2759:                                             ; preds = %2755, %2726
  call void @llvm.lifetime.end.p0(i64 8, ptr %265) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %264) #9
  br label %2816

2760:                                             ; preds = %2725
  br label %2761

2761:                                             ; preds = %2760
  store i8 0, ptr %264, align 1, !tbaa !11
  br label %2713, !llvm.loop !75

2762:                                             ; preds = %2716
  br label %2814

2763:                                             ; preds = %2659
  call void @llvm.lifetime.start.p0(i64 1, ptr %270) #9
  store i8 1, ptr %270, align 1, !tbaa !11
  br label %2764

2764:                                             ; preds = %2812, %2763
  %2765 = load i8, ptr %270, align 1, !tbaa !11, !range !13, !noundef !14
  %2766 = trunc i8 %2765 to i1
  br i1 %2766, label %2768, label %2767

2767:                                             ; preds = %2764
  store i32 151, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %270) #9
  br label %2813

2768:                                             ; preds = %2764
  call void @llvm.lifetime.start.p0(i64 8, ptr %271) #9
  %2769 = load ptr, ptr %258, align 8, !tbaa !5
  %2770 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %2769)
          to label %2771 unwind label %2777

2771:                                             ; preds = %2768
  store ptr %2770, ptr %271, align 8, !tbaa !5
  br label %2772

2772:                                             ; preds = %2809, %2771
  %2773 = load ptr, ptr %271, align 8, !tbaa !5
  %2774 = load i8, ptr %270, align 1, !tbaa !11, !range !13, !noundef !14
  %2775 = trunc i8 %2774 to i1
  br i1 %2775, label %2781, label %2776

2776:                                             ; preds = %2772
  store i32 154, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %271) #9
  br label %2811

2777:                                             ; preds = %2768
  %2778 = landingpad { ptr, i32 }
          cleanup
  %2779 = extractvalue { ptr, i32 } %2778, 0
  store ptr %2779, ptr %20, align 8
  %2780 = extractvalue { ptr, i32 } %2778, 1
  store i32 %2780, ptr %21, align 4
  br label %2810

2781:                                             ; preds = %2772
  br label %2782

2782:                                             ; preds = %2781
  call void @llvm.lifetime.start.p0(i64 8, ptr %272) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %272, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %273) #9
  %2783 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef nonnull align 8 dereferenceable(8) %2783)
          to label %2784 unwind label %2789

2784:                                             ; preds = %2782
  call void @llvm.lifetime.start.p0(i64 8, ptr %275) #9
  %2785 = getelementptr inbounds %class.anon.486, ptr %275, i32 0, i32 0
  store ptr %272, ptr %2785, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %274, ptr noundef nonnull align 8 dereferenceable(8) %275) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef %274)
          to label %2786 unwind label %2793

2786:                                             ; preds = %2784
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %274) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %273) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %273) #9
  %2787 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2787, ptr noundef @.str.5)
          to label %2788 unwind label %2798

2788:                                             ; preds = %2786
  invoke void @__cxa_throw(ptr %2787, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %2802

2789:                                             ; preds = %2782
  %2790 = landingpad { ptr, i32 }
          cleanup
  %2791 = extractvalue { ptr, i32 } %2790, 0
  store ptr %2791, ptr %20, align 8
  %2792 = extractvalue { ptr, i32 } %2790, 1
  store i32 %2792, ptr %21, align 4
  br label %2797

2793:                                             ; preds = %2784
  %2794 = landingpad { ptr, i32 }
          cleanup
  %2795 = extractvalue { ptr, i32 } %2794, 0
  store ptr %2795, ptr %20, align 8
  %2796 = extractvalue { ptr, i32 } %2794, 1
  store i32 %2796, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %274) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %275) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %273) #9
  br label %2797

2797:                                             ; preds = %2793, %2789
  call void @llvm.lifetime.end.p0(i64 8, ptr %273) #9
  br label %2806

2798:                                             ; preds = %2786
  %2799 = landingpad { ptr, i32 }
          cleanup
  %2800 = extractvalue { ptr, i32 } %2799, 0
  store ptr %2800, ptr %20, align 8
  %2801 = extractvalue { ptr, i32 } %2799, 1
  store i32 %2801, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2787) #9
  br label %2806

2802:                                             ; preds = %2788
  %2803 = landingpad { ptr, i32 }
          cleanup
  %2804 = extractvalue { ptr, i32 } %2803, 0
  store ptr %2804, ptr %20, align 8
  %2805 = extractvalue { ptr, i32 } %2803, 1
  store i32 %2805, ptr %21, align 4
  br label %2806

2806:                                             ; preds = %2802, %2798, %2797
  call void @llvm.lifetime.end.p0(i64 8, ptr %272) #9
  br label %2810

2807:                                             ; No predecessors!
  br label %2808

2808:                                             ; preds = %2807
  br label %2809

2809:                                             ; preds = %2808
  store i8 0, ptr %270, align 1, !tbaa !11
  br label %2772, !llvm.loop !76

2810:                                             ; preds = %2806, %2777
  call void @llvm.lifetime.end.p0(i64 8, ptr %271) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %270) #9
  br label %2816

2811:                                             ; preds = %2776
  br label %2812

2812:                                             ; preds = %2811
  store i8 0, ptr %270, align 1, !tbaa !11
  br label %2764, !llvm.loop !77

2813:                                             ; preds = %2767
  br label %2814

2814:                                             ; preds = %2813, %2762, %2711, %2659
  br label %2815

2815:                                             ; preds = %2814
  store i8 0, ptr %257, align 1, !tbaa !11
  br label %2652, !llvm.loop !78

2816:                                             ; preds = %2810, %2759, %2708, %2660
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %257) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #9
  br label %2821

2817:                                             ; preds = %2655
  br label %2818

2818:                                             ; preds = %2817
  store i8 0, ptr %257, align 1, !tbaa !11
  br label %2646, !llvm.loop !79

2819:                                             ; preds = %2649
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #9
  br label %2820

2820:                                             ; preds = %2819
  store i8 0, ptr %254, align 1, !tbaa !11
  br label %2633, !llvm.loop !80

2821:                                             ; preds = %2816, %2638
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %254) #9
  br label %3189

2822:                                             ; preds = %2637
  br label %2823

2823:                                             ; preds = %2822
  store i8 0, ptr %254, align 1, !tbaa !11
  br label %2625, !llvm.loop !81

2824:                                             ; preds = %2628
  br label %3187

2825:                                             ; preds = %2524
  call void @llvm.lifetime.start.p0(i64 1, ptr %276) #9
  store i8 1, ptr %276, align 1, !tbaa !11
  br label %2826

2826:                                             ; preds = %2874, %2825
  %2827 = load i8, ptr %276, align 1, !tbaa !11, !range !13, !noundef !14
  %2828 = trunc i8 %2827 to i1
  br i1 %2828, label %2830, label %2829

2829:                                             ; preds = %2826
  store i32 159, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %276) #9
  br label %2875

2830:                                             ; preds = %2826
  call void @llvm.lifetime.start.p0(i64 8, ptr %277) #9
  %2831 = load ptr, ptr %243, align 8, !tbaa !5
  %2832 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %2831)
          to label %2833 unwind label %2839

2833:                                             ; preds = %2830
  store ptr %2832, ptr %277, align 8, !tbaa !5
  br label %2834

2834:                                             ; preds = %2871, %2833
  %2835 = load ptr, ptr %277, align 8, !tbaa !5
  %2836 = load i8, ptr %276, align 1, !tbaa !11, !range !13, !noundef !14
  %2837 = trunc i8 %2836 to i1
  br i1 %2837, label %2843, label %2838

2838:                                             ; preds = %2834
  store i32 162, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %277) #9
  br label %2873

2839:                                             ; preds = %2830
  %2840 = landingpad { ptr, i32 }
          cleanup
  %2841 = extractvalue { ptr, i32 } %2840, 0
  store ptr %2841, ptr %20, align 8
  %2842 = extractvalue { ptr, i32 } %2840, 1
  store i32 %2842, ptr %21, align 4
  br label %2872

2843:                                             ; preds = %2834
  br label %2844

2844:                                             ; preds = %2843
  call void @llvm.lifetime.start.p0(i64 8, ptr %278) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %278, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %279) #9
  %2845 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(8) %2845)
          to label %2846 unwind label %2851

2846:                                             ; preds = %2844
  call void @llvm.lifetime.start.p0(i64 8, ptr %281) #9
  %2847 = getelementptr inbounds %class.anon.487, ptr %281, i32 0, i32 0
  store ptr %278, ptr %2847, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %280, ptr noundef nonnull align 8 dereferenceable(8) %281) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef %280)
          to label %2848 unwind label %2855

2848:                                             ; preds = %2846
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %281) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %279) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #9
  %2849 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2849, ptr noundef @.str.5)
          to label %2850 unwind label %2860

2850:                                             ; preds = %2848
  invoke void @__cxa_throw(ptr %2849, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %2864

2851:                                             ; preds = %2844
  %2852 = landingpad { ptr, i32 }
          cleanup
  %2853 = extractvalue { ptr, i32 } %2852, 0
  store ptr %2853, ptr %20, align 8
  %2854 = extractvalue { ptr, i32 } %2852, 1
  store i32 %2854, ptr %21, align 4
  br label %2859

2855:                                             ; preds = %2846
  %2856 = landingpad { ptr, i32 }
          cleanup
  %2857 = extractvalue { ptr, i32 } %2856, 0
  store ptr %2857, ptr %20, align 8
  %2858 = extractvalue { ptr, i32 } %2856, 1
  store i32 %2858, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %280) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %281) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %279) #9
  br label %2859

2859:                                             ; preds = %2855, %2851
  call void @llvm.lifetime.end.p0(i64 8, ptr %279) #9
  br label %2868

2860:                                             ; preds = %2848
  %2861 = landingpad { ptr, i32 }
          cleanup
  %2862 = extractvalue { ptr, i32 } %2861, 0
  store ptr %2862, ptr %20, align 8
  %2863 = extractvalue { ptr, i32 } %2861, 1
  store i32 %2863, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2849) #9
  br label %2868

2864:                                             ; preds = %2850
  %2865 = landingpad { ptr, i32 }
          cleanup
  %2866 = extractvalue { ptr, i32 } %2865, 0
  store ptr %2866, ptr %20, align 8
  %2867 = extractvalue { ptr, i32 } %2865, 1
  store i32 %2867, ptr %21, align 4
  br label %2868

2868:                                             ; preds = %2864, %2860, %2859
  call void @llvm.lifetime.end.p0(i64 8, ptr %278) #9
  br label %2872

2869:                                             ; No predecessors!
  br label %2870

2870:                                             ; preds = %2869
  br label %2871

2871:                                             ; preds = %2870
  store i8 0, ptr %276, align 1, !tbaa !11
  br label %2834, !llvm.loop !82

2872:                                             ; preds = %2868, %2839
  call void @llvm.lifetime.end.p0(i64 8, ptr %277) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %276) #9
  br label %3189

2873:                                             ; preds = %2838
  br label %2874

2874:                                             ; preds = %2873
  store i8 0, ptr %276, align 1, !tbaa !11
  br label %2826, !llvm.loop !83

2875:                                             ; preds = %2829
  br label %3187

2876:                                             ; preds = %2524
  call void @llvm.lifetime.start.p0(i64 1, ptr %282) #9
  store i8 1, ptr %282, align 1, !tbaa !11
  br label %2877

2877:                                             ; preds = %2925, %2876
  %2878 = load i8, ptr %282, align 1, !tbaa !11, !range !13, !noundef !14
  %2879 = trunc i8 %2878 to i1
  br i1 %2879, label %2881, label %2880

2880:                                             ; preds = %2877
  store i32 167, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %282) #9
  br label %2926

2881:                                             ; preds = %2877
  call void @llvm.lifetime.start.p0(i64 8, ptr %283) #9
  %2882 = load ptr, ptr %243, align 8, !tbaa !5
  %2883 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %2882)
          to label %2884 unwind label %2890

2884:                                             ; preds = %2881
  store ptr %2883, ptr %283, align 8, !tbaa !5
  br label %2885

2885:                                             ; preds = %2922, %2884
  %2886 = load ptr, ptr %283, align 8, !tbaa !5
  %2887 = load i8, ptr %282, align 1, !tbaa !11, !range !13, !noundef !14
  %2888 = trunc i8 %2887 to i1
  br i1 %2888, label %2894, label %2889

2889:                                             ; preds = %2885
  store i32 170, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #9
  br label %2924

2890:                                             ; preds = %2881
  %2891 = landingpad { ptr, i32 }
          cleanup
  %2892 = extractvalue { ptr, i32 } %2891, 0
  store ptr %2892, ptr %20, align 8
  %2893 = extractvalue { ptr, i32 } %2891, 1
  store i32 %2893, ptr %21, align 4
  br label %2923

2894:                                             ; preds = %2885
  br label %2895

2895:                                             ; preds = %2894
  call void @llvm.lifetime.start.p0(i64 8, ptr %284) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %284, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %285) #9
  %2896 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull align 8 dereferenceable(8) %2896)
          to label %2897 unwind label %2902

2897:                                             ; preds = %2895
  call void @llvm.lifetime.start.p0(i64 8, ptr %287) #9
  %2898 = getelementptr inbounds %class.anon.488, ptr %287, i32 0, i32 0
  store ptr %284, ptr %2898, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %286, ptr noundef nonnull align 8 dereferenceable(8) %287) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef %286)
          to label %2899 unwind label %2906

2899:                                             ; preds = %2897
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %287) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %285) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #9
  %2900 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2900, ptr noundef @.str.5)
          to label %2901 unwind label %2911

2901:                                             ; preds = %2899
  invoke void @__cxa_throw(ptr %2900, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %2915

2902:                                             ; preds = %2895
  %2903 = landingpad { ptr, i32 }
          cleanup
  %2904 = extractvalue { ptr, i32 } %2903, 0
  store ptr %2904, ptr %20, align 8
  %2905 = extractvalue { ptr, i32 } %2903, 1
  store i32 %2905, ptr %21, align 4
  br label %2910

2906:                                             ; preds = %2897
  %2907 = landingpad { ptr, i32 }
          cleanup
  %2908 = extractvalue { ptr, i32 } %2907, 0
  store ptr %2908, ptr %20, align 8
  %2909 = extractvalue { ptr, i32 } %2907, 1
  store i32 %2909, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %287) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %285) #9
  br label %2910

2910:                                             ; preds = %2906, %2902
  call void @llvm.lifetime.end.p0(i64 8, ptr %285) #9
  br label %2919

2911:                                             ; preds = %2899
  %2912 = landingpad { ptr, i32 }
          cleanup
  %2913 = extractvalue { ptr, i32 } %2912, 0
  store ptr %2913, ptr %20, align 8
  %2914 = extractvalue { ptr, i32 } %2912, 1
  store i32 %2914, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2900) #9
  br label %2919

2915:                                             ; preds = %2901
  %2916 = landingpad { ptr, i32 }
          cleanup
  %2917 = extractvalue { ptr, i32 } %2916, 0
  store ptr %2917, ptr %20, align 8
  %2918 = extractvalue { ptr, i32 } %2916, 1
  store i32 %2918, ptr %21, align 4
  br label %2919

2919:                                             ; preds = %2915, %2911, %2910
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #9
  br label %2923

2920:                                             ; No predecessors!
  br label %2921

2921:                                             ; preds = %2920
  br label %2922

2922:                                             ; preds = %2921
  store i8 0, ptr %282, align 1, !tbaa !11
  br label %2885, !llvm.loop !84

2923:                                             ; preds = %2919, %2890
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %282) #9
  br label %3189

2924:                                             ; preds = %2889
  br label %2925

2925:                                             ; preds = %2924
  store i8 0, ptr %282, align 1, !tbaa !11
  br label %2877, !llvm.loop !85

2926:                                             ; preds = %2880
  br label %3187

2927:                                             ; preds = %2524
  call void @llvm.lifetime.start.p0(i64 1, ptr %288) #9
  store i8 1, ptr %288, align 1, !tbaa !11
  br label %2928

2928:                                             ; preds = %3185, %2927
  %2929 = load i8, ptr %288, align 1, !tbaa !11, !range !13, !noundef !14
  %2930 = trunc i8 %2929 to i1
  br i1 %2930, label %2932, label %2931

2931:                                             ; preds = %2928
  store i32 175, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %288) #9
  br label %3186

2932:                                             ; preds = %2928
  call void @llvm.lifetime.start.p0(i64 8, ptr %289) #9
  %2933 = load ptr, ptr %243, align 8, !tbaa !5
  %2934 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %2933)
          to label %2935 unwind label %2941

2935:                                             ; preds = %2932
  store ptr %2934, ptr %289, align 8, !tbaa !5
  br label %2936

2936:                                             ; preds = %3176, %2935
  %2937 = load ptr, ptr %289, align 8, !tbaa !5
  %2938 = load i8, ptr %288, align 1, !tbaa !11, !range !13, !noundef !14
  %2939 = trunc i8 %2938 to i1
  br i1 %2939, label %2945, label %2940

2940:                                             ; preds = %2936
  store i32 178, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %289) #9
  br label %3184

2941:                                             ; preds = %2932
  %2942 = landingpad { ptr, i32 }
          cleanup
  %2943 = extractvalue { ptr, i32 } %2942, 0
  store ptr %2943, ptr %20, align 8
  %2944 = extractvalue { ptr, i32 } %2942, 1
  store i32 %2944, ptr %21, align 4
  br label %3183

2945:                                             ; preds = %2936
  call void @llvm.lifetime.start.p0(i64 24, ptr %290) #9
  %2946 = getelementptr inbounds %class.anon.489, ptr %290, i32 0, i32 0
  %2947 = load ptr, ptr %241, align 8, !tbaa !5
  store ptr %2947, ptr %2946, align 8, !tbaa !5
  %2948 = getelementptr inbounds %class.anon.489, ptr %290, i32 0, i32 1
  %2949 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %2949, ptr %2948, align 8, !tbaa !5
  %2950 = getelementptr inbounds %class.anon.489, ptr %290, i32 0, i32 2
  %2951 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %2951, ptr %2950, align 8, !tbaa !5
  br label %2952

2952:                                             ; preds = %2945
  %2953 = load ptr, ptr %24, align 8, !tbaa !5
  %2954 = invoke noundef zeroext i1 @_ZNK11PatternRule10is_VariantEv(ptr noundef nonnull align 8 dereferenceable(120) %2953)
          to label %2955 unwind label %2962

2955:                                             ; preds = %2952
  br i1 %2954, label %2979, label %2956

2956:                                             ; preds = %2955
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #9
  %2957 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull align 8 dereferenceable(8) %2957)
          to label %2958 unwind label %2966

2958:                                             ; preds = %2956
  call void @llvm.lifetime.start.p0(i64 1, ptr %293) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %292, ptr noundef nonnull align 1 dereferenceable(1) %293) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef %292)
          to label %2959 unwind label %2970

2959:                                             ; preds = %2958
  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
  %2960 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2960, ptr noundef @.str.10)
          to label %2961 unwind label %2975

2961:                                             ; preds = %2959
  invoke void @__cxa_throw(ptr %2960, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %2962

2962:                                             ; preds = %2961, %2952
  %2963 = landingpad { ptr, i32 }
          cleanup
  %2964 = extractvalue { ptr, i32 } %2963, 0
  store ptr %2964, ptr %20, align 8
  %2965 = extractvalue { ptr, i32 } %2963, 1
  store i32 %2965, ptr %21, align 4
  br label %3182

2966:                                             ; preds = %2956
  %2967 = landingpad { ptr, i32 }
          cleanup
  %2968 = extractvalue { ptr, i32 } %2967, 0
  store ptr %2968, ptr %20, align 8
  %2969 = extractvalue { ptr, i32 } %2967, 1
  store i32 %2969, ptr %21, align 4
  br label %2974

2970:                                             ; preds = %2958
  %2971 = landingpad { ptr, i32 }
          cleanup
  %2972 = extractvalue { ptr, i32 } %2971, 0
  store ptr %2972, ptr %20, align 8
  %2973 = extractvalue { ptr, i32 } %2971, 1
  store i32 %2973, ptr %21, 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 %2974

2974:                                             ; preds = %2970, %2966
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #9
  br label %3182

2975:                                             ; preds = %2959
  %2976 = landingpad { ptr, i32 }
          cleanup
  %2977 = extractvalue { ptr, i32 } %2976, 0
  store ptr %2977, ptr %20, align 8
  %2978 = extractvalue { ptr, i32 } %2976, 1
  store i32 %2978, ptr %21, align 4
  call void @__cxa_free_exception(ptr %2960) #9
  br label %3182

2979:                                             ; preds = %2955
  br label %2980

2980:                                             ; preds = %2979
  br label %2981

2981:                                             ; preds = %2980
  call void @llvm.lifetime.start.p0(i64 8, ptr %294) #9
  %2982 = load ptr, ptr %24, align 8, !tbaa !5
  %2983 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK11PatternRule10as_VariantEv(ptr noundef nonnull align 8 dereferenceable(120) %2982)
          to label %2984 unwind label %3027

2984:                                             ; preds = %2981
  store ptr %2983, ptr %294, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %295) #9
  %2985 = load ptr, ptr %294, align 8, !tbaa !5
  %2986 = getelementptr inbounds %"struct.PatternRule::Data_Variant", ptr %2985, i32 0, i32 0
  %2987 = load i32, ptr %2986, align 8, !tbaa !86
  store i32 %2987, ptr %295, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %296) #9
  %2988 = load ptr, ptr %9, align 8, !tbaa !5
  %2989 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %2988)
          to label %2990 unwind label %3031

2990:                                             ; preds = %2984
  store i32 %2989, ptr %296, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %297) #9
  %2991 = load ptr, ptr %289, align 8, !tbaa !5
  %2992 = load ptr, ptr %2991, align 8, !tbaa !5
  %2993 = invoke noundef i64 @_ZNK3HIR4Enum12num_variantsEv(ptr noundef nonnull align 8 dereferenceable(200) %2992)
          to label %2994 unwind label %3035

2994:                                             ; preds = %2990
  store i64 %2993, ptr %297, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 24, ptr %298) #9
  %2995 = load i64, ptr %297, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 1, ptr %299) #9
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %299) #9
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %298, i64 noundef %2995, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 1 dereferenceable(1) %299)
          to label %2996 unwind label %3039

2996:                                             ; preds = %2994
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %299) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %299) #9
  %2997 = load i32, ptr %296, align 4, !tbaa !9
  %2998 = load i32, ptr %295, align 4, !tbaa !9
  %2999 = zext i32 %2998 to i64
  %3000 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %298, i64 noundef %2999) #9
  store i32 %2997, ptr %3000, align 4, !tbaa !9
  %3001 = load ptr, ptr %9, align 8, !tbaa !5
  %3002 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %301, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %3002, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %3003 unwind label %3043

3003:                                             ; preds = %2996
  %3004 = getelementptr inbounds %"struct.MIR::Terminator::Data_Switch", ptr %301, i32 0, i32 1
  call void @_ZNSt6vectorIjSaIjEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3004, ptr noundef nonnull align 8 dereferenceable(24) %298) #9
  invoke void @_ZN3MIR10Terminator11make_SwitchENS0_11Data_SwitchE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %300, ptr noundef %301)
          to label %3005 unwind label %3047

3005:                                             ; preds = %3003
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %3001, ptr noundef %300)
          to label %3006 unwind label %3051

3006:                                             ; preds = %3005
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %300) #9
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %301) #9
  %3007 = load ptr, ptr %9, align 8, !tbaa !5
  %3008 = load i32, ptr %296, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %3007, i32 noundef %3008)
          to label %3009 unwind label %3043

3009:                                             ; preds = %3006
  %3010 = load ptr, ptr %294, align 8, !tbaa !5
  %3011 = getelementptr inbounds %"struct.PatternRule::Data_Variant", ptr %3010, i32 0, i32 1
  %3012 = call noundef i64 @_ZNKSt6vectorI11PatternRuleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3011) #9
  %3013 = icmp ugt i64 %3012, 0
  br i1 %3013, label %3014, label %3175

3014:                                             ; preds = %3009
  br label %3015

3015:                                             ; preds = %3014
  %3016 = load ptr, ptr %289, align 8, !tbaa !5
  %3017 = load ptr, ptr %3016, align 8, !tbaa !5
  %3018 = getelementptr inbounds %"class.HIR::Enum", ptr %3017, i32 0, i32 3
  %3019 = invoke noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %3018)
          to label %3020 unwind label %3043

3020:                                             ; preds = %3015
  br i1 %3019, label %3069, label %3021

3021:                                             ; preds = %3020
  call void @llvm.lifetime.start.p0(i64 8, ptr %302) #9
  %3022 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull align 8 dereferenceable(8) %3022)
          to label %3023 unwind label %3056

3023:                                             ; preds = %3021
  call void @llvm.lifetime.start.p0(i64 1, ptr %304) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %303, ptr noundef nonnull align 1 dereferenceable(1) %304) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef %303)
          to label %3024 unwind label %3060

3024:                                             ; preds = %3023
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %304) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %302) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #9
  %3025 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3025, ptr noundef @.str.10)
          to label %3026 unwind label %3065

3026:                                             ; preds = %3024
  invoke void @__cxa_throw(ptr %3025, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %3043

3027:                                             ; preds = %2981
  %3028 = landingpad { ptr, i32 }
          cleanup
  %3029 = extractvalue { ptr, i32 } %3028, 0
  store ptr %3029, ptr %20, align 8
  %3030 = extractvalue { ptr, i32 } %3028, 1
  store i32 %3030, ptr %21, align 4
  br label %3181

3031:                                             ; preds = %2984
  %3032 = landingpad { ptr, i32 }
          cleanup
  %3033 = extractvalue { ptr, i32 } %3032, 0
  store ptr %3033, ptr %20, align 8
  %3034 = extractvalue { ptr, i32 } %3032, 1
  store i32 %3034, ptr %21, align 4
  br label %3180

3035:                                             ; preds = %2990
  %3036 = landingpad { ptr, i32 }
          cleanup
  %3037 = extractvalue { ptr, i32 } %3036, 0
  store ptr %3037, ptr %20, align 8
  %3038 = extractvalue { ptr, i32 } %3036, 1
  store i32 %3038, ptr %21, align 4
  br label %3179

3039:                                             ; preds = %2994
  %3040 = landingpad { ptr, i32 }
          cleanup
  %3041 = extractvalue { ptr, i32 } %3040, 0
  store ptr %3041, ptr %20, align 8
  %3042 = extractvalue { ptr, i32 } %3040, 1
  store i32 %3042, ptr %21, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %299) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %299) #9
  br label %3178

3043:                                             ; preds = %3026, %3015, %3006, %2996
  %3044 = landingpad { ptr, i32 }
          cleanup
  %3045 = extractvalue { ptr, i32 } %3044, 0
  store ptr %3045, ptr %20, align 8
  %3046 = extractvalue { ptr, i32 } %3044, 1
  store i32 %3046, ptr %21, align 4
  br label %3177

3047:                                             ; preds = %3003
  %3048 = landingpad { ptr, i32 }
          cleanup
  %3049 = extractvalue { ptr, i32 } %3048, 0
  store ptr %3049, ptr %20, align 8
  %3050 = extractvalue { ptr, i32 } %3048, 1
  store i32 %3050, ptr %21, align 4
  br label %3055

3051:                                             ; preds = %3005
  %3052 = landingpad { ptr, i32 }
          cleanup
  %3053 = extractvalue { ptr, i32 } %3052, 0
  store ptr %3053, ptr %20, align 8
  %3054 = extractvalue { ptr, i32 } %3052, 1
  store i32 %3054, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %300) #9
  br label %3055

3055:                                             ; preds = %3051, %3047
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %301) #9
  br label %3177

3056:                                             ; preds = %3021
  %3057 = landingpad { ptr, i32 }
          cleanup
  %3058 = extractvalue { ptr, i32 } %3057, 0
  store ptr %3058, ptr %20, align 8
  %3059 = extractvalue { ptr, i32 } %3057, 1
  store i32 %3059, ptr %21, align 4
  br label %3064

3060:                                             ; preds = %3023
  %3061 = landingpad { ptr, i32 }
          cleanup
  %3062 = extractvalue { ptr, i32 } %3061, 0
  store ptr %3062, ptr %20, align 8
  %3063 = extractvalue { ptr, i32 } %3061, 1
  store i32 %3063, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %304) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %302) #9
  br label %3064

3064:                                             ; preds = %3060, %3056
  call void @llvm.lifetime.end.p0(i64 8, ptr %302) #9
  br label %3177

3065:                                             ; preds = %3024
  %3066 = landingpad { ptr, i32 }
          cleanup
  %3067 = extractvalue { ptr, i32 } %3066, 0
  store ptr %3067, ptr %20, align 8
  %3068 = extractvalue { ptr, i32 } %3066, 1
  store i32 %3068, ptr %21, align 4
  call void @__cxa_free_exception(ptr %3025) #9
  br label %3177

3069:                                             ; preds = %3020
  br label %3070

3070:                                             ; preds = %3069
  br label %3071

3071:                                             ; preds = %3070
  call void @llvm.lifetime.start.p0(i64 8, ptr %305) #9
  %3072 = load ptr, ptr %289, align 8, !tbaa !5
  %3073 = load ptr, ptr %3072, align 8, !tbaa !5
  %3074 = getelementptr inbounds %"class.HIR::Enum", ptr %3073, i32 0, i32 3
  %3075 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %3074)
          to label %3076 unwind label %3126

3076:                                             ; preds = %3071
  store ptr %3075, ptr %305, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %306) #9
  %3077 = load ptr, ptr %305, align 8, !tbaa !5
  %3078 = load ptr, ptr %294, align 8, !tbaa !5
  %3079 = getelementptr inbounds %"struct.PatternRule::Data_Variant", ptr %3078, i32 0, i32 0
  %3080 = load i32, ptr %3079, align 8, !tbaa !86
  %3081 = zext i32 %3080 to i64
  %3082 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3077, i64 noundef %3081)
          to label %3083 unwind label %3130

3083:                                             ; preds = %3076
  %3084 = getelementptr inbounds %"struct.HIR::Enum::DataVariant", ptr %3082, i32 0, i32 2
  store ptr %3084, ptr %306, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %307) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %307)
          to label %3085 unwind label %3134

3085:                                             ; preds = %3083
  call void @llvm.lifetime.start.p0(i64 8, ptr %308) #9
  %3086 = load ptr, ptr %306, align 8, !tbaa !5
  store i1 false, ptr %310, align 1
  store i1 false, ptr %311, align 1
  %3087 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %3086, i1 noundef zeroext false)
          to label %3088 unwind label %3138

3088:                                             ; preds = %3085
  br i1 %3087, label %3089, label %3094

3089:                                             ; preds = %3088
  call void @llvm.lifetime.start.p0(i64 8, ptr %309) #9
  store i1 true, ptr %310, align 1
  %3090 = load ptr, ptr %306, align 8, !tbaa !5
  invoke void @"_ZZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjENK4$_19clIS8_EEDaRKT_"(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %309, ptr noundef nonnull align 8 dereferenceable(24) %290, ptr noundef nonnull align 8 dereferenceable(8) %3090)
          to label %3091 unwind label %3142

3091:                                             ; preds = %3089
  store i1 true, ptr %311, align 1
  %3092 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %307, ptr noundef nonnull align 8 dereferenceable(8) %309)
          to label %3093 unwind label %3146

3093:                                             ; preds = %3091
  br label %3096

3094:                                             ; preds = %3088
  %3095 = load ptr, ptr %306, align 8, !tbaa !5
  br label %3096

3096:                                             ; preds = %3094, %3093
  %3097 = phi ptr [ %3092, %3093 ], [ %3095, %3094 ]
  %3098 = load i1, ptr %311, align 1
  br i1 %3098, label %3099, label %3100

3099:                                             ; preds = %3096
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %309) #9
  br label %3100

3100:                                             ; preds = %3099, %3096
  %3101 = load i1, ptr %310, align 1
  br i1 %3101, label %3102, label %3103

3102:                                             ; preds = %3100
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #9
  br label %3103

3103:                                             ; preds = %3102, %3100
  store ptr %3097, ptr %308, align 8, !tbaa !5
  %3104 = load ptr, ptr %9, align 8, !tbaa !5
  %3105 = load ptr, ptr %10, align 8, !tbaa !5
  %3106 = load ptr, ptr %294, align 8, !tbaa !5
  %3107 = getelementptr inbounds %"struct.PatternRule::Data_Variant", ptr %3106, i32 0, i32 1
  %3108 = call noundef ptr @_ZNKSt6vectorI11PatternRuleSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3107) #9
  %3109 = load ptr, ptr %294, align 8, !tbaa !5
  %3110 = getelementptr inbounds %"struct.PatternRule::Data_Variant", ptr %3109, i32 0, i32 1
  %3111 = call noundef i64 @_ZNKSt6vectorI11PatternRuleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3110) #9
  %3112 = trunc i64 %3111 to i32
  %3113 = load ptr, ptr %308, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %312) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %313, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %3114 unwind label %3157

3114:                                             ; preds = %3103
  %3115 = load i32, ptr %295, align 4, !tbaa !9
  invoke void @_ZN3MIR6LValue12new_DowncastES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %312, ptr noundef %313, i32 noundef %3115)
          to label %3116 unwind label %3161

3116:                                             ; preds = %3114
  %3117 = load ptr, ptr %24, align 8, !tbaa !5
  %3118 = getelementptr inbounds %class.PatternRule, ptr %3117, i32 0, i32 2
  %3119 = invoke noundef i64 @_ZNK12field_path_t4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3118)
          to label %3120 unwind label %3165

3120:                                             ; preds = %3116
  %3121 = add i64 %3119, 1
  %3122 = trunc i64 %3121 to i32
  %3123 = load i32, ptr %16, align 4, !tbaa !9
  %3124 = invoke noundef i32 @_Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj(ptr noundef nonnull align 8 dereferenceable(440) %3104, ptr noundef nonnull align 8 dereferenceable(8) %3105, ptr noundef %3108, i32 noundef %3112, ptr noundef nonnull align 8 dereferenceable(8) %3113, ptr noundef nonnull align 8 dereferenceable(32) %312, i32 noundef %3122, i32 noundef %3123)
          to label %3125 unwind label %3165

3125:                                             ; preds = %3120
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %313) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %312) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %307) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #9
  br label %3175

3126:                                             ; preds = %3071
  %3127 = landingpad { ptr, i32 }
          cleanup
  %3128 = extractvalue { ptr, i32 } %3127, 0
  store ptr %3128, ptr %20, align 8
  %3129 = extractvalue { ptr, i32 } %3127, 1
  store i32 %3129, ptr %21, align 4
  br label %3174

3130:                                             ; preds = %3076
  %3131 = landingpad { ptr, i32 }
          cleanup
  %3132 = extractvalue { ptr, i32 } %3131, 0
  store ptr %3132, ptr %20, align 8
  %3133 = extractvalue { ptr, i32 } %3131, 1
  store i32 %3133, ptr %21, align 4
  br label %3173

3134:                                             ; preds = %3083
  %3135 = landingpad { ptr, i32 }
          cleanup
  %3136 = extractvalue { ptr, i32 } %3135, 0
  store ptr %3136, ptr %20, align 8
  %3137 = extractvalue { ptr, i32 } %3135, 1
  store i32 %3137, ptr %21, align 4
  br label %3172

3138:                                             ; preds = %3085
  %3139 = landingpad { ptr, i32 }
          cleanup
  %3140 = extractvalue { ptr, i32 } %3139, 0
  store ptr %3140, ptr %20, align 8
  %3141 = extractvalue { ptr, i32 } %3139, 1
  store i32 %3141, ptr %21, align 4
  br label %3171

3142:                                             ; preds = %3089
  %3143 = landingpad { ptr, i32 }
          cleanup
  %3144 = extractvalue { ptr, i32 } %3143, 0
  store ptr %3144, ptr %20, align 8
  %3145 = extractvalue { ptr, i32 } %3143, 1
  store i32 %3145, ptr %21, align 4
  br label %3153

3146:                                             ; preds = %3091
  %3147 = landingpad { ptr, i32 }
          cleanup
  %3148 = extractvalue { ptr, i32 } %3147, 0
  store ptr %3148, ptr %20, align 8
  %3149 = extractvalue { ptr, i32 } %3147, 1
  store i32 %3149, ptr %21, align 4
  %3150 = load i1, ptr %311, align 1
  br i1 %3150, label %3151, label %3152

3151:                                             ; preds = %3146
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %309) #9
  br label %3152

3152:                                             ; preds = %3151, %3146
  br label %3153

3153:                                             ; preds = %3152, %3142
  %3154 = load i1, ptr %310, align 1
  br i1 %3154, label %3155, label %3156

3155:                                             ; preds = %3153
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #9
  br label %3156

3156:                                             ; preds = %3155, %3153
  br label %3171

3157:                                             ; preds = %3103
  %3158 = landingpad { ptr, i32 }
          cleanup
  %3159 = extractvalue { ptr, i32 } %3158, 0
  store ptr %3159, ptr %20, align 8
  %3160 = extractvalue { ptr, i32 } %3158, 1
  store i32 %3160, ptr %21, align 4
  br label %3170

3161:                                             ; preds = %3114
  %3162 = landingpad { ptr, i32 }
          cleanup
  %3163 = extractvalue { ptr, i32 } %3162, 0
  store ptr %3163, ptr %20, align 8
  %3164 = extractvalue { ptr, i32 } %3162, 1
  store i32 %3164, ptr %21, align 4
  br label %3169

3165:                                             ; preds = %3120, %3116
  %3166 = landingpad { ptr, i32 }
          cleanup
  %3167 = extractvalue { ptr, i32 } %3166, 0
  store ptr %3167, ptr %20, align 8
  %3168 = extractvalue { ptr, i32 } %3166, 1
  store i32 %3168, ptr %21, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #9
  br label %3169

3169:                                             ; preds = %3165, %3161
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %313) #9
  br label %3170

3170:                                             ; preds = %3169, %3157
  call void @llvm.lifetime.end.p0(i64 32, ptr %312) #9
  br label %3171

3171:                                             ; preds = %3170, %3156, %3138
  call void @llvm.lifetime.end.p0(i64 8, ptr %308) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %307) #9
  br label %3172

3172:                                             ; preds = %3171, %3134
  call void @llvm.lifetime.end.p0(i64 8, ptr %307) #9
  br label %3173

3173:                                             ; preds = %3172, %3130
  call void @llvm.lifetime.end.p0(i64 8, ptr %306) #9
  br label %3174

3174:                                             ; preds = %3173, %3126
  call void @llvm.lifetime.end.p0(i64 8, ptr %305) #9
  br label %3177

3175:                                             ; preds = %3125, %3009
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %298) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %298) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %296) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %295) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %290) #9
  br label %3176

3176:                                             ; preds = %3175
  store i8 0, ptr %288, align 1, !tbaa !11
  br label %2936, !llvm.loop !92

3177:                                             ; preds = %3174, %3065, %3064, %3055, %3043
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %298) #9
  br label %3178

3178:                                             ; preds = %3177, %3039
  call void @llvm.lifetime.end.p0(i64 24, ptr %298) #9
  br label %3179

3179:                                             ; preds = %3178, %3035
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #9
  br label %3180

3180:                                             ; preds = %3179, %3031
  call void @llvm.lifetime.end.p0(i64 4, ptr %296) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %295) #9
  br label %3181

3181:                                             ; preds = %3180, %3027
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #9
  br label %3182

3182:                                             ; preds = %3181, %2975, %2974, %2962
  call void @llvm.lifetime.end.p0(i64 24, ptr %290) #9
  br label %3183

3183:                                             ; preds = %3182, %2941
  call void @llvm.lifetime.end.p0(i64 8, ptr %289) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %288) #9
  br label %3189

3184:                                             ; preds = %2940
  br label %3185

3185:                                             ; preds = %3184
  store i8 0, ptr %288, align 1, !tbaa !11
  br label %2928, !llvm.loop !93

3186:                                             ; preds = %2931
  br label %3187

3187:                                             ; preds = %3186, %2926, %2875, %2824, %2623, %2576, %2524
  br label %3188

3188:                                             ; preds = %3187
  store i8 0, ptr %242, align 1, !tbaa !11
  br label %2517, !llvm.loop !94

3189:                                             ; preds = %3183, %2923, %2872, %2821, %2620, %2573, %2525
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %242) #9
  br label %3194

3190:                                             ; preds = %2520
  br label %3191

3191:                                             ; preds = %3190
  store i8 0, ptr %242, align 1, !tbaa !11
  br label %2510, !llvm.loop !95

3192:                                             ; preds = %2513
  br label %3193

3193:                                             ; preds = %3192
  store i8 0, ptr %240, align 1, !tbaa !11
  br label %2500, !llvm.loop !96

3194:                                             ; preds = %3189, %2505
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %240) #9
  br label %4338

3195:                                             ; preds = %2504
  br label %3196

3196:                                             ; preds = %3195
  store i8 0, ptr %240, align 1, !tbaa !11
  br label %2492, !llvm.loop !97

3197:                                             ; preds = %2495
  br label %4336

3198:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %314) #9
  store i8 1, ptr %314, align 1, !tbaa !11
  br label %3199

3199:                                             ; preds = %3241, %3198
  %3200 = load i8, ptr %314, align 1, !tbaa !11, !range !13, !noundef !14
  %3201 = trunc i8 %3200 to i1
  br i1 %3201, label %3203, label %3202

3202:                                             ; preds = %3199
  store i32 185, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %314) #9
  br label %3242

3203:                                             ; preds = %3199
  call void @llvm.lifetime.start.p0(i64 8, ptr %315) #9
  %3204 = load ptr, ptr %29, align 8, !tbaa !5
  %3205 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %3204)
          to label %3206 unwind label %3212

3206:                                             ; preds = %3203
  store ptr %3205, ptr %315, align 8, !tbaa !5
  br label %3207

3207:                                             ; preds = %3238, %3206
  %3208 = load ptr, ptr %315, align 8, !tbaa !5
  %3209 = load i8, ptr %314, align 1, !tbaa !11, !range !13, !noundef !14
  %3210 = trunc i8 %3209 to i1
  br i1 %3210, label %3216, label %3211

3211:                                             ; preds = %3207
  store i32 188, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #9
  br label %3240

3212:                                             ; preds = %3222, %3203
  %3213 = landingpad { ptr, i32 }
          cleanup
  %3214 = extractvalue { ptr, i32 } %3213, 0
  store ptr %3214, ptr %20, align 8
  %3215 = extractvalue { ptr, i32 } %3213, 1
  store i32 %3215, ptr %21, align 4
  br label %3239

3216:                                             ; preds = %3207
  br label %3217

3217:                                             ; preds = %3216
  call void @llvm.lifetime.start.p0(i64 8, ptr %316) #9
  %3218 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef nonnull align 8 dereferenceable(8) %3218)
          to label %3219 unwind label %3223

3219:                                             ; preds = %3217
  call void @llvm.lifetime.start.p0(i64 1, ptr %318) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %317, ptr noundef nonnull align 1 dereferenceable(1) %318) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef %317)
          to label %3220 unwind label %3227

3220:                                             ; preds = %3219
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %317) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %318) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %316) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #9
  %3221 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3221, ptr noundef @.str.10)
          to label %3222 unwind label %3232

3222:                                             ; preds = %3220
  invoke void @__cxa_throw(ptr %3221, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %3212

3223:                                             ; preds = %3217
  %3224 = landingpad { ptr, i32 }
          cleanup
  %3225 = extractvalue { ptr, i32 } %3224, 0
  store ptr %3225, ptr %20, align 8
  %3226 = extractvalue { ptr, i32 } %3224, 1
  store i32 %3226, ptr %21, align 4
  br label %3231

3227:                                             ; preds = %3219
  %3228 = landingpad { ptr, i32 }
          cleanup
  %3229 = extractvalue { ptr, i32 } %3228, 0
  store ptr %3229, ptr %20, align 8
  %3230 = extractvalue { ptr, i32 } %3228, 1
  store i32 %3230, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %317) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %318) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %316) #9
  br label %3231

3231:                                             ; preds = %3227, %3223
  call void @llvm.lifetime.end.p0(i64 8, ptr %316) #9
  br label %3239

3232:                                             ; preds = %3220
  %3233 = landingpad { ptr, i32 }
          cleanup
  %3234 = extractvalue { ptr, i32 } %3233, 0
  store ptr %3234, ptr %20, align 8
  %3235 = extractvalue { ptr, i32 } %3233, 1
  store i32 %3235, ptr %21, align 4
  call void @__cxa_free_exception(ptr %3221) #9
  br label %3239

3236:                                             ; No predecessors!
  br label %3237

3237:                                             ; preds = %3236
  br label %3238

3238:                                             ; preds = %3237
  store i8 0, ptr %314, align 1, !tbaa !11
  br label %3207, !llvm.loop !98

3239:                                             ; preds = %3232, %3231, %3212
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %314) #9
  br label %4338

3240:                                             ; preds = %3211
  br label %3241

3241:                                             ; preds = %3240
  store i8 0, ptr %314, align 1, !tbaa !11
  br label %3199, !llvm.loop !99

3242:                                             ; preds = %3202
  br label %4336

3243:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %319) #9
  store i8 1, ptr %319, align 1, !tbaa !11
  br label %3244

3244:                                             ; preds = %3286, %3243
  %3245 = load i8, ptr %319, align 1, !tbaa !11, !range !13, !noundef !14
  %3246 = trunc i8 %3245 to i1
  br i1 %3246, label %3248, label %3247

3247:                                             ; preds = %3244
  store i32 193, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %319) #9
  br label %3287

3248:                                             ; preds = %3244
  call void @llvm.lifetime.start.p0(i64 8, ptr %320) #9
  %3249 = load ptr, ptr %29, align 8, !tbaa !5
  %3250 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %3249)
          to label %3251 unwind label %3257

3251:                                             ; preds = %3248
  store ptr %3250, ptr %320, align 8, !tbaa !5
  br label %3252

3252:                                             ; preds = %3283, %3251
  %3253 = load ptr, ptr %320, align 8, !tbaa !5
  %3254 = load i8, ptr %319, align 1, !tbaa !11, !range !13, !noundef !14
  %3255 = trunc i8 %3254 to i1
  br i1 %3255, label %3261, label %3256

3256:                                             ; preds = %3252
  store i32 196, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %320) #9
  br label %3285

3257:                                             ; preds = %3267, %3248
  %3258 = landingpad { ptr, i32 }
          cleanup
  %3259 = extractvalue { ptr, i32 } %3258, 0
  store ptr %3259, ptr %20, align 8
  %3260 = extractvalue { ptr, i32 } %3258, 1
  store i32 %3260, ptr %21, align 4
  br label %3284

3261:                                             ; preds = %3252
  br label %3262

3262:                                             ; preds = %3261
  call void @llvm.lifetime.start.p0(i64 8, ptr %321) #9
  %3263 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull align 8 dereferenceable(8) %3263)
          to label %3264 unwind label %3268

3264:                                             ; preds = %3262
  call void @llvm.lifetime.start.p0(i64 1, ptr %323) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_21vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %322, ptr noundef nonnull align 1 dereferenceable(1) %323) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef %322)
          to label %3265 unwind label %3272

3265:                                             ; preds = %3264
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %322) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %323) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #9
  %3266 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3266, ptr noundef @.str.10)
          to label %3267 unwind label %3277

3267:                                             ; preds = %3265
  invoke void @__cxa_throw(ptr %3266, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %3257

3268:                                             ; preds = %3262
  %3269 = landingpad { ptr, i32 }
          cleanup
  %3270 = extractvalue { ptr, i32 } %3269, 0
  store ptr %3270, ptr %20, align 8
  %3271 = extractvalue { ptr, i32 } %3269, 1
  store i32 %3271, ptr %21, align 4
  br label %3276

3272:                                             ; preds = %3264
  %3273 = landingpad { ptr, i32 }
          cleanup
  %3274 = extractvalue { ptr, i32 } %3273, 0
  store ptr %3274, ptr %20, align 8
  %3275 = extractvalue { ptr, i32 } %3273, 1
  store i32 %3275, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %322) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %323) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %321) #9
  br label %3276

3276:                                             ; preds = %3272, %3268
  call void @llvm.lifetime.end.p0(i64 8, ptr %321) #9
  br label %3284

3277:                                             ; preds = %3265
  %3278 = landingpad { ptr, i32 }
          cleanup
  %3279 = extractvalue { ptr, i32 } %3278, 0
  store ptr %3279, ptr %20, align 8
  %3280 = extractvalue { ptr, i32 } %3278, 1
  store i32 %3280, ptr %21, align 4
  call void @__cxa_free_exception(ptr %3266) #9
  br label %3284

3281:                                             ; No predecessors!
  br label %3282

3282:                                             ; preds = %3281
  br label %3283

3283:                                             ; preds = %3282
  store i8 0, ptr %319, align 1, !tbaa !11
  br label %3252, !llvm.loop !100

3284:                                             ; preds = %3277, %3276, %3257
  call void @llvm.lifetime.end.p0(i64 8, ptr %320) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %319) #9
  br label %4338

3285:                                             ; preds = %3256
  br label %3286

3286:                                             ; preds = %3285
  store i8 0, ptr %319, align 1, !tbaa !11
  br label %3244, !llvm.loop !101

3287:                                             ; preds = %3247
  br label %4336

3288:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %324) #9
  store i8 1, ptr %324, align 1, !tbaa !11
  br label %3289

3289:                                             ; preds = %3331, %3288
  %3290 = load i8, ptr %324, align 1, !tbaa !11, !range !13, !noundef !14
  %3291 = trunc i8 %3290 to i1
  br i1 %3291, label %3293, label %3292

3292:                                             ; preds = %3289
  store i32 201, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %324) #9
  br label %3332

3293:                                             ; preds = %3289
  call void @llvm.lifetime.start.p0(i64 8, ptr %325) #9
  %3294 = load ptr, ptr %29, align 8, !tbaa !5
  %3295 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %3294)
          to label %3296 unwind label %3302

3296:                                             ; preds = %3293
  store ptr %3295, ptr %325, align 8, !tbaa !5
  br label %3297

3297:                                             ; preds = %3328, %3296
  %3298 = load ptr, ptr %325, align 8, !tbaa !5
  %3299 = load i8, ptr %324, align 1, !tbaa !11, !range !13, !noundef !14
  %3300 = trunc i8 %3299 to i1
  br i1 %3300, label %3306, label %3301

3301:                                             ; preds = %3297
  store i32 204, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %325) #9
  br label %3330

3302:                                             ; preds = %3312, %3293
  %3303 = landingpad { ptr, i32 }
          cleanup
  %3304 = extractvalue { ptr, i32 } %3303, 0
  store ptr %3304, ptr %20, align 8
  %3305 = extractvalue { ptr, i32 } %3303, 1
  store i32 %3305, ptr %21, align 4
  br label %3329

3306:                                             ; preds = %3297
  br label %3307

3307:                                             ; preds = %3306
  call void @llvm.lifetime.start.p0(i64 8, ptr %326) #9
  %3308 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %326, ptr noundef nonnull align 8 dereferenceable(8) %3308)
          to label %3309 unwind label %3313

3309:                                             ; preds = %3307
  call void @llvm.lifetime.start.p0(i64 1, ptr %328) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_22vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %327, ptr noundef nonnull align 1 dereferenceable(1) %328) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %326, ptr noundef %327)
          to label %3310 unwind label %3317

3310:                                             ; preds = %3309
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %327) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %328) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %326) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %326) #9
  %3311 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3311, ptr noundef @.str.10)
          to label %3312 unwind label %3322

3312:                                             ; preds = %3310
  invoke void @__cxa_throw(ptr %3311, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %3302

3313:                                             ; preds = %3307
  %3314 = landingpad { ptr, i32 }
          cleanup
  %3315 = extractvalue { ptr, i32 } %3314, 0
  store ptr %3315, ptr %20, align 8
  %3316 = extractvalue { ptr, i32 } %3314, 1
  store i32 %3316, ptr %21, align 4
  br label %3321

3317:                                             ; preds = %3309
  %3318 = landingpad { ptr, i32 }
          cleanup
  %3319 = extractvalue { ptr, i32 } %3318, 0
  store ptr %3319, ptr %20, align 8
  %3320 = extractvalue { ptr, i32 } %3318, 1
  store i32 %3320, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %327) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %328) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %326) #9
  br label %3321

3321:                                             ; preds = %3317, %3313
  call void @llvm.lifetime.end.p0(i64 8, ptr %326) #9
  br label %3329

3322:                                             ; preds = %3310
  %3323 = landingpad { ptr, i32 }
          cleanup
  %3324 = extractvalue { ptr, i32 } %3323, 0
  store ptr %3324, ptr %20, align 8
  %3325 = extractvalue { ptr, i32 } %3323, 1
  store i32 %3325, ptr %21, align 4
  call void @__cxa_free_exception(ptr %3311) #9
  br label %3329

3326:                                             ; No predecessors!
  br label %3327

3327:                                             ; preds = %3326
  br label %3328

3328:                                             ; preds = %3327
  store i8 0, ptr %324, align 1, !tbaa !11
  br label %3297, !llvm.loop !102

3329:                                             ; preds = %3322, %3321, %3302
  call void @llvm.lifetime.end.p0(i64 8, ptr %325) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %324) #9
  br label %4338

3330:                                             ; preds = %3301
  br label %3331

3331:                                             ; preds = %3330
  store i8 0, ptr %324, align 1, !tbaa !11
  br label %3289, !llvm.loop !103

3332:                                             ; preds = %3292
  br label %4336

3333:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %329) #9
  store i8 1, ptr %329, align 1, !tbaa !11
  br label %3334

3334:                                             ; preds = %3382, %3333
  %3335 = load i8, ptr %329, align 1, !tbaa !11, !range !13, !noundef !14
  %3336 = trunc i8 %3335 to i1
  br i1 %3336, label %3338, label %3337

3337:                                             ; preds = %3334
  store i32 209, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %329) #9
  br label %3383

3338:                                             ; preds = %3334
  call void @llvm.lifetime.start.p0(i64 8, ptr %330) #9
  %3339 = load ptr, ptr %29, align 8, !tbaa !5
  %3340 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %3339)
          to label %3341 unwind label %3347

3341:                                             ; preds = %3338
  store ptr %3340, ptr %330, align 8, !tbaa !5
  br label %3342

3342:                                             ; preds = %3379, %3341
  %3343 = load ptr, ptr %330, align 8, !tbaa !5
  %3344 = load i8, ptr %329, align 1, !tbaa !11, !range !13, !noundef !14
  %3345 = trunc i8 %3344 to i1
  br i1 %3345, label %3351, label %3346

3346:                                             ; preds = %3342
  store i32 212, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %330) #9
  br label %3381

3347:                                             ; preds = %3338
  %3348 = landingpad { ptr, i32 }
          cleanup
  %3349 = extractvalue { ptr, i32 } %3348, 0
  store ptr %3349, ptr %20, align 8
  %3350 = extractvalue { ptr, i32 } %3348, 1
  store i32 %3350, ptr %21, align 4
  br label %3380

3351:                                             ; preds = %3342
  br label %3352

3352:                                             ; preds = %3351
  call void @llvm.lifetime.start.p0(i64 8, ptr %331) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %331, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %332) #9
  %3353 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef nonnull align 8 dereferenceable(8) %3353)
          to label %3354 unwind label %3359

3354:                                             ; preds = %3352
  call void @llvm.lifetime.start.p0(i64 8, ptr %334) #9
  %3355 = getelementptr inbounds %class.anon.500, ptr %334, i32 0, i32 0
  store ptr %331, ptr %3355, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_23vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %333, ptr noundef nonnull align 8 dereferenceable(8) %334) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef %333)
          to label %3356 unwind label %3363

3356:                                             ; preds = %3354
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %333) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %332) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #9
  %3357 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3357, ptr noundef @.str.5)
          to label %3358 unwind label %3368

3358:                                             ; preds = %3356
  invoke void @__cxa_throw(ptr %3357, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %3372

3359:                                             ; preds = %3352
  %3360 = landingpad { ptr, i32 }
          cleanup
  %3361 = extractvalue { ptr, i32 } %3360, 0
  store ptr %3361, ptr %20, align 8
  %3362 = extractvalue { ptr, i32 } %3360, 1
  store i32 %3362, ptr %21, align 4
  br label %3367

3363:                                             ; preds = %3354
  %3364 = landingpad { ptr, i32 }
          cleanup
  %3365 = extractvalue { ptr, i32 } %3364, 0
  store ptr %3365, ptr %20, align 8
  %3366 = extractvalue { ptr, i32 } %3364, 1
  store i32 %3366, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %333) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %334) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %332) #9
  br label %3367

3367:                                             ; preds = %3363, %3359
  call void @llvm.lifetime.end.p0(i64 8, ptr %332) #9
  br label %3376

3368:                                             ; preds = %3356
  %3369 = landingpad { ptr, i32 }
          cleanup
  %3370 = extractvalue { ptr, i32 } %3369, 0
  store ptr %3370, ptr %20, align 8
  %3371 = extractvalue { ptr, i32 } %3369, 1
  store i32 %3371, ptr %21, align 4
  call void @__cxa_free_exception(ptr %3357) #9
  br label %3376

3372:                                             ; preds = %3358
  %3373 = landingpad { ptr, i32 }
          cleanup
  %3374 = extractvalue { ptr, i32 } %3373, 0
  store ptr %3374, ptr %20, align 8
  %3375 = extractvalue { ptr, i32 } %3373, 1
  store i32 %3375, ptr %21, align 4
  br label %3376

3376:                                             ; preds = %3372, %3368, %3367
  call void @llvm.lifetime.end.p0(i64 8, ptr %331) #9
  br label %3380

3377:                                             ; No predecessors!
  br label %3378

3378:                                             ; preds = %3377
  br label %3379

3379:                                             ; preds = %3378
  store i8 0, ptr %329, align 1, !tbaa !11
  br label %3342, !llvm.loop !104

3380:                                             ; preds = %3376, %3347
  call void @llvm.lifetime.end.p0(i64 8, ptr %330) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %329) #9
  br label %4338

3381:                                             ; preds = %3346
  br label %3382

3382:                                             ; preds = %3381
  store i8 0, ptr %329, align 1, !tbaa !11
  br label %3334, !llvm.loop !105

3383:                                             ; preds = %3337
  br label %4336

3384:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %335) #9
  store i8 1, ptr %335, align 1, !tbaa !11
  br label %3385

3385:                                             ; preds = %3995, %3384
  %3386 = load i8, ptr %335, align 1, !tbaa !11, !range !13, !noundef !14
  %3387 = trunc i8 %3386 to i1
  br i1 %3387, label %3389, label %3388

3388:                                             ; preds = %3385
  store i32 217, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %335) #9
  br label %3996

3389:                                             ; preds = %3385
  call void @llvm.lifetime.start.p0(i64 8, ptr %336) #9
  %3390 = load ptr, ptr %29, align 8, !tbaa !5
  %3391 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %3390)
          to label %3392 unwind label %3398

3392:                                             ; preds = %3389
  store ptr %3391, ptr %336, align 8, !tbaa !5
  br label %3393

3393:                                             ; preds = %3992, %3392
  %3394 = load ptr, ptr %336, align 8, !tbaa !5
  %3395 = load i8, ptr %335, align 1, !tbaa !11, !range !13, !noundef !14
  %3396 = trunc i8 %3395 to i1
  br i1 %3396, label %3402, label %3397

3397:                                             ; preds = %3393
  store i32 220, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %336) #9
  br label %3994

3398:                                             ; preds = %3973, %3811, %3672, %3460, %3444, %3428, %3418, %3415, %3411, %3407, %3403, %3389
  %3399 = landingpad { ptr, i32 }
          cleanup
  %3400 = extractvalue { ptr, i32 } %3399, 0
  store ptr %3400, ptr %20, align 8
  %3401 = extractvalue { ptr, i32 } %3399, 1
  store i32 %3401, ptr %21, align 4
  br label %3993

3402:                                             ; preds = %3393
  br label %3403

3403:                                             ; preds = %3402
  %3404 = load ptr, ptr %24, align 8, !tbaa !5
  %3405 = invoke noundef zeroext i1 @_ZNK11PatternRule8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(120) %3404)
          to label %3406 unwind label %3398

3406:                                             ; preds = %3403
  br i1 %3405, label %3442, label %3407

3407:                                             ; preds = %3406
  %3408 = load ptr, ptr %24, align 8, !tbaa !5
  %3409 = invoke noundef zeroext i1 @_ZNK11PatternRule13is_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(120) %3408)
          to label %3410 unwind label %3398

3410:                                             ; preds = %3407
  br i1 %3409, label %3442, label %3411

3411:                                             ; preds = %3410
  %3412 = load ptr, ptr %24, align 8, !tbaa !5
  %3413 = invoke noundef zeroext i1 @_ZNK11PatternRule8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %3412)
          to label %3414 unwind label %3398

3414:                                             ; preds = %3411
  br i1 %3413, label %3415, label %3421

3415:                                             ; preds = %3414
  %3416 = load ptr, ptr %24, align 8, !tbaa !5
  %3417 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %3416)
          to label %3418 unwind label %3398

3418:                                             ; preds = %3415
  %3419 = invoke noundef zeroext i1 @_ZNK3MIR8Constant8is_BytesEv(ptr noundef nonnull align 8 dereferenceable(40) %3417)
          to label %3420 unwind label %3398

3420:                                             ; preds = %3418
  br i1 %3419, label %3442, label %3421

3421:                                             ; preds = %3420, %3414
  call void @llvm.lifetime.start.p0(i64 8, ptr %337) #9
  %3422 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef nonnull align 8 dereferenceable(8) %3422)
          to label %3423 unwind label %3429

3423:                                             ; preds = %3421
  call void @llvm.lifetime.start.p0(i64 8, ptr %339) #9
  %3424 = getelementptr inbounds %class.anon.501, ptr %339, i32 0, i32 0
  %3425 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %3425, ptr %3424, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_24vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %338, ptr noundef nonnull align 8 dereferenceable(8) %339) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %337, ptr noundef %338)
          to label %3426 unwind label %3433

3426:                                             ; preds = %3423
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %338) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %337) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %337) #9
  %3427 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3427, ptr noundef @.str.10)
          to label %3428 unwind label %3438

3428:                                             ; preds = %3426
  invoke void @__cxa_throw(ptr %3427, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %3398

3429:                                             ; preds = %3421
  %3430 = landingpad { ptr, i32 }
          cleanup
  %3431 = extractvalue { ptr, i32 } %3430, 0
  store ptr %3431, ptr %20, align 8
  %3432 = extractvalue { ptr, i32 } %3430, 1
  store i32 %3432, ptr %21, align 4
  br label %3437

3433:                                             ; preds = %3423
  %3434 = landingpad { ptr, i32 }
          cleanup
  %3435 = extractvalue { ptr, i32 } %3434, 0
  store ptr %3435, ptr %20, align 8
  %3436 = extractvalue { ptr, i32 } %3434, 1
  store i32 %3436, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %338) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %339) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %337) #9
  br label %3437

3437:                                             ; preds = %3433, %3429
  call void @llvm.lifetime.end.p0(i64 8, ptr %337) #9
  br label %3993

3438:                                             ; preds = %3426
  %3439 = landingpad { ptr, i32 }
          cleanup
  %3440 = extractvalue { ptr, i32 } %3439, 0
  store ptr %3440, ptr %20, align 8
  %3441 = extractvalue { ptr, i32 } %3439, 1
  store i32 %3441, ptr %21, align 4
  call void @__cxa_free_exception(ptr %3427) #9
  br label %3993

3442:                                             ; preds = %3420, %3410, %3406
  br label %3443

3443:                                             ; preds = %3442
  br label %3444

3444:                                             ; preds = %3443
  %3445 = load ptr, ptr %24, align 8, !tbaa !5
  %3446 = invoke noundef zeroext i1 @_ZNK11PatternRule8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %3445)
          to label %3447 unwind label %3398

3447:                                             ; preds = %3444
  br i1 %3446, label %3448, label %3672

3448:                                             ; preds = %3447
  br label %3449

3449:                                             ; preds = %3448
  %3450 = load ptr, ptr %336, align 8, !tbaa !5
  %3451 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %3450, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %340) #9
  store i32 2, ptr %340, align 4, !tbaa !20
  %3452 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %3451, ptr noundef nonnull align 4 dereferenceable(4) %340)
          to label %3453 unwind label %3461

3453:                                             ; preds = %3449
  %3454 = xor i1 %3452, true
  call void @llvm.lifetime.end.p0(i64 4, ptr %340) #9
  br i1 %3454, label %3455, label %3478

3455:                                             ; preds = %3453
  call void @llvm.lifetime.start.p0(i64 8, ptr %341) #9
  %3456 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %341, ptr noundef nonnull align 8 dereferenceable(8) %3456)
          to label %3457 unwind label %3465

3457:                                             ; preds = %3455
  call void @llvm.lifetime.start.p0(i64 1, ptr %343) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_25vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %342, ptr noundef nonnull align 1 dereferenceable(1) %343) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %341, ptr noundef %342)
          to label %3458 unwind label %3469

3458:                                             ; preds = %3457
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %342) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %343) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %341) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %341) #9
  %3459 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3459, ptr noundef @.str.10)
          to label %3460 unwind label %3474

3460:                                             ; preds = %3458
  invoke void @__cxa_throw(ptr %3459, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %3398

3461:                                             ; preds = %3449
  %3462 = landingpad { ptr, i32 }
          cleanup
  %3463 = extractvalue { ptr, i32 } %3462, 0
  store ptr %3463, ptr %20, align 8
  %3464 = extractvalue { ptr, i32 } %3462, 1
  store i32 %3464, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %340) #9
  br label %3993

3465:                                             ; preds = %3455
  %3466 = landingpad { ptr, i32 }
          cleanup
  %3467 = extractvalue { ptr, i32 } %3466, 0
  store ptr %3467, ptr %20, align 8
  %3468 = extractvalue { ptr, i32 } %3466, 1
  store i32 %3468, ptr %21, align 4
  br label %3473

3469:                                             ; preds = %3457
  %3470 = landingpad { ptr, i32 }
          cleanup
  %3471 = extractvalue { ptr, i32 } %3470, 0
  store ptr %3471, ptr %20, align 8
  %3472 = extractvalue { ptr, i32 } %3470, 1
  store i32 %3472, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %342) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %343) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %341) #9
  br label %3473

3473:                                             ; preds = %3469, %3465
  call void @llvm.lifetime.end.p0(i64 8, ptr %341) #9
  br label %3993

3474:                                             ; preds = %3458
  %3475 = landingpad { ptr, i32 }
          cleanup
  %3476 = extractvalue { ptr, i32 } %3475, 0
  store ptr %3476, ptr %20, align 8
  %3477 = extractvalue { ptr, i32 } %3475, 1
  store i32 %3477, ptr %21, align 4
  call void @__cxa_free_exception(ptr %3459) #9
  br label %3993

3478:                                             ; preds = %3453
  br label %3479

3479:                                             ; preds = %3478
  br label %3480

3480:                                             ; preds = %3479
  call void @llvm.lifetime.start.p0(i64 40, ptr %344) #9
  %3481 = load ptr, ptr %24, align 8, !tbaa !5
  %3482 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %3481)
          to label %3483 unwind label %3511

3483:                                             ; preds = %3480
  %3484 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR8Constant8as_BytesEv(ptr noundef nonnull align 8 dereferenceable(40) %3482)
          to label %3485 unwind label %3511

3485:                                             ; preds = %3483
  invoke void @_ZNSt6vectorIhSaIhEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %345, ptr noundef nonnull align 8 dereferenceable(24) %3484)
          to label %3486 unwind label %3511

3486:                                             ; preds = %3485
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %344, ptr noundef %345)
          to label %3487 unwind label %3515

3487:                                             ; preds = %3486
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %345) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr %346) #9
  %3488 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %347, i32 0, i32 0
  %3489 = load ptr, ptr %24, align 8, !tbaa !5
  %3490 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %3489)
          to label %3491 unwind label %3519

3491:                                             ; preds = %3487
  %3492 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR8Constant8as_BytesEv(ptr noundef nonnull align 8 dereferenceable(40) %3490)
          to label %3493 unwind label %3519

3493:                                             ; preds = %3491
  %3494 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3492) #9
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %3488, i64 noundef %3494, i64 noundef 0)
          to label %3495 unwind label %3519

3495:                                             ; preds = %3493
  %3496 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %347, i32 0, i32 1
  store i32 0, ptr %3496, align 8, !tbaa !34
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %346, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %347)
          to label %3497 unwind label %3519

3497:                                             ; preds = %3495
  call void @llvm.lifetime.start.p0(i64 4, ptr %348) #9
  %3498 = load ptr, ptr %9, align 8, !tbaa !5
  %3499 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %3498)
          to label %3500 unwind label %3523

3500:                                             ; preds = %3497
  store i32 %3499, ptr %348, align 4, !tbaa !9
  br label %3501

3501:                                             ; preds = %3500
  %3502 = invoke noundef zeroext i1 @_ZNK3MIR6LValue8is_DerefEv(ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %3503 unwind label %3523

3503:                                             ; preds = %3501
  br i1 %3502, label %3540, label %3504

3504:                                             ; preds = %3503
  call void @llvm.lifetime.start.p0(i64 8, ptr %349) #9
  %3505 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef nonnull align 8 dereferenceable(8) %3505)
          to label %3506 unwind label %3527

3506:                                             ; preds = %3504
  call void @llvm.lifetime.start.p0(i64 8, ptr %351) #9
  %3507 = getelementptr inbounds %class.anon.504, ptr %351, i32 0, i32 0
  store ptr %25, ptr %3507, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_26vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %350, ptr noundef nonnull align 8 dereferenceable(8) %351) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef %350)
          to label %3508 unwind label %3531

3508:                                             ; preds = %3506
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %351) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %349) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %349) #9
  %3509 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3509, ptr noundef @.str.10)
          to label %3510 unwind label %3536

3510:                                             ; preds = %3508
  invoke void @__cxa_throw(ptr %3509, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %3523

3511:                                             ; preds = %3485, %3483, %3480
  %3512 = landingpad { ptr, i32 }
          cleanup
  %3513 = extractvalue { ptr, i32 } %3512, 0
  store ptr %3513, ptr %20, align 8
  %3514 = extractvalue { ptr, i32 } %3512, 1
  store i32 %3514, ptr %21, align 4
  br label %3671

3515:                                             ; preds = %3486
  %3516 = landingpad { ptr, i32 }
          cleanup
  %3517 = extractvalue { ptr, i32 } %3516, 0
  store ptr %3517, ptr %20, align 8
  %3518 = extractvalue { ptr, i32 } %3516, 1
  store i32 %3518, ptr %21, align 4
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %345) #9
  br label %3671

3519:                                             ; preds = %3495, %3493, %3491, %3487
  %3520 = landingpad { ptr, i32 }
          cleanup
  %3521 = extractvalue { ptr, i32 } %3520, 0
  store ptr %3521, ptr %20, align 8
  %3522 = extractvalue { ptr, i32 } %3520, 1
  store i32 %3522, ptr %21, align 4
  br label %3670

3523:                                             ; preds = %3510, %3501, %3497
  %3524 = landingpad { ptr, i32 }
          cleanup
  %3525 = extractvalue { ptr, i32 } %3524, 0
  store ptr %3525, ptr %20, align 8
  %3526 = extractvalue { ptr, i32 } %3524, 1
  store i32 %3526, ptr %21, align 4
  br label %3669

3527:                                             ; preds = %3504
  %3528 = landingpad { ptr, i32 }
          cleanup
  %3529 = extractvalue { ptr, i32 } %3528, 0
  store ptr %3529, ptr %20, align 8
  %3530 = extractvalue { ptr, i32 } %3528, 1
  store i32 %3530, ptr %21, align 4
  br label %3535

3531:                                             ; preds = %3506
  %3532 = landingpad { ptr, i32 }
          cleanup
  %3533 = extractvalue { ptr, i32 } %3532, 0
  store ptr %3533, ptr %20, align 8
  %3534 = extractvalue { ptr, i32 } %3532, 1
  store i32 %3534, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %350) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %351) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %349) #9
  br label %3535

3535:                                             ; preds = %3531, %3527
  call void @llvm.lifetime.end.p0(i64 8, ptr %349) #9
  br label %3669

3536:                                             ; preds = %3508
  %3537 = landingpad { ptr, i32 }
          cleanup
  %3538 = extractvalue { ptr, i32 } %3537, 0
  store ptr %3538, ptr %20, align 8
  %3539 = extractvalue { ptr, i32 } %3537, 1
  store i32 %3539, ptr %21, align 4
  call void @__cxa_free_exception(ptr %3509) #9
  br label %3669

3540:                                             ; preds = %3503
  br label %3541

3541:                                             ; preds = %3540
  br label %3542

3542:                                             ; preds = %3541
  call void @llvm.lifetime.start.p0(i64 32, ptr %352) #9
  invoke void @_ZNK3MIR6LValue15clone_unwrappedEj(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %352, ptr noundef nonnull align 8 dereferenceable(32) %25, i32 noundef 1)
          to label %3543 unwind label %3579

3543:                                             ; preds = %3542
  call void @llvm.lifetime.start.p0(i64 112, ptr %353) #9
  %3544 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %354, i32 0, i32 0
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %355, ptr noundef nonnull align 8 dereferenceable(40) %344) #9
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %3544, ptr noundef %355)
          to label %3545 unwind label %3583

3545:                                             ; preds = %3543
  store i1 true, ptr %357, align 1
  %3546 = getelementptr inbounds %"struct.MIR::RValue::Data_MakeDst", ptr %354, i32 0, i32 1
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %356, ptr noundef nonnull align 8 dereferenceable(40) %346) #9
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %3546, ptr noundef %356)
          to label %3547 unwind label %3587

3547:                                             ; preds = %3545
  store i1 false, ptr %357, align 1
  invoke void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %353, ptr noundef %354)
          to label %3548 unwind label %3591

3548:                                             ; preds = %3547
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %354) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %356) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %355) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %358) #9
  %3549 = load ptr, ptr %9, align 8, !tbaa !5
  %3550 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %359) #9
  %3551 = load ptr, ptr %27, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %360, ptr noundef nonnull align 8 dereferenceable(8) %3551)
          to label %3552 unwind label %3600

3552:                                             ; preds = %3548
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %359, i32 noundef 0, ptr noundef %360)
          to label %3553 unwind label %3604

3553:                                             ; preds = %3552
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %361, ptr noundef nonnull align 8 dereferenceable(112) %353) #9
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %358, ptr noundef nonnull align 8 dereferenceable(440) %3549, ptr noundef nonnull align 8 dereferenceable(8) %3550, ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef %361)
          to label %3554 unwind label %3608

3554:                                             ; preds = %3553
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %361) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %359) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %360) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %359) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %362) #9
  %3555 = load ptr, ptr %9, align 8, !tbaa !5
  %3556 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %363) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %363, i32 noundef 14)
          to label %3557 unwind label %3614

3557:                                             ; preds = %3554
  %3558 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %365, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %366, ptr noundef nonnull align 8 dereferenceable(32) %352)
          to label %3559 unwind label %3618

3559:                                             ; preds = %3557
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %3558, ptr noundef %366)
          to label %3560 unwind label %3622

3560:                                             ; preds = %3559
  store i1 true, ptr %368, align 1
  %3561 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %365, i32 0, i32 1
  store i32 14, ptr %3561, align 8, !tbaa !37
  %3562 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %365, i32 0, i32 2
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %367, ptr noundef nonnull align 8 dereferenceable(32) %358)
          to label %3563 unwind label %3626

3563:                                             ; preds = %3560
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %3562, ptr noundef %367)
          to label %3564 unwind label %3630

3564:                                             ; preds = %3563
  store i1 false, ptr %368, align 1
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %364, ptr noundef %365)
          to label %3565 unwind label %3634

3565:                                             ; preds = %3564
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %362, ptr noundef nonnull align 8 dereferenceable(440) %3555, ptr noundef nonnull align 8 dereferenceable(8) %3556, ptr noundef nonnull align 8 dereferenceable(8) %363, ptr noundef %364)
          to label %3566 unwind label %3638

3566:                                             ; preds = %3565
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %364) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %365) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %367) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %366) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %363) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %363) #9
  %3567 = load ptr, ptr %9, align 8, !tbaa !5
  %3568 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %370, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %3568, ptr noundef nonnull align 8 dereferenceable(32) %362)
          to label %3569 unwind label %3651

3569:                                             ; preds = %3566
  %3570 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %370, i32 0, i32 1
  %3571 = load i32, ptr %348, align 4, !tbaa !9
  store i32 %3571, ptr %3570, align 8, !tbaa !22
  %3572 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %370, i32 0, i32 2
  %3573 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %3573, ptr %3572, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %369, ptr noundef %370)
          to label %3574 unwind label %3655

3574:                                             ; preds = %3569
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %3567, ptr noundef %369)
          to label %3575 unwind label %3659

3575:                                             ; preds = %3574
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %369) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %370) #9
  %3576 = load ptr, ptr %9, align 8, !tbaa !5
  %3577 = load i32, ptr %348, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %3576, i32 noundef %3577)
          to label %3578 unwind label %3651

3578:                                             ; preds = %3575
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %362) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %362) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %358) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %358) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %353) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %353) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %352) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %352) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %348) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %346) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %346) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %344) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %344) #9
  br label %3991

3579:                                             ; preds = %3542
  %3580 = landingpad { ptr, i32 }
          cleanup
  %3581 = extractvalue { ptr, i32 } %3580, 0
  store ptr %3581, ptr %20, align 8
  %3582 = extractvalue { ptr, i32 } %3580, 1
  store i32 %3582, ptr %21, align 4
  br label %3668

3583:                                             ; preds = %3543
  %3584 = landingpad { ptr, i32 }
          cleanup
  %3585 = extractvalue { ptr, i32 } %3584, 0
  store ptr %3585, ptr %20, align 8
  %3586 = extractvalue { ptr, i32 } %3584, 1
  store i32 %3586, ptr %21, align 4
  br label %3599

3587:                                             ; preds = %3545
  %3588 = landingpad { ptr, i32 }
          cleanup
  %3589 = extractvalue { ptr, i32 } %3588, 0
  store ptr %3589, ptr %20, align 8
  %3590 = extractvalue { ptr, i32 } %3588, 1
  store i32 %3590, ptr %21, align 4
  br label %3595

3591:                                             ; preds = %3547
  %3592 = landingpad { ptr, i32 }
          cleanup
  %3593 = extractvalue { ptr, i32 } %3592, 0
  store ptr %3593, ptr %20, align 8
  %3594 = extractvalue { ptr, i32 } %3592, 1
  store i32 %3594, ptr %21, align 4
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %354) #9
  br label %3595

3595:                                             ; preds = %3591, %3587
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %356) #9
  %3596 = load i1, ptr %357, align 1
  br i1 %3596, label %3597, label %3598

3597:                                             ; preds = %3595
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %3544) #9
  br label %3598

3598:                                             ; preds = %3597, %3595
  br label %3599

3599:                                             ; preds = %3598, %3583
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %355) #9
  br label %3667

3600:                                             ; preds = %3548
  %3601 = landingpad { ptr, i32 }
          cleanup
  %3602 = extractvalue { ptr, i32 } %3601, 0
  store ptr %3602, ptr %20, align 8
  %3603 = extractvalue { ptr, i32 } %3601, 1
  store i32 %3603, ptr %21, align 4
  br label %3613

3604:                                             ; preds = %3552
  %3605 = landingpad { ptr, i32 }
          cleanup
  %3606 = extractvalue { ptr, i32 } %3605, 0
  store ptr %3606, ptr %20, align 8
  %3607 = extractvalue { ptr, i32 } %3605, 1
  store i32 %3607, ptr %21, align 4
  br label %3612

3608:                                             ; preds = %3553
  %3609 = landingpad { ptr, i32 }
          cleanup
  %3610 = extractvalue { ptr, i32 } %3609, 0
  store ptr %3610, ptr %20, align 8
  %3611 = extractvalue { ptr, i32 } %3609, 1
  store i32 %3611, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %361) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %359) #9
  br label %3612

3612:                                             ; preds = %3608, %3604
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %360) #9
  br label %3613

3613:                                             ; preds = %3612, %3600
  call void @llvm.lifetime.end.p0(i64 8, ptr %359) #9
  br label %3666

3614:                                             ; preds = %3554
  %3615 = landingpad { ptr, i32 }
          cleanup
  %3616 = extractvalue { ptr, i32 } %3615, 0
  store ptr %3616, ptr %20, align 8
  %3617 = extractvalue { ptr, i32 } %3615, 1
  store i32 %3617, ptr %21, align 4
  br label %3650

3618:                                             ; preds = %3557
  %3619 = landingpad { ptr, i32 }
          cleanup
  %3620 = extractvalue { ptr, i32 } %3619, 0
  store ptr %3620, ptr %20, align 8
  %3621 = extractvalue { ptr, i32 } %3619, 1
  store i32 %3621, ptr %21, align 4
  br label %3649

3622:                                             ; preds = %3559
  %3623 = landingpad { ptr, i32 }
          cleanup
  %3624 = extractvalue { ptr, i32 } %3623, 0
  store ptr %3624, ptr %20, align 8
  %3625 = extractvalue { ptr, i32 } %3623, 1
  store i32 %3625, ptr %21, align 4
  br label %3648

3626:                                             ; preds = %3560
  %3627 = landingpad { ptr, i32 }
          cleanup
  %3628 = extractvalue { ptr, i32 } %3627, 0
  store ptr %3628, ptr %20, align 8
  %3629 = extractvalue { ptr, i32 } %3627, 1
  store i32 %3629, ptr %21, align 4
  br label %3644

3630:                                             ; preds = %3563
  %3631 = landingpad { ptr, i32 }
          cleanup
  %3632 = extractvalue { ptr, i32 } %3631, 0
  store ptr %3632, ptr %20, align 8
  %3633 = extractvalue { ptr, i32 } %3631, 1
  store i32 %3633, ptr %21, align 4
  br label %3643

3634:                                             ; preds = %3564
  %3635 = landingpad { ptr, i32 }
          cleanup
  %3636 = extractvalue { ptr, i32 } %3635, 0
  store ptr %3636, ptr %20, align 8
  %3637 = extractvalue { ptr, i32 } %3635, 1
  store i32 %3637, ptr %21, align 4
  br label %3642

3638:                                             ; preds = %3565
  %3639 = landingpad { ptr, i32 }
          cleanup
  %3640 = extractvalue { ptr, i32 } %3639, 0
  store ptr %3640, ptr %20, align 8
  %3641 = extractvalue { ptr, i32 } %3639, 1
  store i32 %3641, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %364) #9
  br label %3642

3642:                                             ; preds = %3638, %3634
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %365) #9
  br label %3643

3643:                                             ; preds = %3642, %3630
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %367) #9
  br label %3644

3644:                                             ; preds = %3643, %3626
  %3645 = load i1, ptr %368, align 1
  br i1 %3645, label %3646, label %3647

3646:                                             ; preds = %3644
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %3558) #9
  br label %3647

3647:                                             ; preds = %3646, %3644
  br label %3648

3648:                                             ; preds = %3647, %3622
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %366) #9
  br label %3649

3649:                                             ; preds = %3648, %3618
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %363) #9
  br label %3650

3650:                                             ; preds = %3649, %3614
  call void @llvm.lifetime.end.p0(i64 8, ptr %363) #9
  br label %3665

3651:                                             ; preds = %3575, %3566
  %3652 = landingpad { ptr, i32 }
          cleanup
  %3653 = extractvalue { ptr, i32 } %3652, 0
  store ptr %3653, ptr %20, align 8
  %3654 = extractvalue { ptr, i32 } %3652, 1
  store i32 %3654, ptr %21, align 4
  br label %3664

3655:                                             ; preds = %3569
  %3656 = landingpad { ptr, i32 }
          cleanup
  %3657 = extractvalue { ptr, i32 } %3656, 0
  store ptr %3657, ptr %20, align 8
  %3658 = extractvalue { ptr, i32 } %3656, 1
  store i32 %3658, ptr %21, align 4
  br label %3663

3659:                                             ; preds = %3574
  %3660 = landingpad { ptr, i32 }
          cleanup
  %3661 = extractvalue { ptr, i32 } %3660, 0
  store ptr %3661, ptr %20, align 8
  %3662 = extractvalue { ptr, i32 } %3660, 1
  store i32 %3662, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %369) #9
  br label %3663

3663:                                             ; preds = %3659, %3655
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %370) #9
  br label %3664

3664:                                             ; preds = %3663, %3651
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %362) #9
  br label %3665

3665:                                             ; preds = %3664, %3650
  call void @llvm.lifetime.end.p0(i64 32, ptr %362) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %358) #9
  br label %3666

3666:                                             ; preds = %3665, %3613
  call void @llvm.lifetime.end.p0(i64 32, ptr %358) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %353) #9
  br label %3667

3667:                                             ; preds = %3666, %3599
  call void @llvm.lifetime.end.p0(i64 112, ptr %353) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %352) #9
  br label %3668

3668:                                             ; preds = %3667, %3579
  call void @llvm.lifetime.end.p0(i64 32, ptr %352) #9
  br label %3669

3669:                                             ; preds = %3668, %3536, %3535, %3523
  call void @llvm.lifetime.end.p0(i64 4, ptr %348) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %346) #9
  br label %3670

3670:                                             ; preds = %3669, %3519
  call void @llvm.lifetime.end.p0(i64 40, ptr %346) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %344) #9
  br label %3671

3671:                                             ; preds = %3670, %3515, %3511
  call void @llvm.lifetime.end.p0(i64 40, ptr %344) #9
  br label %3993

3672:                                             ; preds = %3447
  %3673 = load ptr, ptr %24, align 8, !tbaa !5
  %3674 = invoke noundef zeroext i1 @_ZNK11PatternRule8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(120) %3673)
          to label %3675 unwind label %3398

3675:                                             ; preds = %3672
  br i1 %3674, label %3676, label %3811

3676:                                             ; preds = %3675
  call void @llvm.lifetime.start.p0(i64 8, ptr %371) #9
  %3677 = load ptr, ptr %24, align 8, !tbaa !5
  %3678 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK11PatternRule8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(120) %3677)
          to label %3679 unwind label %3738

3679:                                             ; preds = %3676
  store ptr %3678, ptr %371, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %372) #9
  %3680 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %374, i32 0, i32 0
  %3681 = load ptr, ptr %371, align 8, !tbaa !5
  %3682 = getelementptr inbounds %"struct.PatternRule::Data_Slice", ptr %3681, i32 0, i32 0
  %3683 = load i32, ptr %3682, align 8, !tbaa !106
  %3684 = zext i32 %3683 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %3680, i64 noundef %3684, i64 noundef 0)
          to label %3685 unwind label %3742

3685:                                             ; preds = %3679
  %3686 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %374, i32 0, i32 1
  store i32 0, ptr %3686, align 8, !tbaa !34
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %373, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %374)
          to label %3687 unwind label %3742

3687:                                             ; preds = %3685
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %372, ptr noundef %373)
          to label %3688 unwind label %3746

3688:                                             ; preds = %3687
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %373) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %375) #9
  %3689 = load ptr, ptr %9, align 8, !tbaa !5
  %3690 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %376) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %376, i32 noundef 0)
          to label %3691 unwind label %3750

3691:                                             ; preds = %3688
  %3692 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %378, i32 0, i32 0
  %3693 = load ptr, ptr %9, align 8, !tbaa !5
  %3694 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK10MirBuilder14get_ptr_to_dstERK4SpanRKN3MIR6LValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %3692, ptr noundef nonnull align 8 dereferenceable(440) %3693, ptr noundef nonnull align 8 dereferenceable(8) %3694, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %3695 unwind label %3754

3695:                                             ; preds = %3691
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %377, ptr noundef %378)
          to label %3696 unwind label %3758

3696:                                             ; preds = %3695
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %375, ptr noundef nonnull align 8 dereferenceable(440) %3689, ptr noundef nonnull align 8 dereferenceable(8) %3690, ptr noundef nonnull align 8 dereferenceable(8) %376, ptr noundef %377)
          to label %3697 unwind label %3762

3697:                                             ; preds = %3696
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %377) #9
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %378) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %376) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %376) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %379) #9
  %3698 = load ptr, ptr %9, align 8, !tbaa !5
  %3699 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %380) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %380, i32 noundef 14)
          to label %3700 unwind label %3769

3700:                                             ; preds = %3697
  %3701 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %382, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %383, ptr noundef nonnull align 8 dereferenceable(32) %375)
          to label %3702 unwind label %3773

3702:                                             ; preds = %3700
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %3701, ptr noundef %383)
          to label %3703 unwind label %3777

3703:                                             ; preds = %3702
  %3704 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %382, i32 0, i32 1
  store i32 14, ptr %3704, align 8, !tbaa !37
  %3705 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %382, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %3705, ptr noundef nonnull align 8 dereferenceable(48) %372) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %381, ptr noundef %382)
          to label %3706 unwind label %3781

3706:                                             ; preds = %3703
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %379, ptr noundef nonnull align 8 dereferenceable(440) %3698, ptr noundef nonnull align 8 dereferenceable(8) %3699, ptr noundef nonnull align 8 dereferenceable(8) %380, ptr noundef %381)
          to label %3707 unwind label %3785

3707:                                             ; preds = %3706
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %381) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %382) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %383) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %380) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %380) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %384) #9
  %3708 = load ptr, ptr %9, align 8, !tbaa !5
  %3709 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %3708)
          to label %3710 unwind label %3793

3710:                                             ; preds = %3707
  store i32 %3709, ptr %384, align 4, !tbaa !9
  %3711 = load ptr, ptr %9, align 8, !tbaa !5
  %3712 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %386, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %3712, ptr noundef nonnull align 8 dereferenceable(32) %379)
          to label %3713 unwind label %3793

3713:                                             ; preds = %3710
  %3714 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %386, i32 0, i32 1
  %3715 = load i32, ptr %384, align 4, !tbaa !9
  store i32 %3715, ptr %3714, align 8, !tbaa !22
  %3716 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %386, i32 0, i32 2
  %3717 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %3717, ptr %3716, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %385, ptr noundef %386)
          to label %3718 unwind label %3797

3718:                                             ; preds = %3713
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %3711, ptr noundef %385)
          to label %3719 unwind label %3801

3719:                                             ; preds = %3718
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %385) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %386) #9
  %3720 = load ptr, ptr %9, align 8, !tbaa !5
  %3721 = load i32, ptr %384, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %3720, i32 noundef %3721)
          to label %3722 unwind label %3793

3722:                                             ; preds = %3719
  %3723 = load ptr, ptr %9, align 8, !tbaa !5
  %3724 = load ptr, ptr %10, align 8, !tbaa !5
  %3725 = load ptr, ptr %371, align 8, !tbaa !5
  %3726 = getelementptr inbounds %"struct.PatternRule::Data_Slice", ptr %3725, i32 0, i32 1
  %3727 = call noundef ptr @_ZNKSt6vectorI11PatternRuleSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3726) #9
  %3728 = load ptr, ptr %371, align 8, !tbaa !5
  %3729 = getelementptr inbounds %"struct.PatternRule::Data_Slice", ptr %3728, i32 0, i32 1
  %3730 = call noundef i64 @_ZNKSt6vectorI11PatternRuleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3729) #9
  %3731 = trunc i64 %3730 to i32
  %3732 = load ptr, ptr %13, align 8, !tbaa !5
  %3733 = load ptr, ptr %14, align 8, !tbaa !5
  %3734 = load i32, ptr %15, align 4, !tbaa !9
  %3735 = load i32, ptr %16, align 4, !tbaa !9
  %3736 = invoke noundef i32 @_Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj(ptr noundef nonnull align 8 dereferenceable(440) %3723, ptr noundef nonnull align 8 dereferenceable(8) %3724, ptr noundef %3727, i32 noundef %3731, ptr noundef nonnull align 8 dereferenceable(8) %3732, ptr noundef nonnull align 8 dereferenceable(32) %3733, i32 noundef %3734, i32 noundef %3735)
          to label %3737 unwind label %3793

3737:                                             ; preds = %3722
  call void @llvm.lifetime.end.p0(i64 4, ptr %384) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %379) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %379) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %375) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %375) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %372) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %372) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %371) #9
  br label %3990

3738:                                             ; preds = %3676
  %3739 = landingpad { ptr, i32 }
          cleanup
  %3740 = extractvalue { ptr, i32 } %3739, 0
  store ptr %3740, ptr %20, align 8
  %3741 = extractvalue { ptr, i32 } %3739, 1
  store i32 %3741, ptr %21, align 4
  br label %3810

3742:                                             ; preds = %3685, %3679
  %3743 = landingpad { ptr, i32 }
          cleanup
  %3744 = extractvalue { ptr, i32 } %3743, 0
  store ptr %3744, ptr %20, align 8
  %3745 = extractvalue { ptr, i32 } %3743, 1
  store i32 %3745, ptr %21, align 4
  br label %3809

3746:                                             ; preds = %3687
  %3747 = landingpad { ptr, i32 }
          cleanup
  %3748 = extractvalue { ptr, i32 } %3747, 0
  store ptr %3748, ptr %20, align 8
  %3749 = extractvalue { ptr, i32 } %3747, 1
  store i32 %3749, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %373) #9
  br label %3809

3750:                                             ; preds = %3688
  %3751 = landingpad { ptr, i32 }
          cleanup
  %3752 = extractvalue { ptr, i32 } %3751, 0
  store ptr %3752, ptr %20, align 8
  %3753 = extractvalue { ptr, i32 } %3751, 1
  store i32 %3753, ptr %21, align 4
  br label %3768

3754:                                             ; preds = %3691
  %3755 = landingpad { ptr, i32 }
          cleanup
  %3756 = extractvalue { ptr, i32 } %3755, 0
  store ptr %3756, ptr %20, align 8
  %3757 = extractvalue { ptr, i32 } %3755, 1
  store i32 %3757, ptr %21, align 4
  br label %3767

3758:                                             ; preds = %3695
  %3759 = landingpad { ptr, i32 }
          cleanup
  %3760 = extractvalue { ptr, i32 } %3759, 0
  store ptr %3760, ptr %20, align 8
  %3761 = extractvalue { ptr, i32 } %3759, 1
  store i32 %3761, ptr %21, align 4
  br label %3766

3762:                                             ; preds = %3696
  %3763 = landingpad { ptr, i32 }
          cleanup
  %3764 = extractvalue { ptr, i32 } %3763, 0
  store ptr %3764, ptr %20, align 8
  %3765 = extractvalue { ptr, i32 } %3763, 1
  store i32 %3765, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %377) #9
  br label %3766

3766:                                             ; preds = %3762, %3758
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %378) #9
  br label %3767

3767:                                             ; preds = %3766, %3754
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %376) #9
  br label %3768

3768:                                             ; preds = %3767, %3750
  call void @llvm.lifetime.end.p0(i64 8, ptr %376) #9
  br label %3808

3769:                                             ; preds = %3697
  %3770 = landingpad { ptr, i32 }
          cleanup
  %3771 = extractvalue { ptr, i32 } %3770, 0
  store ptr %3771, ptr %20, align 8
  %3772 = extractvalue { ptr, i32 } %3770, 1
  store i32 %3772, ptr %21, align 4
  br label %3792

3773:                                             ; preds = %3700
  %3774 = landingpad { ptr, i32 }
          cleanup
  %3775 = extractvalue { ptr, i32 } %3774, 0
  store ptr %3775, ptr %20, align 8
  %3776 = extractvalue { ptr, i32 } %3774, 1
  store i32 %3776, ptr %21, align 4
  br label %3791

3777:                                             ; preds = %3702
  %3778 = landingpad { ptr, i32 }
          cleanup
  %3779 = extractvalue { ptr, i32 } %3778, 0
  store ptr %3779, ptr %20, align 8
  %3780 = extractvalue { ptr, i32 } %3778, 1
  store i32 %3780, ptr %21, align 4
  br label %3790

3781:                                             ; preds = %3703
  %3782 = landingpad { ptr, i32 }
          cleanup
  %3783 = extractvalue { ptr, i32 } %3782, 0
  store ptr %3783, ptr %20, align 8
  %3784 = extractvalue { ptr, i32 } %3782, 1
  store i32 %3784, ptr %21, align 4
  br label %3789

3785:                                             ; preds = %3706
  %3786 = landingpad { ptr, i32 }
          cleanup
  %3787 = extractvalue { ptr, i32 } %3786, 0
  store ptr %3787, ptr %20, align 8
  %3788 = extractvalue { ptr, i32 } %3786, 1
  store i32 %3788, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %381) #9
  br label %3789

3789:                                             ; preds = %3785, %3781
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %382) #9
  br label %3790

3790:                                             ; preds = %3789, %3777
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %383) #9
  br label %3791

3791:                                             ; preds = %3790, %3773
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %380) #9
  br label %3792

3792:                                             ; preds = %3791, %3769
  call void @llvm.lifetime.end.p0(i64 8, ptr %380) #9
  br label %3807

3793:                                             ; preds = %3722, %3719, %3710, %3707
  %3794 = landingpad { ptr, i32 }
          cleanup
  %3795 = extractvalue { ptr, i32 } %3794, 0
  store ptr %3795, ptr %20, align 8
  %3796 = extractvalue { ptr, i32 } %3794, 1
  store i32 %3796, ptr %21, align 4
  br label %3806

3797:                                             ; preds = %3713
  %3798 = landingpad { ptr, i32 }
          cleanup
  %3799 = extractvalue { ptr, i32 } %3798, 0
  store ptr %3799, ptr %20, align 8
  %3800 = extractvalue { ptr, i32 } %3798, 1
  store i32 %3800, ptr %21, align 4
  br label %3805

3801:                                             ; preds = %3718
  %3802 = landingpad { ptr, i32 }
          cleanup
  %3803 = extractvalue { ptr, i32 } %3802, 0
  store ptr %3803, ptr %20, align 8
  %3804 = extractvalue { ptr, i32 } %3802, 1
  store i32 %3804, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %385) #9
  br label %3805

3805:                                             ; preds = %3801, %3797
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %386) #9
  br label %3806

3806:                                             ; preds = %3805, %3793
  call void @llvm.lifetime.end.p0(i64 4, ptr %384) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %379) #9
  br label %3807

3807:                                             ; preds = %3806, %3792
  call void @llvm.lifetime.end.p0(i64 32, ptr %379) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %375) #9
  br label %3808

3808:                                             ; preds = %3807, %3768
  call void @llvm.lifetime.end.p0(i64 32, ptr %375) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %372) #9
  br label %3809

3809:                                             ; preds = %3808, %3746, %3742
  call void @llvm.lifetime.end.p0(i64 48, ptr %372) #9
  br label %3810

3810:                                             ; preds = %3809, %3738
  call void @llvm.lifetime.end.p0(i64 8, ptr %371) #9
  br label %3993

3811:                                             ; preds = %3675
  %3812 = load ptr, ptr %24, align 8, !tbaa !5
  %3813 = invoke noundef zeroext i1 @_ZNK11PatternRule13is_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(120) %3812)
          to label %3814 unwind label %3398

3814:                                             ; preds = %3811
  br i1 %3813, label %3815, label %3965

3815:                                             ; preds = %3814
  call void @llvm.lifetime.start.p0(i64 8, ptr %387) #9
  %3816 = load ptr, ptr %24, align 8, !tbaa !5
  %3817 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK11PatternRule13as_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(120) %3816)
          to label %3818 unwind label %3892

3818:                                             ; preds = %3815
  store ptr %3817, ptr %387, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %388) #9
  %3819 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %390, i32 0, i32 0
  %3820 = load ptr, ptr %387, align 8, !tbaa !5
  %3821 = getelementptr inbounds %"struct.PatternRule::Data_SplitSlice", ptr %3820, i32 0, i32 0
  %3822 = load i32, ptr %3821, align 8, !tbaa !108
  %3823 = zext i32 %3822 to i64
  invoke void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %3819, i64 noundef %3823, i64 noundef 0)
          to label %3824 unwind label %3896

3824:                                             ; preds = %3818
  %3825 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %390, i32 0, i32 1
  store i32 0, ptr %3825, align 8, !tbaa !34
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %389, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %390)
          to label %3826 unwind label %3896

3826:                                             ; preds = %3824
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %388, ptr noundef %389)
          to label %3827 unwind label %3900

3827:                                             ; preds = %3826
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %389) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %391) #9
  %3828 = load ptr, ptr %9, align 8, !tbaa !5
  %3829 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %392) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %392, i32 noundef 0)
          to label %3830 unwind label %3904

3830:                                             ; preds = %3827
  %3831 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %394, i32 0, i32 0
  %3832 = load ptr, ptr %9, align 8, !tbaa !5
  %3833 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK10MirBuilder14get_ptr_to_dstERK4SpanRKN3MIR6LValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %3831, ptr noundef nonnull align 8 dereferenceable(440) %3832, ptr noundef nonnull align 8 dereferenceable(8) %3833, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %3834 unwind label %3908

3834:                                             ; preds = %3830
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %393, ptr noundef %394)
          to label %3835 unwind label %3912

3835:                                             ; preds = %3834
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %391, ptr noundef nonnull align 8 dereferenceable(440) %3828, ptr noundef nonnull align 8 dereferenceable(8) %3829, ptr noundef nonnull align 8 dereferenceable(8) %392, ptr noundef %393)
          to label %3836 unwind label %3916

3836:                                             ; preds = %3835
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %393) #9
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %394) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %392) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %392) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %395) #9
  %3837 = load ptr, ptr %9, align 8, !tbaa !5
  %3838 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %396) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %396, i32 noundef 14)
          to label %3839 unwind label %3923

3839:                                             ; preds = %3836
  %3840 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %398, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %399, ptr noundef nonnull align 8 dereferenceable(32) %391)
          to label %3841 unwind label %3927

3841:                                             ; preds = %3839
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %3840, ptr noundef %399)
          to label %3842 unwind label %3931

3842:                                             ; preds = %3841
  %3843 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %398, i32 0, i32 1
  store i32 18, ptr %3843, align 8, !tbaa !37
  %3844 = getelementptr inbounds %"struct.MIR::RValue::Data_BinOp", ptr %398, i32 0, i32 2
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %3844, ptr noundef nonnull align 8 dereferenceable(48) %388) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %397, ptr noundef %398)
          to label %3845 unwind label %3935

3845:                                             ; preds = %3842
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %395, ptr noundef nonnull align 8 dereferenceable(440) %3837, ptr noundef nonnull align 8 dereferenceable(8) %3838, ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef %397)
          to label %3846 unwind label %3939

3846:                                             ; preds = %3845
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %397) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %398) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %396) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %396) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %400) #9
  %3847 = load ptr, ptr %9, align 8, !tbaa !5
  %3848 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %3847)
          to label %3849 unwind label %3947

3849:                                             ; preds = %3846
  store i32 %3848, ptr %400, align 4, !tbaa !9
  %3850 = load ptr, ptr %9, align 8, !tbaa !5
  %3851 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %402, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %3851, ptr noundef nonnull align 8 dereferenceable(32) %395)
          to label %3852 unwind label %3947

3852:                                             ; preds = %3849
  %3853 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %402, i32 0, i32 1
  %3854 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %3854, ptr %3853, align 8, !tbaa !22
  %3855 = getelementptr inbounds %"struct.MIR::Terminator::Data_If", ptr %402, i32 0, i32 2
  %3856 = load i32, ptr %400, align 4, !tbaa !9
  store i32 %3856, ptr %3855, align 4, !tbaa !31
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind writable sret(%"class.MIR::Terminator") align 8 %401, ptr noundef %402)
          to label %3857 unwind label %3951

3857:                                             ; preds = %3852
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %3850, ptr noundef %401)
          to label %3858 unwind label %3955

3858:                                             ; preds = %3857
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %401) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %402) #9
  %3859 = load ptr, ptr %9, align 8, !tbaa !5
  %3860 = load i32, ptr %400, align 4, !tbaa !9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %3859, i32 noundef %3860)
          to label %3861 unwind label %3947

3861:                                             ; preds = %3858
  %3862 = load ptr, ptr %9, align 8, !tbaa !5
  %3863 = load ptr, ptr %10, align 8, !tbaa !5
  %3864 = load ptr, ptr %387, align 8, !tbaa !5
  %3865 = getelementptr inbounds %"struct.PatternRule::Data_SplitSlice", ptr %3864, i32 0, i32 2
  %3866 = call noundef ptr @_ZNKSt6vectorI11PatternRuleSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3865) #9
  %3867 = load ptr, ptr %387, align 8, !tbaa !5
  %3868 = getelementptr inbounds %"struct.PatternRule::Data_SplitSlice", ptr %3867, i32 0, i32 2
  %3869 = call noundef i64 @_ZNKSt6vectorI11PatternRuleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3868) #9
  %3870 = trunc i64 %3869 to i32
  %3871 = load ptr, ptr %13, align 8, !tbaa !5
  %3872 = load ptr, ptr %14, align 8, !tbaa !5
  %3873 = load i32, ptr %15, align 4, !tbaa !9
  %3874 = load i32, ptr %16, align 4, !tbaa !9
  %3875 = invoke noundef i32 @_Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj(ptr noundef nonnull align 8 dereferenceable(440) %3862, ptr noundef nonnull align 8 dereferenceable(8) %3863, ptr noundef %3866, i32 noundef %3870, ptr noundef nonnull align 8 dereferenceable(8) %3871, ptr noundef nonnull align 8 dereferenceable(32) %3872, i32 noundef %3873, i32 noundef %3874)
          to label %3876 unwind label %3947

3876:                                             ; preds = %3861
  %3877 = load ptr, ptr %9, align 8, !tbaa !5
  %3878 = load ptr, ptr %10, align 8, !tbaa !5
  %3879 = load ptr, ptr %387, align 8, !tbaa !5
  %3880 = getelementptr inbounds %"struct.PatternRule::Data_SplitSlice", ptr %3879, i32 0, i32 3
  %3881 = call noundef ptr @_ZNKSt6vectorI11PatternRuleSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %3880) #9
  %3882 = load ptr, ptr %387, align 8, !tbaa !5
  %3883 = getelementptr inbounds %"struct.PatternRule::Data_SplitSlice", ptr %3882, i32 0, i32 3
  %3884 = call noundef i64 @_ZNKSt6vectorI11PatternRuleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3883) #9
  %3885 = trunc i64 %3884 to i32
  %3886 = load ptr, ptr %13, align 8, !tbaa !5
  %3887 = load ptr, ptr %14, align 8, !tbaa !5
  %3888 = load i32, ptr %15, align 4, !tbaa !9
  %3889 = load i32, ptr %16, align 4, !tbaa !9
  %3890 = invoke noundef i32 @_Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj(ptr noundef nonnull align 8 dereferenceable(440) %3877, ptr noundef nonnull align 8 dereferenceable(8) %3878, ptr noundef %3881, i32 noundef %3885, ptr noundef nonnull align 8 dereferenceable(8) %3886, ptr noundef nonnull align 8 dereferenceable(32) %3887, i32 noundef %3888, i32 noundef %3889)
          to label %3891 unwind label %3947

3891:                                             ; preds = %3876
  call void @llvm.lifetime.end.p0(i64 4, ptr %400) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %395) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %395) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %391) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %391) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %388) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %388) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %387) #9
  br label %3989

3892:                                             ; preds = %3815
  %3893 = landingpad { ptr, i32 }
          cleanup
  %3894 = extractvalue { ptr, i32 } %3893, 0
  store ptr %3894, ptr %20, align 8
  %3895 = extractvalue { ptr, i32 } %3893, 1
  store i32 %3895, ptr %21, align 4
  br label %3964

3896:                                             ; preds = %3824, %3818
  %3897 = landingpad { ptr, i32 }
          cleanup
  %3898 = extractvalue { ptr, i32 } %3897, 0
  store ptr %3898, ptr %20, align 8
  %3899 = extractvalue { ptr, i32 } %3897, 1
  store i32 %3899, ptr %21, align 4
  br label %3963

3900:                                             ; preds = %3826
  %3901 = landingpad { ptr, i32 }
          cleanup
  %3902 = extractvalue { ptr, i32 } %3901, 0
  store ptr %3902, ptr %20, align 8
  %3903 = extractvalue { ptr, i32 } %3901, 1
  store i32 %3903, ptr %21, align 4
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %389) #9
  br label %3963

3904:                                             ; preds = %3827
  %3905 = landingpad { ptr, i32 }
          cleanup
  %3906 = extractvalue { ptr, i32 } %3905, 0
  store ptr %3906, ptr %20, align 8
  %3907 = extractvalue { ptr, i32 } %3905, 1
  store i32 %3907, ptr %21, align 4
  br label %3922

3908:                                             ; preds = %3830
  %3909 = landingpad { ptr, i32 }
          cleanup
  %3910 = extractvalue { ptr, i32 } %3909, 0
  store ptr %3910, ptr %20, align 8
  %3911 = extractvalue { ptr, i32 } %3909, 1
  store i32 %3911, ptr %21, align 4
  br label %3921

3912:                                             ; preds = %3834
  %3913 = landingpad { ptr, i32 }
          cleanup
  %3914 = extractvalue { ptr, i32 } %3913, 0
  store ptr %3914, ptr %20, align 8
  %3915 = extractvalue { ptr, i32 } %3913, 1
  store i32 %3915, ptr %21, align 4
  br label %3920

3916:                                             ; preds = %3835
  %3917 = landingpad { ptr, i32 }
          cleanup
  %3918 = extractvalue { ptr, i32 } %3917, 0
  store ptr %3918, ptr %20, align 8
  %3919 = extractvalue { ptr, i32 } %3917, 1
  store i32 %3919, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %393) #9
  br label %3920

3920:                                             ; preds = %3916, %3912
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %394) #9
  br label %3921

3921:                                             ; preds = %3920, %3908
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %392) #9
  br label %3922

3922:                                             ; preds = %3921, %3904
  call void @llvm.lifetime.end.p0(i64 8, ptr %392) #9
  br label %3962

3923:                                             ; preds = %3836
  %3924 = landingpad { ptr, i32 }
          cleanup
  %3925 = extractvalue { ptr, i32 } %3924, 0
  store ptr %3925, ptr %20, align 8
  %3926 = extractvalue { ptr, i32 } %3924, 1
  store i32 %3926, ptr %21, align 4
  br label %3946

3927:                                             ; preds = %3839
  %3928 = landingpad { ptr, i32 }
          cleanup
  %3929 = extractvalue { ptr, i32 } %3928, 0
  store ptr %3929, ptr %20, align 8
  %3930 = extractvalue { ptr, i32 } %3928, 1
  store i32 %3930, ptr %21, align 4
  br label %3945

3931:                                             ; preds = %3841
  %3932 = landingpad { ptr, i32 }
          cleanup
  %3933 = extractvalue { ptr, i32 } %3932, 0
  store ptr %3933, ptr %20, align 8
  %3934 = extractvalue { ptr, i32 } %3932, 1
  store i32 %3934, ptr %21, align 4
  br label %3944

3935:                                             ; preds = %3842
  %3936 = landingpad { ptr, i32 }
          cleanup
  %3937 = extractvalue { ptr, i32 } %3936, 0
  store ptr %3937, ptr %20, align 8
  %3938 = extractvalue { ptr, i32 } %3936, 1
  store i32 %3938, ptr %21, align 4
  br label %3943

3939:                                             ; preds = %3845
  %3940 = landingpad { ptr, i32 }
          cleanup
  %3941 = extractvalue { ptr, i32 } %3940, 0
  store ptr %3941, ptr %20, align 8
  %3942 = extractvalue { ptr, i32 } %3940, 1
  store i32 %3942, ptr %21, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %397) #9
  br label %3943

3943:                                             ; preds = %3939, %3935
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %398) #9
  br label %3944

3944:                                             ; preds = %3943, %3931
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %399) #9
  br label %3945

3945:                                             ; preds = %3944, %3927
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %396) #9
  br label %3946

3946:                                             ; preds = %3945, %3923
  call void @llvm.lifetime.end.p0(i64 8, ptr %396) #9
  br label %3961

3947:                                             ; preds = %3876, %3861, %3858, %3849, %3846
  %3948 = landingpad { ptr, i32 }
          cleanup
  %3949 = extractvalue { ptr, i32 } %3948, 0
  store ptr %3949, ptr %20, align 8
  %3950 = extractvalue { ptr, i32 } %3948, 1
  store i32 %3950, ptr %21, align 4
  br label %3960

3951:                                             ; preds = %3852
  %3952 = landingpad { ptr, i32 }
          cleanup
  %3953 = extractvalue { ptr, i32 } %3952, 0
  store ptr %3953, ptr %20, align 8
  %3954 = extractvalue { ptr, i32 } %3952, 1
  store i32 %3954, ptr %21, align 4
  br label %3959

3955:                                             ; preds = %3857
  %3956 = landingpad { ptr, i32 }
          cleanup
  %3957 = extractvalue { ptr, i32 } %3956, 0
  store ptr %3957, ptr %20, align 8
  %3958 = extractvalue { ptr, i32 } %3956, 1
  store i32 %3958, ptr %21, align 4
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %401) #9
  br label %3959

3959:                                             ; preds = %3955, %3951
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %402) #9
  br label %3960

3960:                                             ; preds = %3959, %3947
  call void @llvm.lifetime.end.p0(i64 4, ptr %400) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %395) #9
  br label %3961

3961:                                             ; preds = %3960, %3946
  call void @llvm.lifetime.end.p0(i64 32, ptr %395) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %391) #9
  br label %3962

3962:                                             ; preds = %3961, %3922
  call void @llvm.lifetime.end.p0(i64 32, ptr %391) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %388) #9
  br label %3963

3963:                                             ; preds = %3962, %3900, %3896
  call void @llvm.lifetime.end.p0(i64 48, ptr %388) #9
  br label %3964

3964:                                             ; preds = %3963, %3892
  call void @llvm.lifetime.end.p0(i64 8, ptr %387) #9
  br label %3993

3965:                                             ; preds = %3814
  br label %3966

3966:                                             ; preds = %3965
  call void @llvm.lifetime.start.p0(i64 8, ptr %403) #9
  %3967 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %403, ptr noundef nonnull align 8 dereferenceable(8) %3967)
          to label %3968 unwind label %3974

3968:                                             ; preds = %3966
  call void @llvm.lifetime.start.p0(i64 8, ptr %405) #9
  %3969 = getelementptr inbounds %class.anon.505, ptr %405, i32 0, i32 0
  %3970 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %3970, ptr %3969, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_27vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %404, ptr noundef nonnull align 8 dereferenceable(8) %405) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %403, ptr noundef %404)
          to label %3971 unwind label %3978

3971:                                             ; preds = %3968
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %404) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %405) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %403) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %403) #9
  %3972 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3972, ptr noundef @.str.10)
          to label %3973 unwind label %3983

3973:                                             ; preds = %3971
  invoke void @__cxa_throw(ptr %3972, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %3398

3974:                                             ; preds = %3966
  %3975 = landingpad { ptr, i32 }
          cleanup
  %3976 = extractvalue { ptr, i32 } %3975, 0
  store ptr %3976, ptr %20, align 8
  %3977 = extractvalue { ptr, i32 } %3975, 1
  store i32 %3977, ptr %21, align 4
  br label %3982

3978:                                             ; preds = %3968
  %3979 = landingpad { ptr, i32 }
          cleanup
  %3980 = extractvalue { ptr, i32 } %3979, 0
  store ptr %3980, ptr %20, align 8
  %3981 = extractvalue { ptr, i32 } %3979, 1
  store i32 %3981, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %404) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %405) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %403) #9
  br label %3982

3982:                                             ; preds = %3978, %3974
  call void @llvm.lifetime.end.p0(i64 8, ptr %403) #9
  br label %3993

3983:                                             ; preds = %3971
  %3984 = landingpad { ptr, i32 }
          cleanup
  %3985 = extractvalue { ptr, i32 } %3984, 0
  store ptr %3985, ptr %20, align 8
  %3986 = extractvalue { ptr, i32 } %3984, 1
  store i32 %3986, ptr %21, align 4
  call void @__cxa_free_exception(ptr %3972) #9
  br label %3993

3987:                                             ; No predecessors!
  br label %3988

3988:                                             ; preds = %3987
  br label %3989

3989:                                             ; preds = %3988, %3891
  br label %3990

3990:                                             ; preds = %3989, %3737
  br label %3991

3991:                                             ; preds = %3990, %3578
  br label %3992

3992:                                             ; preds = %3991
  store i8 0, ptr %335, align 1, !tbaa !11
  br label %3393, !llvm.loop !110

3993:                                             ; preds = %3983, %3982, %3964, %3810, %3671, %3474, %3473, %3461, %3438, %3437, %3398
  call void @llvm.lifetime.end.p0(i64 8, ptr %336) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %335) #9
  br label %4338

3994:                                             ; preds = %3397
  br label %3995

3995:                                             ; preds = %3994
  store i8 0, ptr %335, align 1, !tbaa !11
  br label %3385, !llvm.loop !111

3996:                                             ; preds = %3388
  br label %4336

3997:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %406) #9
  store i8 1, ptr %406, align 1, !tbaa !11
  br label %3998

3998:                                             ; preds = %4046, %3997
  %3999 = load i8, ptr %406, align 1, !tbaa !11, !range !13, !noundef !14
  %4000 = trunc i8 %3999 to i1
  br i1 %4000, label %4002, label %4001

4001:                                             ; preds = %3998
  store i32 231, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %406) #9
  br label %4047

4002:                                             ; preds = %3998
  call void @llvm.lifetime.start.p0(i64 8, ptr %407) #9
  %4003 = load ptr, ptr %29, align 8, !tbaa !5
  %4004 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %4003)
          to label %4005 unwind label %4011

4005:                                             ; preds = %4002
  store ptr %4004, ptr %407, align 8, !tbaa !5
  br label %4006

4006:                                             ; preds = %4043, %4005
  %4007 = load ptr, ptr %407, align 8, !tbaa !5
  %4008 = load i8, ptr %406, align 1, !tbaa !11, !range !13, !noundef !14
  %4009 = trunc i8 %4008 to i1
  br i1 %4009, label %4015, label %4010

4010:                                             ; preds = %4006
  store i32 234, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %407) #9
  br label %4045

4011:                                             ; preds = %4002
  %4012 = landingpad { ptr, i32 }
          cleanup
  %4013 = extractvalue { ptr, i32 } %4012, 0
  store ptr %4013, ptr %20, align 8
  %4014 = extractvalue { ptr, i32 } %4012, 1
  store i32 %4014, ptr %21, align 4
  br label %4044

4015:                                             ; preds = %4006
  br label %4016

4016:                                             ; preds = %4015
  call void @llvm.lifetime.start.p0(i64 8, ptr %408) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %408, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %409) #9
  %4017 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %409, ptr noundef nonnull align 8 dereferenceable(8) %4017)
          to label %4018 unwind label %4023

4018:                                             ; preds = %4016
  call void @llvm.lifetime.start.p0(i64 8, ptr %411) #9
  %4019 = getelementptr inbounds %class.anon.506, ptr %411, i32 0, i32 0
  store ptr %408, ptr %4019, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %410, ptr noundef nonnull align 8 dereferenceable(8) %411) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %409, ptr noundef %410)
          to label %4020 unwind label %4027

4020:                                             ; preds = %4018
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %410) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %411) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %409) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %409) #9
  %4021 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4021, ptr noundef @.str.5)
          to label %4022 unwind label %4032

4022:                                             ; preds = %4020
  invoke void @__cxa_throw(ptr %4021, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %4036

4023:                                             ; preds = %4016
  %4024 = landingpad { ptr, i32 }
          cleanup
  %4025 = extractvalue { ptr, i32 } %4024, 0
  store ptr %4025, ptr %20, align 8
  %4026 = extractvalue { ptr, i32 } %4024, 1
  store i32 %4026, ptr %21, align 4
  br label %4031

4027:                                             ; preds = %4018
  %4028 = landingpad { ptr, i32 }
          cleanup
  %4029 = extractvalue { ptr, i32 } %4028, 0
  store ptr %4029, ptr %20, align 8
  %4030 = extractvalue { ptr, i32 } %4028, 1
  store i32 %4030, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %410) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %411) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %409) #9
  br label %4031

4031:                                             ; preds = %4027, %4023
  call void @llvm.lifetime.end.p0(i64 8, ptr %409) #9
  br label %4040

4032:                                             ; preds = %4020
  %4033 = landingpad { ptr, i32 }
          cleanup
  %4034 = extractvalue { ptr, i32 } %4033, 0
  store ptr %4034, ptr %20, align 8
  %4035 = extractvalue { ptr, i32 } %4033, 1
  store i32 %4035, ptr %21, align 4
  call void @__cxa_free_exception(ptr %4021) #9
  br label %4040

4036:                                             ; preds = %4022
  %4037 = landingpad { ptr, i32 }
          cleanup
  %4038 = extractvalue { ptr, i32 } %4037, 0
  store ptr %4038, ptr %20, align 8
  %4039 = extractvalue { ptr, i32 } %4037, 1
  store i32 %4039, ptr %21, align 4
  br label %4040

4040:                                             ; preds = %4036, %4032, %4031
  call void @llvm.lifetime.end.p0(i64 8, ptr %408) #9
  br label %4044

4041:                                             ; No predecessors!
  br label %4042

4042:                                             ; preds = %4041
  br label %4043

4043:                                             ; preds = %4042
  store i8 0, ptr %406, align 1, !tbaa !11
  br label %4006, !llvm.loop !112

4044:                                             ; preds = %4040, %4011
  call void @llvm.lifetime.end.p0(i64 8, ptr %407) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %406) #9
  br label %4338

4045:                                             ; preds = %4010
  br label %4046

4046:                                             ; preds = %4045
  store i8 0, ptr %406, align 1, !tbaa !11
  br label %3998, !llvm.loop !113

4047:                                             ; preds = %4001
  br label %4336

4048:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %412) #9
  store i8 1, ptr %412, align 1, !tbaa !11
  br label %4049

4049:                                             ; preds = %4097, %4048
  %4050 = load i8, ptr %412, align 1, !tbaa !11, !range !13, !noundef !14
  %4051 = trunc i8 %4050 to i1
  br i1 %4051, label %4053, label %4052

4052:                                             ; preds = %4049
  store i32 239, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %412) #9
  br label %4098

4053:                                             ; preds = %4049
  call void @llvm.lifetime.start.p0(i64 8, ptr %413) #9
  %4054 = load ptr, ptr %29, align 8, !tbaa !5
  %4055 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %4054)
          to label %4056 unwind label %4062

4056:                                             ; preds = %4053
  store ptr %4055, ptr %413, align 8, !tbaa !5
  br label %4057

4057:                                             ; preds = %4094, %4056
  %4058 = load ptr, ptr %413, align 8, !tbaa !5
  %4059 = load i8, ptr %412, align 1, !tbaa !11, !range !13, !noundef !14
  %4060 = trunc i8 %4059 to i1
  br i1 %4060, label %4066, label %4061

4061:                                             ; preds = %4057
  store i32 242, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %413) #9
  br label %4096

4062:                                             ; preds = %4053
  %4063 = landingpad { ptr, i32 }
          cleanup
  %4064 = extractvalue { ptr, i32 } %4063, 0
  store ptr %4064, ptr %20, align 8
  %4065 = extractvalue { ptr, i32 } %4063, 1
  store i32 %4065, ptr %21, align 4
  br label %4095

4066:                                             ; preds = %4057
  br label %4067

4067:                                             ; preds = %4066
  call void @llvm.lifetime.start.p0(i64 8, ptr %414) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %414, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %415) #9
  %4068 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %415, ptr noundef nonnull align 8 dereferenceable(8) %4068)
          to label %4069 unwind label %4074

4069:                                             ; preds = %4067
  call void @llvm.lifetime.start.p0(i64 8, ptr %417) #9
  %4070 = getelementptr inbounds %class.anon.507, ptr %417, i32 0, i32 0
  store ptr %414, ptr %4070, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %416, ptr noundef nonnull align 8 dereferenceable(8) %417) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %415, ptr noundef %416)
          to label %4071 unwind label %4078

4071:                                             ; preds = %4069
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %416) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %417) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #9
  %4072 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4072, ptr noundef @.str.5)
          to label %4073 unwind label %4083

4073:                                             ; preds = %4071
  invoke void @__cxa_throw(ptr %4072, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %4087

4074:                                             ; preds = %4067
  %4075 = landingpad { ptr, i32 }
          cleanup
  %4076 = extractvalue { ptr, i32 } %4075, 0
  store ptr %4076, ptr %20, align 8
  %4077 = extractvalue { ptr, i32 } %4075, 1
  store i32 %4077, ptr %21, align 4
  br label %4082

4078:                                             ; preds = %4069
  %4079 = landingpad { ptr, i32 }
          cleanup
  %4080 = extractvalue { ptr, i32 } %4079, 0
  store ptr %4080, ptr %20, align 8
  %4081 = extractvalue { ptr, i32 } %4079, 1
  store i32 %4081, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %416) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %417) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %415) #9
  br label %4082

4082:                                             ; preds = %4078, %4074
  call void @llvm.lifetime.end.p0(i64 8, ptr %415) #9
  br label %4091

4083:                                             ; preds = %4071
  %4084 = landingpad { ptr, i32 }
          cleanup
  %4085 = extractvalue { ptr, i32 } %4084, 0
  store ptr %4085, ptr %20, align 8
  %4086 = extractvalue { ptr, i32 } %4084, 1
  store i32 %4086, ptr %21, align 4
  call void @__cxa_free_exception(ptr %4072) #9
  br label %4091

4087:                                             ; preds = %4073
  %4088 = landingpad { ptr, i32 }
          cleanup
  %4089 = extractvalue { ptr, i32 } %4088, 0
  store ptr %4089, ptr %20, align 8
  %4090 = extractvalue { ptr, i32 } %4088, 1
  store i32 %4090, ptr %21, align 4
  br label %4091

4091:                                             ; preds = %4087, %4083, %4082
  call void @llvm.lifetime.end.p0(i64 8, ptr %414) #9
  br label %4095

4092:                                             ; No predecessors!
  br label %4093

4093:                                             ; preds = %4092
  br label %4094

4094:                                             ; preds = %4093
  store i8 0, ptr %412, align 1, !tbaa !11
  br label %4057, !llvm.loop !114

4095:                                             ; preds = %4091, %4062
  call void @llvm.lifetime.end.p0(i64 8, ptr %413) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %412) #9
  br label %4338

4096:                                             ; preds = %4061
  br label %4097

4097:                                             ; preds = %4096
  store i8 0, ptr %412, align 1, !tbaa !11
  br label %4049, !llvm.loop !115

4098:                                             ; preds = %4052
  br label %4336

4099:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %418) #9
  store i8 1, ptr %418, align 1, !tbaa !11
  br label %4100

4100:                                             ; preds = %4146, %4099
  %4101 = load i8, ptr %418, align 1, !tbaa !11, !range !13, !noundef !14
  %4102 = trunc i8 %4101 to i1
  br i1 %4102, label %4104, label %4103

4103:                                             ; preds = %4100
  store i32 247, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %418) #9
  br label %4147

4104:                                             ; preds = %4100
  call void @llvm.lifetime.start.p0(i64 8, ptr %419) #9
  %4105 = load ptr, ptr %29, align 8, !tbaa !5
  %4106 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %4105)
          to label %4107 unwind label %4113

4107:                                             ; preds = %4104
  store ptr %4106, ptr %419, align 8, !tbaa !5
  br label %4108

4108:                                             ; preds = %4143, %4107
  %4109 = load ptr, ptr %419, align 8, !tbaa !5
  %4110 = load i8, ptr %418, align 1, !tbaa !11, !range !13, !noundef !14
  %4111 = trunc i8 %4110 to i1
  br i1 %4111, label %4117, label %4112

4112:                                             ; preds = %4108
  store i32 250, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %419) #9
  br label %4145

4113:                                             ; preds = %4127, %4104
  %4114 = landingpad { ptr, i32 }
          cleanup
  %4115 = extractvalue { ptr, i32 } %4114, 0
  store ptr %4115, ptr %20, align 8
  %4116 = extractvalue { ptr, i32 } %4114, 1
  store i32 %4116, ptr %21, align 4
  br label %4144

4117:                                             ; preds = %4108
  br label %4118

4118:                                             ; preds = %4117
  call void @llvm.lifetime.start.p0(i64 8, ptr %420) #9
  %4119 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %420, ptr noundef nonnull align 8 dereferenceable(8) %4119)
          to label %4120 unwind label %4128

4120:                                             ; preds = %4118
  call void @llvm.lifetime.start.p0(i64 16, ptr %422) #9
  %4121 = getelementptr inbounds %class.anon.508, ptr %422, i32 0, i32 0
  %4122 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %4122, ptr %4121, align 8, !tbaa !5
  %4123 = getelementptr inbounds %class.anon.508, ptr %422, i32 0, i32 1
  %4124 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %4124, ptr %4123, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_30vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %421, ptr noundef nonnull align 8 dereferenceable(16) %422) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %420, ptr noundef %421)
          to label %4125 unwind label %4132

4125:                                             ; preds = %4120
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %421) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %422) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %420) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %420) #9
  %4126 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4126, ptr noundef @.str.10)
          to label %4127 unwind label %4137

4127:                                             ; preds = %4125
  invoke void @__cxa_throw(ptr %4126, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %4113

4128:                                             ; preds = %4118
  %4129 = landingpad { ptr, i32 }
          cleanup
  %4130 = extractvalue { ptr, i32 } %4129, 0
  store ptr %4130, ptr %20, align 8
  %4131 = extractvalue { ptr, i32 } %4129, 1
  store i32 %4131, ptr %21, align 4
  br label %4136

4132:                                             ; preds = %4120
  %4133 = landingpad { ptr, i32 }
          cleanup
  %4134 = extractvalue { ptr, i32 } %4133, 0
  store ptr %4134, ptr %20, align 8
  %4135 = extractvalue { ptr, i32 } %4133, 1
  store i32 %4135, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %421) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %422) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %420) #9
  br label %4136

4136:                                             ; preds = %4132, %4128
  call void @llvm.lifetime.end.p0(i64 8, ptr %420) #9
  br label %4144

4137:                                             ; preds = %4125
  %4138 = landingpad { ptr, i32 }
          cleanup
  %4139 = extractvalue { ptr, i32 } %4138, 0
  store ptr %4139, ptr %20, align 8
  %4140 = extractvalue { ptr, i32 } %4138, 1
  store i32 %4140, ptr %21, align 4
  call void @__cxa_free_exception(ptr %4126) #9
  br label %4144

4141:                                             ; No predecessors!
  br label %4142

4142:                                             ; preds = %4141
  br label %4143

4143:                                             ; preds = %4142
  store i8 0, ptr %418, align 1, !tbaa !11
  br label %4108, !llvm.loop !116

4144:                                             ; preds = %4137, %4136, %4113
  call void @llvm.lifetime.end.p0(i64 8, ptr %419) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %418) #9
  br label %4338

4145:                                             ; preds = %4112
  br label %4146

4146:                                             ; preds = %4145
  store i8 0, ptr %418, align 1, !tbaa !11
  br label %4100, !llvm.loop !117

4147:                                             ; preds = %4103
  br label %4336

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

4149:                                             ; preds = %4195, %4148
  %4150 = load i8, ptr %423, align 1, !tbaa !11, !range !13, !noundef !14
  %4151 = trunc i8 %4150 to i1
  br i1 %4151, label %4153, label %4152

4152:                                             ; preds = %4149
  store i32 255, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %423) #9
  br label %4196

4153:                                             ; preds = %4149
  call void @llvm.lifetime.start.p0(i64 8, ptr %424) #9
  %4154 = load ptr, ptr %29, align 8, !tbaa !5
  %4155 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %4154)
          to label %4156 unwind label %4162

4156:                                             ; preds = %4153
  store ptr %4155, ptr %424, align 8, !tbaa !5
  br label %4157

4157:                                             ; preds = %4192, %4156
  %4158 = load ptr, ptr %424, align 8, !tbaa !5
  %4159 = load i8, ptr %423, align 1, !tbaa !11, !range !13, !noundef !14
  %4160 = trunc i8 %4159 to i1
  br i1 %4160, label %4166, label %4161

4161:                                             ; preds = %4157
  store i32 258, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %424) #9
  br label %4194

4162:                                             ; preds = %4176, %4153
  %4163 = landingpad { ptr, i32 }
          cleanup
  %4164 = extractvalue { ptr, i32 } %4163, 0
  store ptr %4164, ptr %20, align 8
  %4165 = extractvalue { ptr, i32 } %4163, 1
  store i32 %4165, ptr %21, align 4
  br label %4193

4166:                                             ; preds = %4157
  br label %4167

4167:                                             ; preds = %4166
  call void @llvm.lifetime.start.p0(i64 8, ptr %425) #9
  %4168 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %425, ptr noundef nonnull align 8 dereferenceable(8) %4168)
          to label %4169 unwind label %4177

4169:                                             ; preds = %4167
  call void @llvm.lifetime.start.p0(i64 16, ptr %427) #9
  %4170 = getelementptr inbounds %class.anon.509, ptr %427, i32 0, i32 0
  %4171 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %4171, ptr %4170, align 8, !tbaa !5
  %4172 = getelementptr inbounds %class.anon.509, ptr %427, i32 0, i32 1
  %4173 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %4173, ptr %4172, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %426, ptr noundef nonnull align 8 dereferenceable(16) %427) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %425, ptr noundef %426)
          to label %4174 unwind label %4181

4174:                                             ; preds = %4169
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %426) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %427) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %425) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %425) #9
  %4175 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4175, ptr noundef @.str.10)
          to label %4176 unwind label %4186

4176:                                             ; preds = %4174
  invoke void @__cxa_throw(ptr %4175, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %4162

4177:                                             ; preds = %4167
  %4178 = landingpad { ptr, i32 }
          cleanup
  %4179 = extractvalue { ptr, i32 } %4178, 0
  store ptr %4179, ptr %20, align 8
  %4180 = extractvalue { ptr, i32 } %4178, 1
  store i32 %4180, ptr %21, align 4
  br label %4185

4181:                                             ; preds = %4169
  %4182 = landingpad { ptr, i32 }
          cleanup
  %4183 = extractvalue { ptr, i32 } %4182, 0
  store ptr %4183, ptr %20, align 8
  %4184 = extractvalue { ptr, i32 } %4182, 1
  store i32 %4184, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %426) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %427) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %425) #9
  br label %4185

4185:                                             ; preds = %4181, %4177
  call void @llvm.lifetime.end.p0(i64 8, ptr %425) #9
  br label %4193

4186:                                             ; preds = %4174
  %4187 = landingpad { ptr, i32 }
          cleanup
  %4188 = extractvalue { ptr, i32 } %4187, 0
  store ptr %4188, ptr %20, align 8
  %4189 = extractvalue { ptr, i32 } %4187, 1
  store i32 %4189, ptr %21, align 4
  call void @__cxa_free_exception(ptr %4175) #9
  br label %4193

4190:                                             ; No predecessors!
  br label %4191

4191:                                             ; preds = %4190
  br label %4192

4192:                                             ; preds = %4191
  store i8 0, ptr %423, align 1, !tbaa !11
  br label %4157, !llvm.loop !118

4193:                                             ; preds = %4186, %4185, %4162
  call void @llvm.lifetime.end.p0(i64 8, ptr %424) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %423) #9
  br label %4338

4194:                                             ; preds = %4161
  br label %4195

4195:                                             ; preds = %4194
  store i8 0, ptr %423, align 1, !tbaa !11
  br label %4149, !llvm.loop !119

4196:                                             ; preds = %4152
  br label %4336

4197:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %428) #9
  store i8 1, ptr %428, align 1, !tbaa !11
  br label %4198

4198:                                             ; preds = %4244, %4197
  %4199 = load i8, ptr %428, align 1, !tbaa !11, !range !13, !noundef !14
  %4200 = trunc i8 %4199 to i1
  br i1 %4200, label %4202, label %4201

4201:                                             ; preds = %4198
  store i32 263, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %428) #9
  br label %4245

4202:                                             ; preds = %4198
  call void @llvm.lifetime.start.p0(i64 8, ptr %429) #9
  %4203 = load ptr, ptr %29, align 8, !tbaa !5
  %4204 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %4203)
          to label %4205 unwind label %4211

4205:                                             ; preds = %4202
  store ptr %4204, ptr %429, align 8, !tbaa !5
  br label %4206

4206:                                             ; preds = %4241, %4205
  %4207 = load ptr, ptr %429, align 8, !tbaa !5
  %4208 = load i8, ptr %428, align 1, !tbaa !11, !range !13, !noundef !14
  %4209 = trunc i8 %4208 to i1
  br i1 %4209, label %4215, label %4210

4210:                                             ; preds = %4206
  store i32 266, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %429) #9
  br label %4243

4211:                                             ; preds = %4225, %4202
  %4212 = landingpad { ptr, i32 }
          cleanup
  %4213 = extractvalue { ptr, i32 } %4212, 0
  store ptr %4213, ptr %20, align 8
  %4214 = extractvalue { ptr, i32 } %4212, 1
  store i32 %4214, ptr %21, align 4
  br label %4242

4215:                                             ; preds = %4206
  br label %4216

4216:                                             ; preds = %4215
  call void @llvm.lifetime.start.p0(i64 8, ptr %430) #9
  %4217 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %430, ptr noundef nonnull align 8 dereferenceable(8) %4217)
          to label %4218 unwind label %4226

4218:                                             ; preds = %4216
  call void @llvm.lifetime.start.p0(i64 16, ptr %432) #9
  %4219 = getelementptr inbounds %class.anon.510, ptr %432, i32 0, i32 0
  %4220 = load ptr, ptr %24, align 8, !tbaa !5
  store ptr %4220, ptr %4219, align 8, !tbaa !5
  %4221 = getelementptr inbounds %class.anon.510, ptr %432, i32 0, i32 1
  %4222 = load ptr, ptr %27, align 8, !tbaa !5
  store ptr %4222, ptr %4221, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_32vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %431, ptr noundef nonnull align 8 dereferenceable(16) %432) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %430, ptr noundef %431)
          to label %4223 unwind label %4230

4223:                                             ; preds = %4218
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %432) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %430) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %430) #9
  %4224 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4224, ptr noundef @.str.10)
          to label %4225 unwind label %4235

4225:                                             ; preds = %4223
  invoke void @__cxa_throw(ptr %4224, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %4211

4226:                                             ; preds = %4216
  %4227 = landingpad { ptr, i32 }
          cleanup
  %4228 = extractvalue { ptr, i32 } %4227, 0
  store ptr %4228, ptr %20, align 8
  %4229 = extractvalue { ptr, i32 } %4227, 1
  store i32 %4229, ptr %21, align 4
  br label %4234

4230:                                             ; preds = %4218
  %4231 = landingpad { ptr, i32 }
          cleanup
  %4232 = extractvalue { ptr, i32 } %4231, 0
  store ptr %4232, ptr %20, align 8
  %4233 = extractvalue { ptr, i32 } %4231, 1
  store i32 %4233, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %431) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %432) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %430) #9
  br label %4234

4234:                                             ; preds = %4230, %4226
  call void @llvm.lifetime.end.p0(i64 8, ptr %430) #9
  br label %4242

4235:                                             ; preds = %4223
  %4236 = landingpad { ptr, i32 }
          cleanup
  %4237 = extractvalue { ptr, i32 } %4236, 0
  store ptr %4237, ptr %20, align 8
  %4238 = extractvalue { ptr, i32 } %4236, 1
  store i32 %4238, ptr %21, align 4
  call void @__cxa_free_exception(ptr %4224) #9
  br label %4242

4239:                                             ; No predecessors!
  br label %4240

4240:                                             ; preds = %4239
  br label %4241

4241:                                             ; preds = %4240
  store i8 0, ptr %428, align 1, !tbaa !11
  br label %4206, !llvm.loop !120

4242:                                             ; preds = %4235, %4234, %4211
  call void @llvm.lifetime.end.p0(i64 8, ptr %429) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %428) #9
  br label %4338

4243:                                             ; preds = %4210
  br label %4244

4244:                                             ; preds = %4243
  store i8 0, ptr %428, align 1, !tbaa !11
  br label %4198, !llvm.loop !121

4245:                                             ; preds = %4201
  br label %4336

4246:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %433) #9
  store i8 1, ptr %433, align 1, !tbaa !11
  br label %4247

4247:                                             ; preds = %4289, %4246
  %4248 = load i8, ptr %433, align 1, !tbaa !11, !range !13, !noundef !14
  %4249 = trunc i8 %4248 to i1
  br i1 %4249, label %4251, label %4250

4250:                                             ; preds = %4247
  store i32 271, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %433) #9
  br label %4290

4251:                                             ; preds = %4247
  call void @llvm.lifetime.start.p0(i64 8, ptr %434) #9
  %4252 = load ptr, ptr %29, align 8, !tbaa !5
  %4253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %4252)
          to label %4254 unwind label %4260

4254:                                             ; preds = %4251
  store ptr %4253, ptr %434, align 8, !tbaa !5
  br label %4255

4255:                                             ; preds = %4286, %4254
  %4256 = load ptr, ptr %434, align 8, !tbaa !5
  %4257 = load i8, ptr %433, align 1, !tbaa !11, !range !13, !noundef !14
  %4258 = trunc i8 %4257 to i1
  br i1 %4258, label %4264, label %4259

4259:                                             ; preds = %4255
  store i32 274, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %434) #9
  br label %4288

4260:                                             ; preds = %4270, %4251
  %4261 = landingpad { ptr, i32 }
          cleanup
  %4262 = extractvalue { ptr, i32 } %4261, 0
  store ptr %4262, ptr %20, align 8
  %4263 = extractvalue { ptr, i32 } %4261, 1
  store i32 %4263, ptr %21, align 4
  br label %4287

4264:                                             ; preds = %4255
  br label %4265

4265:                                             ; preds = %4264
  call void @llvm.lifetime.start.p0(i64 8, ptr %435) #9
  %4266 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %435, ptr noundef nonnull align 8 dereferenceable(8) %4266)
          to label %4267 unwind label %4271

4267:                                             ; preds = %4265
  call void @llvm.lifetime.start.p0(i64 1, ptr %437) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %436, ptr noundef nonnull align 1 dereferenceable(1) %437) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %435, ptr noundef %436)
          to label %4268 unwind label %4275

4268:                                             ; preds = %4267
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %436) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %437) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %435) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %435) #9
  %4269 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4269, ptr noundef @.str.10)
          to label %4270 unwind label %4280

4270:                                             ; preds = %4268
  invoke void @__cxa_throw(ptr %4269, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %4260

4271:                                             ; preds = %4265
  %4272 = landingpad { ptr, i32 }
          cleanup
  %4273 = extractvalue { ptr, i32 } %4272, 0
  store ptr %4273, ptr %20, align 8
  %4274 = extractvalue { ptr, i32 } %4272, 1
  store i32 %4274, ptr %21, align 4
  br label %4279

4275:                                             ; preds = %4267
  %4276 = landingpad { ptr, i32 }
          cleanup
  %4277 = extractvalue { ptr, i32 } %4276, 0
  store ptr %4277, ptr %20, align 8
  %4278 = extractvalue { ptr, i32 } %4276, 1
  store i32 %4278, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %436) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %437) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %435) #9
  br label %4279

4279:                                             ; preds = %4275, %4271
  call void @llvm.lifetime.end.p0(i64 8, ptr %435) #9
  br label %4287

4280:                                             ; preds = %4268
  %4281 = landingpad { ptr, i32 }
          cleanup
  %4282 = extractvalue { ptr, i32 } %4281, 0
  store ptr %4282, ptr %20, align 8
  %4283 = extractvalue { ptr, i32 } %4281, 1
  store i32 %4283, ptr %21, align 4
  call void @__cxa_free_exception(ptr %4269) #9
  br label %4287

4284:                                             ; No predecessors!
  br label %4285

4285:                                             ; preds = %4284
  br label %4286

4286:                                             ; preds = %4285
  store i8 0, ptr %433, align 1, !tbaa !11
  br label %4255, !llvm.loop !122

4287:                                             ; preds = %4280, %4279, %4260
  call void @llvm.lifetime.end.p0(i64 8, ptr %434) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %433) #9
  br label %4338

4288:                                             ; preds = %4259
  br label %4289

4289:                                             ; preds = %4288
  store i8 0, ptr %433, align 1, !tbaa !11
  br label %4247, !llvm.loop !123

4290:                                             ; preds = %4250
  br label %4336

4291:                                             ; preds = %556
  call void @llvm.lifetime.start.p0(i64 1, ptr %438) #9
  store i8 1, ptr %438, align 1, !tbaa !11
  br label %4292

4292:                                             ; preds = %4334, %4291
  %4293 = load i8, ptr %438, align 1, !tbaa !11, !range !13, !noundef !14
  %4294 = trunc i8 %4293 to i1
  br i1 %4294, label %4296, label %4295

4295:                                             ; preds = %4292
  store i32 279, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %438) #9
  br label %4335

4296:                                             ; preds = %4292
  call void @llvm.lifetime.start.p0(i64 8, ptr %439) #9
  %4297 = load ptr, ptr %29, align 8, !tbaa !5
  %4298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %4297)
          to label %4299 unwind label %4305

4299:                                             ; preds = %4296
  store ptr %4298, ptr %439, align 8, !tbaa !5
  br label %4300

4300:                                             ; preds = %4331, %4299
  %4301 = load ptr, ptr %439, align 8, !tbaa !5
  %4302 = load i8, ptr %438, align 1, !tbaa !11, !range !13, !noundef !14
  %4303 = trunc i8 %4302 to i1
  br i1 %4303, label %4309, label %4304

4304:                                             ; preds = %4300
  store i32 282, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %439) #9
  br label %4333

4305:                                             ; preds = %4315, %4296
  %4306 = landingpad { ptr, i32 }
          cleanup
  %4307 = extractvalue { ptr, i32 } %4306, 0
  store ptr %4307, ptr %20, align 8
  %4308 = extractvalue { ptr, i32 } %4306, 1
  store i32 %4308, ptr %21, align 4
  br label %4332

4309:                                             ; preds = %4300
  br label %4310

4310:                                             ; preds = %4309
  call void @llvm.lifetime.start.p0(i64 8, ptr %440) #9
  %4311 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef nonnull align 8 dereferenceable(8) %4311)
          to label %4312 unwind label %4316

4312:                                             ; preds = %4310
  call void @llvm.lifetime.start.p0(i64 1, ptr %442) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_34vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %441, ptr noundef nonnull align 1 dereferenceable(1) %442) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef %441)
          to label %4313 unwind label %4320

4313:                                             ; preds = %4312
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %441) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %442) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %440) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %440) #9
  %4314 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %4314, ptr noundef @.str.10)
          to label %4315 unwind label %4325

4315:                                             ; preds = %4313
  invoke void @__cxa_throw(ptr %4314, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %4359 unwind label %4305

4316:                                             ; preds = %4310
  %4317 = landingpad { ptr, i32 }
          cleanup
  %4318 = extractvalue { ptr, i32 } %4317, 0
  store ptr %4318, ptr %20, align 8
  %4319 = extractvalue { ptr, i32 } %4317, 1
  store i32 %4319, ptr %21, align 4
  br label %4324

4320:                                             ; preds = %4312
  %4321 = landingpad { ptr, i32 }
          cleanup
  %4322 = extractvalue { ptr, i32 } %4321, 0
  store ptr %4322, ptr %20, align 8
  %4323 = extractvalue { ptr, i32 } %4321, 1
  store i32 %4323, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %441) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %442) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %440) #9
  br label %4324

4324:                                             ; preds = %4320, %4316
  call void @llvm.lifetime.end.p0(i64 8, ptr %440) #9
  br label %4332

4325:                                             ; preds = %4313
  %4326 = landingpad { ptr, i32 }
          cleanup
  %4327 = extractvalue { ptr, i32 } %4326, 0
  store ptr %4327, ptr %20, align 8
  %4328 = extractvalue { ptr, i32 } %4326, 1
  store i32 %4328, ptr %21, align 4
  call void @__cxa_free_exception(ptr %4314) #9
  br label %4332

4329:                                             ; No predecessors!
  br label %4330

4330:                                             ; preds = %4329
  br label %4331

4331:                                             ; preds = %4330
  store i8 0, ptr %438, align 1, !tbaa !11
  br label %4300, !llvm.loop !124

4332:                                             ; preds = %4325, %4324, %4305
  call void @llvm.lifetime.end.p0(i64 8, ptr %439) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %438) #9
  br label %4338

4333:                                             ; preds = %4304
  br label %4334

4334:                                             ; preds = %4333
  store i8 0, ptr %438, align 1, !tbaa !11
  br label %4292, !llvm.loop !125

4335:                                             ; preds = %4295
  br label %4336

4336:                                             ; preds = %4335, %4290, %4245, %4196, %4147, %4098, %4047, %3996, %3383, %3332, %3287, %3242, %3197, %2490, %649, %604, %556
  br label %4337

4337:                                             ; preds = %4336
  store i8 0, ptr %28, align 1, !tbaa !11
  br label %545, !llvm.loop !126

4338:                                             ; preds = %4332, %4287, %4242, %4193, %4144, %4095, %4044, %3993, %3380, %3329, %3284, %3239, %3194, %2487, %646, %601, %549
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %4348

4339:                                             ; preds = %548
  br label %4340

4340:                                             ; preds = %4339
  store i8 0, ptr %28, align 1, !tbaa !11
  br label %537, !llvm.loop !127

4341:                                             ; preds = %540
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  store i32 0, ptr %23, align 4
  br label %4342

4342:                                             ; preds = %4341, %491
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  %4343 = load i32, ptr %23, align 4
  switch i32 %4343, label %4359 [
    i32 0, label %4344
    i32 4, label %4345
  ]

4344:                                             ; preds = %4342
  br label %4345

4345:                                             ; preds = %4344, %4342
  %4346 = load i32, ptr %22, align 4, !tbaa !9
  %4347 = add i32 %4346, 1
  store i32 %4347, ptr %22, align 4, !tbaa !9
  br label %451, !llvm.loop !128

4348:                                             ; preds = %4338, %530
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br label %4349

4349:                                             ; preds = %4348, %526
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %4350

4350:                                             ; preds = %4349, %522
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  br label %4351

4351:                                             ; preds = %4350, %481
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #9
  br label %4353

4352:                                             ; preds = %455
  store i32 1, ptr %23, align 4
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %17) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #9
  ret i32 0

4353:                                             ; preds = %4351, %456
  call void @llvm.lifetime.end.p0(i64 40, ptr %17) #9
  br label %4354

4354:                                             ; preds = %4353
  %4355 = load ptr, ptr %20, align 8
  %4356 = load i32, ptr %21, align 4
  %4357 = insertvalue { ptr, i32 } poison, ptr %4355, 0
  %4358 = insertvalue { ptr, i32 } %4357, i32 %4356, 1
  resume { ptr, i32 } %4358

4359:                                             ; preds = %4342, %4315, %4270, %4225, %4176, %4127, %4073, %4022, %3973, %3510, %3460, %3428, %3358, %3312, %3267, %3222, %3026, %2961, %2901, %2850, %2788, %2737, %2691, %2603, %2556, %2367, %2339, %2306, %1934, %1196, %787, %681, %629, %584
  unreachable
}

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, ptr noundef) #0 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40)) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10MirBuilder11get_if_condEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(440)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) #0 align 2

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

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

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

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

declare void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZN4U1283maxEv() #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4S128neERKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZN4S1283minEv() #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZN4S1283maxEv() #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128geEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #0 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #5 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR6LValue8is_DerefEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK3HIR4Enum12num_variantsEv(ptr noundef nonnull align 8 dereferenceable(200)) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator11make_SwitchENS0_11Data_SwitchE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, ptr noundef) #0 align 2

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

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

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

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

declare noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjENK4$_19clIS8_EEDaRKT_"(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue12new_DowncastES0_j(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef, i32 noundef) #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR6LValue15clone_unwrappedEj(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) #0 align 2

declare void @_ZNK10MirBuilder14get_ptr_to_dstERK4SpanRKN3MIR6LValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #2

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = { 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 #5 = { 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 #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!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, !10, i64 32}
!23 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !24, i64 0, !10, i64 32, !10, i64 36}
!24 = !{!"_ZTSN3MIR6LValueE", !25, i64 0, !27, i64 8}
!25 = !{!"_ZTSN3MIR6LValue7StorageE", !26, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!23, !10, i64 36}
!32 = !{i64 0, i64 8, !33, i64 8, i64 8, !33}
!33 = !{!26, !26, i64 0}
!34 = !{!35, !21, i64 16}
!35 = !{!"_ZTSN3MIR8Constant9Data_UintE", !36, i64 0, !21, i64 16}
!36 = !{!"_ZTS4U128", !26, i64 0, !26, i64 8}
!37 = !{!38, !41, i64 48}
!38 = !{!"_ZTSN3MIR6RValue10Data_BinOpE", !39, i64 0, !41, i64 48, !39, i64 56}
!39 = !{!"_ZTSN3MIR5ParamE", !40, i64 0, !7, i64 8}
!40 = !{!"_ZTSN3MIR5Param3TagE", !7, i64 0}
!41 = !{!"_ZTSN3MIR6eBinOpE", !7, i64 0}
!42 = distinct !{!42, !16}
!43 = distinct !{!43, !16}
!44 = !{!45, !12, i64 80}
!45 = !{!"_ZTSN11PatternRule15Data_ValueRangeE", !46, i64 0, !46, i64 40, !12, i64 80}
!46 = !{!"_ZTSN3MIR8ConstantE", !47, i64 0, !7, i64 8}
!47 = !{!"_ZTSN3MIR8Constant3TagE", !7, i64 0}
!48 = !{!41, !41, i64 0}
!49 = distinct !{!49, !16}
!50 = distinct !{!50, !16}
!51 = distinct !{!51, !16}
!52 = distinct !{!52, !16}
!53 = !{!54, !21, i64 16}
!54 = !{!"_ZTSN3MIR8Constant8Data_IntE", !55, i64 0, !21, i64 16}
!55 = !{!"_ZTS4S128", !36, i64 0}
!56 = distinct !{!56, !16}
!57 = distinct !{!57, !16}
!58 = distinct !{!58, !16}
!59 = distinct !{!59, !16}
!60 = distinct !{!60, !16}
!61 = distinct !{!61, !16}
!62 = !{!63, !64, i64 0}
!63 = !{!"_ZTSN3MIR8Constant10Data_FloatE", !64, i64 0, !21, i64 8}
!64 = !{!"double", !7, i64 0}
!65 = !{!63, !21, i64 8}
!66 = distinct !{!66, !16}
!67 = distinct !{!67, !16}
!68 = distinct !{!68, !16}
!69 = distinct !{!69, !16}
!70 = distinct !{!70, !16}
!71 = distinct !{!71, !16}
!72 = distinct !{!72, !16}
!73 = distinct !{!73, !16}
!74 = distinct !{!74, !16}
!75 = distinct !{!75, !16}
!76 = distinct !{!76, !16}
!77 = distinct !{!77, !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 = !{!87, !10, i64 0}
!87 = !{!"_ZTSN11PatternRule12Data_VariantE", !10, i64 0, !88, i64 8}
!88 = !{!"_ZTSSt6vectorI11PatternRuleSaIS0_EE", !89, i64 0}
!89 = !{!"_ZTSSt12_Vector_baseI11PatternRuleSaIS0_EE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE12_Vector_implE", !91, i64 0}
!91 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!92 = distinct !{!92, !16}
!93 = distinct !{!93, !16}
!94 = distinct !{!94, !16}
!95 = distinct !{!95, !16}
!96 = distinct !{!96, !16}
!97 = distinct !{!97, !16}
!98 = distinct !{!98, !16}
!99 = distinct !{!99, !16}
!100 = distinct !{!100, !16}
!101 = distinct !{!101, !16}
!102 = distinct !{!102, !16}
!103 = distinct !{!103, !16}
!104 = distinct !{!104, !16}
!105 = distinct !{!105, !16}
!106 = !{!107, !10, i64 0}
!107 = !{!"_ZTSN11PatternRule10Data_SliceE", !10, i64 0, !88, i64 8}
!108 = !{!109, !10, i64 0}
!109 = !{!"_ZTSN11PatternRule15Data_SplitSliceE", !10, i64 0, !10, i64 4, !88, i64 8, !88, i64 32}
!110 = distinct !{!110, !16}
!111 = distinct !{!111, !16}
!112 = distinct !{!112, !16}
!113 = distinct !{!113, !16}
!114 = distinct !{!114, !16}
!115 = distinct !{!115, !16}
!116 = distinct !{!116, !16}
!117 = distinct !{!117, !16}
!118 = distinct !{!118, !16}
!119 = distinct !{!119, !16}
!120 = distinct !{!120, !16}
!121 = distinct !{!121, !16}
!122 = distinct !{!122, !16}
!123 = distinct !{!123, !16}
!124 = distinct !{!124, !16}
!125 = distinct !{!125, !16}
!126 = distinct !{!126, !16}
!127 = distinct !{!127, !16}
!128 = distinct !{!128, !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.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Terminator" = type { i32, %"union.MIR::Terminator::DataUnion" }
%"union.MIR::Terminator::DataUnion" = type { %"struct.MIR::Terminator::Data_Call" }
%"struct.MIR::Terminator::Data_Call" = type { i32, i32, %"struct.MIR::LValue", %"class.MIR::CallTarget", %"class.std::vector.18" }
%"class.MIR::CallTarget" = type { i32, %"union.MIR::CallTarget::DataUnion" }
%"union.MIR::CallTarget::DataUnion" = type { %"class.HIR::Path" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr.115" }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.23, %class.ThinVector.24, %class.ThinVector.25 }
%class.ThinVector.23 = type { ptr }
%class.ThinVector.24 = type { ptr }
%class.ThinVector.25 = type { ptr }
%"class.std::unique_ptr.115" = type { %"struct.std::__uniq_ptr_data.116" }
%"struct.std::__uniq_ptr_data.116" = type { %"class.std::__uniq_ptr_impl.117" }
%"class.std::__uniq_ptr_impl.117" = type { %"class.std::tuple.118" }
%"class.std::tuple.118" = type { %"struct.std::_Tuple_impl.119" }
%"struct.std::_Tuple_impl.119" = type { %"struct.std::_Head_base.122" }
%"struct.std::_Head_base.122" = type { ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.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.464 = type { ptr, ptr, ptr }
%struct.Span = type { ptr }
%class.anon.465 = type { ptr }
%class.anon.466 = type { i8 }
%class.anon.468 = type { i8 }
%"struct.MIR::Terminator::Data_If" = type { %"struct.MIR::LValue", i32, i32 }
%class.anon.470 = type { i8 }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%class.anon.472 = type { i8 }
%class.anon.474 = type { i8 }
%class.anon.476 = type { i8 }
%class.anon.478 = type { i8 }
%class.anon.480 = type { i8 }
%class.anon.482 = type { ptr }
%class.anon.483 = type { ptr }
%class.anon.484 = type { ptr }
%class.anon.485 = type { ptr }
%class.anon.486 = type { ptr }
%class.anon.487 = type { ptr }
%class.anon.488 = type { ptr }
%class.anon.489 = type { ptr, ptr, ptr }
%class.anon.490 = type { i8 }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.49" = type { i8 }
%"struct.MIR::Terminator::Data_Switch" = type { %"struct.MIR::LValue", %"class.std::vector.47" }
%class.anon.492 = type { i8 }
%class.anon.494 = type { i8 }
%class.anon.496 = type { i8 }
%class.anon.498 = type { i8 }
%class.anon.500 = type { ptr }
%class.anon.501 = type { ptr }
%class.anon.502 = type { i8 }
%"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.anon.504 = type { ptr }
%"struct.MIR::RValue::Data_MakeDst" = type { %"class.MIR::Param", %"class.MIR::Param" }
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%class.anon.505 = type { ptr }
%class.anon.506 = type { ptr }
%class.anon.507 = type { ptr }
%class.anon.508 = type { ptr, ptr }
%class.anon.509 = type { ptr, ptr }
%class.anon.510 = type { ptr, ptr }
%class.anon.511 = type { i8 }
%class.anon.513 = 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" }

@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__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj = external hidden unnamed_addr constant [43 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj = external hidden unnamed_addr constant [192 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [16 x i8], align 1

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_114get_ty_and_valERK4SpanR10MirBuilderRKN3HIR7TypeRefERKN3MIR6LValueERK12field_path_tjRS6_RSA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

declare i32 @__gxx_personality_v0(...)

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

declare noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440)) local_unnamed_addr #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 #2

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

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

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

declare void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440), i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

declare void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, i32 noundef) local_unnamed_addr #0 align 2

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

declare void @_ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb(ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11PatternRule6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress 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: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK11PatternRule(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK11PatternRule10as_VariantEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK11PatternRule8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK11PatternRule13as_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(81) ptr @_ZNK11PatternRule13as_ValueRangeEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) unnamed_addr #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 #4 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

324:                                              ; preds = %8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #9
  %325 = load i32, ptr %10, align 4, !tbaa !9
  %.not1849 = icmp eq i32 %325, 0
  br i1 %.not1849, label %._crit_edge, label %.lr.ph1848

.lr.ph1848:                                       ; preds = %324
  %326 = getelementptr inbounds i8, ptr %282, i64 16
  %327 = getelementptr inbounds i8, ptr %290, i64 48
  %328 = getelementptr inbounds i8, ptr %290, i64 56
  %329 = getelementptr inbounds i8, ptr %293, i64 32
  %330 = getelementptr inbounds i8, ptr %293, i64 36
  %331 = getelementptr inbounds i8, ptr %268, i64 16
  %332 = getelementptr inbounds i8, ptr %276, i64 48
  %333 = getelementptr inbounds i8, ptr %276, i64 56
  %334 = getelementptr inbounds i8, ptr %279, i64 32
  %335 = getelementptr inbounds i8, ptr %279, i64 36
  %336 = getelementptr inbounds i8, ptr %245, i64 16
  %337 = getelementptr inbounds i8, ptr %251, i64 48
  %338 = getelementptr inbounds i8, ptr %261, i64 48
  %339 = getelementptr inbounds i8, ptr %261, i64 56
  %340 = getelementptr inbounds i8, ptr %265, i64 32
  %341 = getelementptr inbounds i8, ptr %265, i64 36
  %342 = getelementptr inbounds i8, ptr %207, i64 8
  %343 = getelementptr inbounds i8, ptr %207, i64 16
  %344 = getelementptr inbounds i8, ptr %214, i64 32
  %345 = getelementptr inbounds i8, ptr %15, i64 8
  %346 = getelementptr inbounds i8, ptr %178, i64 48
  %347 = getelementptr inbounds i8, ptr %178, i64 56
  %348 = getelementptr inbounds i8, ptr %181, i64 32
  %349 = getelementptr inbounds i8, ptr %181, i64 36
  %350 = getelementptr inbounds i8, ptr %148, i64 48
  %351 = getelementptr inbounds i8, ptr %148, i64 56
  %352 = getelementptr inbounds i8, ptr %151, i64 32
  %353 = getelementptr inbounds i8, ptr %151, i64 36
  %354 = getelementptr inbounds i8, ptr %158, i64 48
  %355 = getelementptr inbounds i8, ptr %158, i64 56
  %356 = getelementptr inbounds i8, ptr %161, i64 32
  %357 = getelementptr inbounds i8, ptr %161, i64 36
  %358 = getelementptr inbounds i8, ptr %139, i64 48
  %359 = getelementptr inbounds i8, ptr %139, i64 56
  %360 = getelementptr inbounds i8, ptr %142, i64 32
  %361 = getelementptr inbounds i8, ptr %142, i64 36
  %362 = getelementptr inbounds i8, ptr %112, i64 16
  %363 = getelementptr inbounds i8, ptr %116, i64 48
  %364 = getelementptr inbounds i8, ptr %116, i64 56
  %365 = getelementptr inbounds i8, ptr %119, i64 32
  %366 = getelementptr inbounds i8, ptr %119, i64 36
  %367 = getelementptr inbounds i8, ptr %123, i64 16
  %368 = getelementptr inbounds i8, ptr %127, i64 48
  %369 = getelementptr inbounds i8, ptr %127, i64 56
  %370 = getelementptr inbounds i8, ptr %130, i64 32
  %371 = getelementptr inbounds i8, ptr %130, i64 36
  %372 = getelementptr inbounds i8, ptr %102, i64 16
  %373 = getelementptr inbounds i8, ptr %106, i64 48
  %374 = getelementptr inbounds i8, ptr %106, i64 56
  %375 = getelementptr inbounds i8, ptr %109, i64 32
  %376 = getelementptr inbounds i8, ptr %109, i64 36
  %377 = getelementptr inbounds i8, ptr %77, i64 8
  %378 = getelementptr inbounds i8, ptr %80, i64 16
  %379 = getelementptr inbounds i8, ptr %84, i64 48
  %380 = getelementptr inbounds i8, ptr %84, i64 56
  %381 = getelementptr inbounds i8, ptr %87, i64 32
  %382 = getelementptr inbounds i8, ptr %87, i64 36
  %383 = getelementptr inbounds i8, ptr %88, i64 8
  %384 = getelementptr inbounds i8, ptr %92, i64 16
  %385 = getelementptr inbounds i8, ptr %96, i64 48
  %386 = getelementptr inbounds i8, ptr %96, i64 56
  %387 = getelementptr inbounds i8, ptr %99, i64 32
  %388 = getelementptr inbounds i8, ptr %99, i64 36
  %389 = getelementptr inbounds i8, ptr %69, i64 16
  %390 = getelementptr inbounds i8, ptr %73, i64 48
  %391 = getelementptr inbounds i8, ptr %73, i64 56
  %392 = getelementptr inbounds i8, ptr %76, i64 32
  %393 = getelementptr inbounds i8, ptr %76, i64 36
  %394 = getelementptr inbounds i8, ptr %44, i64 16
  %395 = getelementptr inbounds i8, ptr %48, i64 48
  %396 = getelementptr inbounds i8, ptr %48, i64 56
  %397 = getelementptr inbounds i8, ptr %51, i64 32
  %398 = getelementptr inbounds i8, ptr %51, i64 36
  %399 = getelementptr inbounds i8, ptr %52, i64 8
  %400 = getelementptr inbounds i8, ptr %56, i64 16
  %401 = getelementptr inbounds i8, ptr %60, i64 48
  %402 = getelementptr inbounds i8, ptr %60, i64 56
  %403 = getelementptr inbounds i8, ptr %63, i64 32
  %404 = getelementptr inbounds i8, ptr %63, i64 36
  %405 = getelementptr inbounds i8, ptr %35, i64 16
  %406 = getelementptr inbounds i8, ptr %38, i64 48
  %407 = getelementptr inbounds i8, ptr %38, i64 56
  %408 = getelementptr inbounds i8, ptr %41, i64 32
  %409 = getelementptr inbounds i8, ptr %41, i64 36
  %410 = getelementptr inbounds i8, ptr %29, i64 32
  %411 = getelementptr inbounds i8, ptr %29, i64 36
  %412 = getelementptr inbounds i8, ptr %27, i64 32
  %413 = getelementptr inbounds i8, ptr %27, i64 36
  br label %416

._crit_edge:                                      ; preds = %2054, %324
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #9
  ret i32 0

414:                                              ; preds = %8
  %415 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #9
  br label %2062

416:                                              ; preds = %.lr.ph1848, %2054
  %indvars.iv = phi i64 [ 0, %.lr.ph1848 ], [ %indvars.iv.next, %2054 ]
  %417 = load ptr, ptr %9, align 8, !tbaa !5
  %418 = getelementptr inbounds %class.PatternRule, ptr %417, i64 %indvars.iv
  %419 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %420 unwind label %432

420:                                              ; preds = %416
  br i1 %419, label %421, label %434

421:                                              ; preds = %420
  %422 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %423 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %422, ptr noundef nonnull @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj)
          to label %424 unwind label %432

424:                                              ; preds = %421
  %425 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %423, ptr noundef nonnull @.str.75)
          to label %426 unwind label %432

426:                                              ; preds = %424
  %427 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK11PatternRule(ptr noundef nonnull align 8 dereferenceable(8) %425, ptr noundef nonnull align 8 dereferenceable(120) %418)
          to label %428 unwind label %432

428:                                              ; preds = %426
  %429 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %427, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %430 unwind label %432

430:                                              ; preds = %428
  %431 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %429, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %434 unwind label %432

432:                                              ; preds = %430, %428, %426, %424, %421, %416
  %433 = landingpad { ptr, i32 }
          cleanup
  br label %2061

434:                                              ; preds = %430, %420
  %435 = call noundef zeroext i1 @_ZNK11PatternRule6is_AnyEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  br i1 %435, label %2054, label %436

436:                                              ; preds = %434
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #9
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %437 unwind label %458

437:                                              ; preds = %436
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %438 unwind label %460

438:                                              ; preds = %437
  %439 = getelementptr inbounds i8, ptr %418, i64 96
  invoke void @_ZN12_GLOBAL__N_114get_ty_and_valERK4SpanR10MirBuilderRKN3HIR7TypeRefERKN3MIR6LValueERK12field_path_tjRS6_RSA_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(24) %439, i32 noundef %6, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %440 unwind label %462

440:                                              ; preds = %438
  %441 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %442 unwind label %462

442:                                              ; preds = %440
  br i1 %441, label %443, label %.lr.ph1845

443:                                              ; preds = %442
  %444 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %444, ptr noundef nonnull @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj)
          to label %446 unwind label %462

446:                                              ; preds = %443
  %447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef nonnull @.str.76)
          to label %448 unwind label %462

448:                                              ; preds = %446
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %447, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %450 unwind label %462

450:                                              ; preds = %448
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef nonnull @.str.77)
          to label %452 unwind label %462

452:                                              ; preds = %450
  %453 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8) %451, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %454 unwind label %462

454:                                              ; preds = %452
  %455 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %453, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %456 unwind label %462

456:                                              ; preds = %454
  %457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %455, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.lr.ph1845 unwind label %462

458:                                              ; preds = %436
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %2060

460:                                              ; preds = %437
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %2059

462:                                              ; preds = %456, %454, %452, %450, %448, %446, %443, %440, %438
  %463 = landingpad { ptr, i32 }
          cleanup
  br label %2058

.loopexit1180:                                    ; preds = %.preheader1148.split, %906, %718, %.lr.ph1845, %1108, %927, %1322, %.lr.ph1843, %540, %1075, %1260, %..loopexit1133_crit_edge, %..loopexit1135_crit_edge, %.lr.ph1830, %..loopexit1138_crit_edge, %1813, %1891, %1733
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  br label %2054

.lr.ph1845:                                       ; preds = %456, %442
  %464 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %16)
  %465 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  switch i32 %465, label %.loopexit1180 [
    i32 0, label %466
    i32 1, label %467
    i32 2, label %482
    i32 3, label %.lr.ph1843
    i32 4, label %.lr.ph1830
    i32 5, label %1582
    i32 6, label %1597
    i32 7, label %1612
    i32 8, label %1627
    i32 9, label %.lr.ph
    i32 10, label %1944
    i32 11, label %1960
    i32 12, label %1976
    i32 13, label %1992
    i32 14, label %2008
    i32 15, label %2024
    i32 16, label %2039
  ]

466:                                              ; preds = %.lr.ph1845
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 2459, ptr noundef nonnull @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

467:                                              ; preds = %.lr.ph1845
  %468 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %471 unwind label %475

469:                                              ; preds = %474
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %2058

471:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  store ptr %16, ptr %19, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull %18)
          to label %472 unwind label %477

472:                                              ; preds = %471
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  %473 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %473, ptr noundef nonnull @.str.10)
          to label %474 unwind label %480

474:                                              ; preds = %472
  invoke void @__cxa_throw(ptr nonnull %473, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %469

475:                                              ; preds = %467
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %479

477:                                              ; preds = %471
  %478 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  br label %479

479:                                              ; preds = %477, %475
  %.pn1109 = phi { ptr, i32 } [ %478, %477 ], [ %476, %475 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  br label %2058

480:                                              ; preds = %472
  %481 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %473) #9
  br label %2058

482:                                              ; preds = %.lr.ph1845
  %483 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %486 unwind label %490

484:                                              ; preds = %489
  %485 = landingpad { ptr, i32 }
          cleanup
  br label %2058

486:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull %21)
          to label %487 unwind label %492

487:                                              ; preds = %486
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  %488 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %488, ptr noundef nonnull @.str.10)
          to label %489 unwind label %495

489:                                              ; preds = %487
  invoke void @__cxa_throw(ptr nonnull %488, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %484

490:                                              ; preds = %482
  %491 = landingpad { ptr, i32 }
          cleanup
  br label %494

492:                                              ; preds = %486
  %493 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br label %494

494:                                              ; preds = %492, %490
  %.pn1105 = phi { ptr, i32 } [ %493, %492 ], [ %491, %490 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  br label %2058

495:                                              ; preds = %487
  %496 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %488) #9
  br label %2058

497:                                              ; preds = %.invoke
  %498 = landingpad { ptr, i32 }
          cleanup
  br label %2058

.lr.ph1843:                                       ; preds = %.lr.ph1845
  %499 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  %500 = load i32, ptr %499, align 4, !tbaa !11
  switch i32 %500, label %.loopexit1180 [
    i32 14, label %501
    i32 2, label %.lr.ph1841
    i32 4, label %.lr.ph1841
    i32 6, label %.lr.ph1841
    i32 8, label %.lr.ph1841
    i32 10, label %.lr.ph1841
    i32 0, label %.lr.ph1841
    i32 3, label %.lr.ph1836
    i32 5, label %.lr.ph1836
    i32 7, label %.lr.ph1836
    i32 9, label %.lr.ph1836
    i32 11, label %.lr.ph1836
    i32 1, label %.lr.ph1836
    i32 15, label %907
    i32 12, label %1087
    i32 13, label %1087
    i32 16, label %1272
  ]

501:                                              ; preds = %.lr.ph1843
  %502 = call noundef zeroext i1 @_ZNK11PatternRule7is_BoolEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  br i1 %502, label %514, label %503

503:                                              ; preds = %501
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %504 unwind label %507

504:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_3vEEOT_"(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 nonnull %24)
          to label %505 unwind label %509

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

507:                                              ; preds = %503
  %508 = landingpad { ptr, i32 }
          cleanup
  br label %511

509:                                              ; preds = %504
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  br label %511

511:                                              ; preds = %509, %507
  %.pn1096 = phi { ptr, i32 } [ %510, %509 ], [ %508, %507 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  br label %2058

512:                                              ; preds = %505
  %513 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %506) #9
  br label %2058

514:                                              ; preds = %501
  %515 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK11PatternRule7as_BoolEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %516 = load i8, ptr %515, align 1, !tbaa !13, !range !15, !noundef !16
  %517 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %518 unwind label %524

518:                                              ; preds = %514
  %519 = trunc nuw i8 %516 to i1
  br i1 %519, label %520, label %531

520:                                              ; preds = %518
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %27, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %521 unwind label %524

521:                                              ; preds = %520
  store i32 %517, ptr %412, align 8, !tbaa !17
  %522 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %522, ptr %413, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %26, ptr noundef nonnull %27)
          to label %523 unwind label %526

523:                                              ; preds = %521
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %26)
          to label %540 unwind label %528

524:                                              ; preds = %540, %531, %520, %514
  %525 = landingpad { ptr, i32 }
          cleanup
  br label %2058

526:                                              ; preds = %521
  %527 = landingpad { ptr, i32 }
          cleanup
  br label %530

528:                                              ; preds = %523
  %529 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %26) #9
  br label %530

530:                                              ; preds = %528, %526
  %.pn1100 = phi { ptr, i32 } [ %529, %528 ], [ %527, %526 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #9
  br label %2058

531:                                              ; preds = %518
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %532 unwind label %524

532:                                              ; preds = %531
  %533 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %533, ptr %410, align 8, !tbaa !17
  store i32 %517, ptr %411, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %28, ptr noundef nonnull %29)
          to label %534 unwind label %535

534:                                              ; preds = %532
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %28)
          to label %540 unwind label %537

535:                                              ; preds = %532
  %536 = landingpad { ptr, i32 }
          cleanup
  br label %539

537:                                              ; preds = %534
  %538 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %28) #9
  br label %539

539:                                              ; preds = %537, %535
  %.pn1098 = phi { ptr, i32 } [ %538, %537 ], [ %536, %535 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %29) #9
  br label %2058

540:                                              ; preds = %534, %523
  %.sink3011 = phi ptr [ %26, %523 ], [ %28, %534 ]
  %.sink = phi ptr [ %27, %523 ], [ %29, %534 ]
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %.sink3011) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %.sink) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %517)
          to label %.loopexit1180 unwind label %524

.lr.ph1841:                                       ; preds = %.lr.ph1843, %.lr.ph1843, %.lr.ph1843, %.lr.ph1843, %.lr.ph1843, %.lr.ph1843
  %541 = call noundef i32 @_ZNK11PatternRule3tagEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  switch i32 %541, label %545 [
    i32 0, label %544
    i32 5, label %.lr.ph1839
    i32 6, label %.preheader1142
  ]

542:                                              ; preds = %549
  %543 = landingpad { ptr, i32 }
          cleanup
  br label %2058

544:                                              ; preds = %.lr.ph1841
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 2489, ptr noundef nonnull @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

545:                                              ; preds = %.lr.ph1841
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %546 unwind label %550

546:                                              ; preds = %545
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 1 dereferenceable(1) %32) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull %31)
          to label %547 unwind label %552

547:                                              ; preds = %546
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  %548 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %548, ptr noundef nonnull @.str.10)
          to label %549 unwind label %555

549:                                              ; preds = %547
  invoke void @__cxa_throw(ptr nonnull %548, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %542

550:                                              ; preds = %545
  %551 = landingpad { ptr, i32 }
          cleanup
  br label %554

552:                                              ; preds = %546
  %553 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  br label %554

554:                                              ; preds = %552, %550
  %.pn1092 = phi { ptr, i32 } [ %553, %552 ], [ %551, %550 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  br label %2058

555:                                              ; preds = %547
  %556 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %548) #9
  br label %2058

.lr.ph1839:                                       ; preds = %.lr.ph1841
  %557 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %558 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %559 unwind label %573

559:                                              ; preds = %.lr.ph1839
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %33) #9
  %560 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %557)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %560, i64 16, i1 false), !tbaa.struct !27
  %561 = load i32, ptr %499, align 4, !tbaa !11
  store i32 %561, ptr %405, align 8, !tbaa !29
  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 %562 unwind label %575

562:                                              ; preds = %559
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %33, ptr noundef nonnull %34)
          to label %563 unwind label %577

563:                                              ; preds = %562
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #9
  invoke void @_ZNK10MirBuilder11get_if_condEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %36, ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %564 unwind label %579

564:                                              ; preds = %563
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %565 unwind label %581

565:                                              ; preds = %564
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %38, ptr noundef nonnull %39)
          to label %566 unwind label %583

566:                                              ; preds = %565
  store i32 14, ptr %406, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %407, ptr noundef nonnull align 8 dereferenceable(48) %33) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %37, ptr noundef nonnull %38)
          to label %567 unwind label %585

567:                                              ; preds = %566
  invoke void @_ZN10MirBuilder16push_stmt_assignERK4SpanN3MIR6LValueENS3_6RValueEb(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull %36, ptr noundef nonnull %37, i1 noundef zeroext true)
          to label %568 unwind label %587

568:                                              ; preds = %567
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %37) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %38) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  invoke void @_ZNK10MirBuilder11get_if_condEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %41, ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %569 unwind label %579

569:                                              ; preds = %568
  store i32 %558, ptr %408, align 8, !tbaa !17
  %570 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %570, ptr %409, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %40, ptr noundef nonnull %41)
          to label %571 unwind label %592

571:                                              ; preds = %569
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %40)
          to label %572 unwind label %594

572:                                              ; preds = %571
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %40) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %558)
          to label %..loopexit1133_crit_edge unwind label %579

..loopexit1133_crit_edge:                         ; preds = %572
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %33) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %33) #9
  br label %.loopexit1180

573:                                              ; preds = %.lr.ph1839
  %574 = landingpad { ptr, i32 }
          cleanup
  br label %2058

575:                                              ; preds = %559
  %576 = landingpad { ptr, i32 }
          cleanup
  br label %598

577:                                              ; preds = %562
  %578 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #9
  br label %598

579:                                              ; preds = %572, %568, %563
  %580 = landingpad { ptr, i32 }
          cleanup
  br label %597

581:                                              ; preds = %564
  %582 = landingpad { ptr, i32 }
          cleanup
  br label %591

583:                                              ; preds = %565
  %584 = landingpad { ptr, i32 }
          cleanup
  br label %590

585:                                              ; preds = %566
  %586 = landingpad { ptr, i32 }
          cleanup
  br label %589

587:                                              ; preds = %567
  %588 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %37) #9
  br label %589

589:                                              ; preds = %587, %585
  %.pn1082 = phi { ptr, i32 } [ %588, %587 ], [ %586, %585 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %38) #9
  br label %590

590:                                              ; preds = %589, %583
  %.pn1082.pn = phi { ptr, i32 } [ %.pn1082, %589 ], [ %584, %583 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %591

591:                                              ; preds = %590, %581
  %.pn1082.pn.pn = phi { ptr, i32 } [ %.pn1082.pn, %590 ], [ %582, %581 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %597

592:                                              ; preds = %569
  %593 = landingpad { ptr, i32 }
          cleanup
  br label %596

594:                                              ; preds = %571
  %595 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %40) #9
  br label %596

596:                                              ; preds = %594, %592
  %.pn1086 = phi { ptr, i32 } [ %595, %594 ], [ %593, %592 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #9
  br label %597

597:                                              ; preds = %596, %591, %579
  %.pn1088 = phi { ptr, i32 } [ %580, %579 ], [ %.pn1086, %596 ], [ %.pn1082.pn.pn, %591 ]
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %33) #9
  br label %598

598:                                              ; preds = %597, %577, %575
  %.pn1088.pn = phi { ptr, i32 } [ %.pn1088, %597 ], [ %578, %577 ], [ %576, %575 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %33) #9
  br label %2058

.preheader1142:                                   ; preds = %.lr.ph1841
  %599 = call noundef nonnull align 8 dereferenceable(81) ptr @_ZNK11PatternRule13as_ValueRangeEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %600 = getelementptr inbounds i8, ptr %599, i64 40
  %601 = getelementptr inbounds i8, ptr %599, i64 80
  %602 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %603 unwind label %624

603:                                              ; preds = %.preheader1142
  %604 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %599)
  %605 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %604, i32 noundef 0)
          to label %606 unwind label %624

606:                                              ; preds = %603
  br i1 %605, label %607, label %656

607:                                              ; preds = %606
  %608 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %609 unwind label %626

609:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %42) #9
  %610 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %599)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef nonnull align 8 dereferenceable(16) %610, i64 16, i1 false), !tbaa.struct !27
  %611 = load i32, ptr %499, align 4, !tbaa !11
  store i32 %611, ptr %394, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %43, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %44)
          to label %612 unwind label %628

612:                                              ; preds = %609
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %42, ptr noundef nonnull %43)
          to label %613 unwind label %630

613:                                              ; preds = %612
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %45) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %46, i32 noundef 14)
          to label %614 unwind label %632

614:                                              ; preds = %613
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %615 unwind label %634

615:                                              ; preds = %614
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %48, ptr noundef nonnull %49)
          to label %616 unwind label %636

616:                                              ; preds = %615
  store i32 18, ptr %395, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %396, ptr noundef nonnull align 8 dereferenceable(48) %42) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %47, ptr noundef nonnull %48)
          to label %617 unwind label %638

617:                                              ; preds = %616
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %45, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull %47)
          to label %618 unwind label %640

618:                                              ; preds = %617
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %47) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %48) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %619 unwind label %646

619:                                              ; preds = %618
  %620 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %620, ptr %397, align 8, !tbaa !17
  store i32 %608, ptr %398, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %50, ptr noundef nonnull %51)
          to label %621 unwind label %648

621:                                              ; preds = %619
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %50)
          to label %622 unwind label %650

622:                                              ; preds = %621
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %50) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %51) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %608)
          to label %623 unwind label %646

623:                                              ; preds = %622
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %42) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %42) #9
  br label %656

624:                                              ; preds = %718, %666, %603, %.preheader1142
  %625 = landingpad { ptr, i32 }
          cleanup
  br label %2058

626:                                              ; preds = %607
  %627 = landingpad { ptr, i32 }
          cleanup
  br label %2058

628:                                              ; preds = %609
  %629 = landingpad { ptr, i32 }
          cleanup
  br label %655

630:                                              ; preds = %612
  %631 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %43) #9
  br label %655

632:                                              ; preds = %613
  %633 = landingpad { ptr, i32 }
          cleanup
  br label %645

634:                                              ; preds = %614
  %635 = landingpad { ptr, i32 }
          cleanup
  br label %644

636:                                              ; preds = %615
  %637 = landingpad { ptr, i32 }
          cleanup
  br label %643

638:                                              ; preds = %616
  %639 = landingpad { ptr, i32 }
          cleanup
  br label %642

640:                                              ; preds = %617
  %641 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %47) #9
  br label %642

642:                                              ; preds = %640, %638
  %.pn1058 = phi { ptr, i32 } [ %641, %640 ], [ %639, %638 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %48) #9
  br label %643

643:                                              ; preds = %642, %636
  %.pn1058.pn = phi { ptr, i32 } [ %.pn1058, %642 ], [ %637, %636 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  br label %644

644:                                              ; preds = %643, %634
  %.pn1058.pn.pn = phi { ptr, i32 } [ %.pn1058.pn, %643 ], [ %635, %634 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  br label %645

645:                                              ; preds = %644, %632
  %.pn1058.pn.pn.pn = phi { ptr, i32 } [ %.pn1058.pn.pn, %644 ], [ %633, %632 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  br label %654

646:                                              ; preds = %622, %618
  %647 = landingpad { ptr, i32 }
          cleanup
  br label %653

648:                                              ; preds = %619
  %649 = landingpad { ptr, i32 }
          cleanup
  br label %652

650:                                              ; preds = %621
  %651 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %50) #9
  br label %652

652:                                              ; preds = %650, %648
  %.pn1063 = phi { ptr, i32 } [ %651, %650 ], [ %649, %648 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %51) #9
  br label %653

653:                                              ; preds = %652, %646
  %.pn1065 = phi { ptr, i32 } [ %647, %646 ], [ %.pn1063, %652 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  br label %654

654:                                              ; preds = %653, %645
  %.pn1065.pn = phi { ptr, i32 } [ %.pn1065, %653 ], [ %.pn1058.pn.pn.pn, %645 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %42) #9
  br label %655

655:                                              ; preds = %654, %630, %628
  %.pn1065.pn.pn = phi { ptr, i32 } [ %.pn1065.pn, %654 ], [ %631, %630 ], [ %629, %628 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %42) #9
  br label %2058

656:                                              ; preds = %623, %606
  %657 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %600)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #9
  %658 = invoke { i64, i64 } @_ZN4U1283maxEv()
          to label %659 unwind label %669

659:                                              ; preds = %656
  %660 = extractvalue { i64, i64 } %658, 0
  store i64 %660, ptr %52, align 8
  %661 = extractvalue { i64, i64 } %658, 1
  store i64 %661, ptr %399, align 8
  %662 = call noundef zeroext i1 @_ZNK4U128eqERKS_(ptr noundef nonnull align 8 dereferenceable(16) %657, ptr noundef nonnull align 8 dereferenceable(16) %52)
  br i1 %662, label %663, label %.critedge

663:                                              ; preds = %659
  %664 = load i8, ptr %601, align 8, !tbaa !37, !range !15, !noundef !16
  %665 = trunc nuw i8 %664 to i1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #9
  br i1 %665, label %666, label %673

666:                                              ; preds = %663
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %53, i32 noundef %602)
          to label %667 unwind label %624

667:                                              ; preds = %666
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %53)
          to label %668 unwind label %671

668:                                              ; preds = %667
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %53) #9
  br label %718

669:                                              ; preds = %656
  %670 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #9
  br label %2058

671:                                              ; preds = %667
  %672 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %53) #9
  br label %2058

.critedge:                                        ; preds = %659
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #9
  br label %673

673:                                              ; preds = %.critedge, %663
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %54) #9
  %674 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %600)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %56, ptr noundef nonnull align 8 dereferenceable(16) %674, i64 16, i1 false), !tbaa.struct !27
  %675 = load i32, ptr %499, align 4, !tbaa !11
  store i32 %675, ptr %400, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %55, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %56)
          to label %676 unwind label %690

676:                                              ; preds = %673
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %54, ptr noundef nonnull %55)
          to label %677 unwind label %692

677:                                              ; preds = %676
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #9
  %678 = load i8, ptr %601, align 8, !tbaa !37, !range !15, !noundef !16
  %679 = trunc nuw i8 %678 to i1
  %680 = select i1 %679, i32 16, i32 17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %57) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %58, i32 noundef 14)
          to label %681 unwind label %694

681:                                              ; preds = %677
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %61, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %682 unwind label %696

682:                                              ; preds = %681
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %60, ptr noundef nonnull %61)
          to label %683 unwind label %698

683:                                              ; preds = %682
  store i32 %680, ptr %401, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %402, ptr noundef nonnull align 8 dereferenceable(48) %54) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %59, ptr noundef nonnull %60)
          to label %684 unwind label %700

684:                                              ; preds = %683
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %57, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull %59)
          to label %685 unwind label %702

685:                                              ; preds = %684
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %59) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %60) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %686 unwind label %708

686:                                              ; preds = %685
  %687 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %687, ptr %403, align 8, !tbaa !17
  store i32 %602, ptr %404, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %62, ptr noundef nonnull %63)
          to label %688 unwind label %710

688:                                              ; preds = %686
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %62)
          to label %689 unwind label %712

689:                                              ; preds = %688
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %62) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %63) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %54) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %54) #9
  br label %718

690:                                              ; preds = %673
  %691 = landingpad { ptr, i32 }
          cleanup
  br label %717

692:                                              ; preds = %676
  %693 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #9
  br label %717

694:                                              ; preds = %677
  %695 = landingpad { ptr, i32 }
          cleanup
  br label %707

696:                                              ; preds = %681
  %697 = landingpad { ptr, i32 }
          cleanup
  br label %706

698:                                              ; preds = %682
  %699 = landingpad { ptr, i32 }
          cleanup
  br label %705

700:                                              ; preds = %683
  %701 = landingpad { ptr, i32 }
          cleanup
  br label %704

702:                                              ; preds = %684
  %703 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %59) #9
  br label %704

704:                                              ; preds = %702, %700
  %.pn1070 = phi { ptr, i32 } [ %703, %702 ], [ %701, %700 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %60) #9
  br label %705

705:                                              ; preds = %704, %698
  %.pn1070.pn = phi { ptr, i32 } [ %.pn1070, %704 ], [ %699, %698 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  br label %706

706:                                              ; preds = %705, %696
  %.pn1070.pn.pn = phi { ptr, i32 } [ %.pn1070.pn, %705 ], [ %697, %696 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  br label %707

707:                                              ; preds = %706, %694
  %.pn1070.pn.pn.pn = phi { ptr, i32 } [ %.pn1070.pn.pn, %706 ], [ %695, %694 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  br label %716

708:                                              ; preds = %685
  %709 = landingpad { ptr, i32 }
          cleanup
  br label %715

710:                                              ; preds = %686
  %711 = landingpad { ptr, i32 }
          cleanup
  br label %714

712:                                              ; preds = %688
  %713 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %62) #9
  br label %714

714:                                              ; preds = %712, %710
  %.pn1075 = phi { ptr, i32 } [ %713, %712 ], [ %711, %710 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %63) #9
  br label %715

715:                                              ; preds = %714, %708
  %.pn1075.pn = phi { ptr, i32 } [ %.pn1075, %714 ], [ %709, %708 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  br label %716

716:                                              ; preds = %715, %707
  %.pn1075.pn.pn = phi { ptr, i32 } [ %.pn1075.pn, %715 ], [ %.pn1070.pn.pn.pn, %707 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %57) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %54) #9
  br label %717

717:                                              ; preds = %716, %692, %690
  %.pn1075.pn.pn.pn = phi { ptr, i32 } [ %.pn1075.pn.pn, %716 ], [ %693, %692 ], [ %691, %690 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %54) #9
  br label %2058

718:                                              ; preds = %689, %668
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %602)
          to label %.loopexit1180 unwind label %624, !llvm.loop !41

.lr.ph1836:                                       ; preds = %.lr.ph1843, %.lr.ph1843, %.lr.ph1843, %.lr.ph1843, %.lr.ph1843, %.lr.ph1843
  %719 = call noundef i32 @_ZNK11PatternRule3tagEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  switch i32 %719, label %723 [
    i32 0, label %722
    i32 5, label %.lr.ph1834
    i32 6, label %.preheader1146
  ]

720:                                              ; preds = %727
  %721 = landingpad { ptr, i32 }
          cleanup
  br label %2058

722:                                              ; preds = %.lr.ph1836
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 2534, ptr noundef nonnull @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

723:                                              ; preds = %.lr.ph1836
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %724 unwind label %728

724:                                              ; preds = %723
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 1 dereferenceable(1) %66) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull %65)
          to label %725 unwind label %730

725:                                              ; preds = %724
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #9
  %726 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %726, ptr noundef nonnull @.str.10)
          to label %727 unwind label %733

727:                                              ; preds = %725
  invoke void @__cxa_throw(ptr nonnull %726, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %720

728:                                              ; preds = %723
  %729 = landingpad { ptr, i32 }
          cleanup
  br label %732

730:                                              ; preds = %724
  %731 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  br label %732

732:                                              ; preds = %730, %728
  %.pn1054 = phi { ptr, i32 } [ %731, %730 ], [ %729, %728 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #9
  br label %2058

733:                                              ; preds = %725
  %734 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %726) #9
  br label %2058

.lr.ph1834:                                       ; preds = %.lr.ph1836
  %735 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %736 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %737 unwind label %751

737:                                              ; preds = %.lr.ph1834
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %67) #9
  %738 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %735)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %69, ptr noundef nonnull align 8 dereferenceable(16) %738, i64 16, i1 false), !tbaa.struct !27
  %739 = load i32, ptr %499, align 4, !tbaa !11
  store i32 %739, ptr %389, align 8, !tbaa !43
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %68, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %69)
          to label %740 unwind label %753

740:                                              ; preds = %737
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %67, ptr noundef nonnull %68)
          to label %741 unwind label %755

741:                                              ; preds = %740
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %68) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %71, i32 noundef 14)
          to label %742 unwind label %757

742:                                              ; preds = %741
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %74, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %743 unwind label %759

743:                                              ; preds = %742
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %73, ptr noundef nonnull %74)
          to label %744 unwind label %761

744:                                              ; preds = %743
  store i32 14, ptr %390, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %391, ptr noundef nonnull align 8 dereferenceable(48) %67) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %72, ptr noundef nonnull %73)
          to label %745 unwind label %763

745:                                              ; preds = %744
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %70, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull %72)
          to label %746 unwind label %765

746:                                              ; preds = %745
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %72) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %73) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %747 unwind label %771

747:                                              ; preds = %746
  store i32 %736, ptr %392, align 8, !tbaa !17
  %748 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %748, ptr %393, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %75, ptr noundef nonnull %76)
          to label %749 unwind label %773

749:                                              ; preds = %747
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %75)
          to label %750 unwind label %775

750:                                              ; preds = %749
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %75) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %76) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %736)
          to label %..loopexit1135_crit_edge unwind label %771

..loopexit1135_crit_edge:                         ; preds = %750
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %67) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %67) #9
  br label %.loopexit1180

751:                                              ; preds = %.lr.ph1834
  %752 = landingpad { ptr, i32 }
          cleanup
  br label %2058

753:                                              ; preds = %737
  %754 = landingpad { ptr, i32 }
          cleanup
  br label %780

755:                                              ; preds = %740
  %756 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %68) #9
  br label %780

757:                                              ; preds = %741
  %758 = landingpad { ptr, i32 }
          cleanup
  br label %770

759:                                              ; preds = %742
  %760 = landingpad { ptr, i32 }
          cleanup
  br label %769

761:                                              ; preds = %743
  %762 = landingpad { ptr, i32 }
          cleanup
  br label %768

763:                                              ; preds = %744
  %764 = landingpad { ptr, i32 }
          cleanup
  br label %767

765:                                              ; preds = %745
  %766 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %72) #9
  br label %767

767:                                              ; preds = %765, %763
  %.pn1042 = phi { ptr, i32 } [ %766, %765 ], [ %764, %763 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %73) #9
  br label %768

768:                                              ; preds = %767, %761
  %.pn1042.pn = phi { ptr, i32 } [ %.pn1042, %767 ], [ %762, %761 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  br label %769

769:                                              ; preds = %768, %759
  %.pn1042.pn.pn = phi { ptr, i32 } [ %.pn1042.pn, %768 ], [ %760, %759 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  br label %770

770:                                              ; preds = %769, %757
  %.pn1042.pn.pn.pn = phi { ptr, i32 } [ %.pn1042.pn.pn, %769 ], [ %758, %757 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #9
  br label %779

771:                                              ; preds = %750, %746
  %772 = landingpad { ptr, i32 }
          cleanup
  br label %778

773:                                              ; preds = %747
  %774 = landingpad { ptr, i32 }
          cleanup
  br label %777

775:                                              ; preds = %749
  %776 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %75) #9
  br label %777

777:                                              ; preds = %775, %773
  %.pn1047 = phi { ptr, i32 } [ %776, %775 ], [ %774, %773 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %76) #9
  br label %778

778:                                              ; preds = %777, %771
  %.pn1049 = phi { ptr, i32 } [ %772, %771 ], [ %.pn1047, %777 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  br label %779

779:                                              ; preds = %778, %770
  %.pn1049.pn = phi { ptr, i32 } [ %.pn1049, %778 ], [ %.pn1042.pn.pn.pn, %770 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %67) #9
  br label %780

780:                                              ; preds = %779, %755, %753
  %.pn1049.pn.pn = phi { ptr, i32 } [ %.pn1049.pn, %779 ], [ %756, %755 ], [ %754, %753 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %67) #9
  br label %2058

.preheader1146:                                   ; preds = %.lr.ph1836
  %781 = call noundef nonnull align 8 dereferenceable(81) ptr @_ZNK11PatternRule13as_ValueRangeEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %782 = getelementptr inbounds i8, ptr %781, i64 40
  %783 = getelementptr inbounds i8, ptr %781, i64 80
  %784 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %785 unwind label %810

785:                                              ; preds = %.preheader1146
  %786 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %781)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #9
  %787 = invoke { i64, i64 } @_ZN4S1283minEv()
          to label %788 unwind label %812

788:                                              ; preds = %785
  %789 = extractvalue { i64, i64 } %787, 0
  store i64 %789, ptr %77, align 8
  %790 = extractvalue { i64, i64 } %787, 1
  store i64 %790, ptr %377, align 8
  %791 = invoke noundef zeroext i1 @_ZNK4S128neERKS_(ptr noundef nonnull align 8 dereferenceable(16) %786, ptr noundef nonnull align 8 dereferenceable(16) %77)
          to label %792 unwind label %812

792:                                              ; preds = %788
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #9
  br i1 %791, label %793, label %844

793:                                              ; preds = %792
  %794 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %795 unwind label %814

795:                                              ; preds = %793
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %78) #9
  %796 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %781)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %80, ptr noundef nonnull align 8 dereferenceable(16) %796, i64 16, i1 false), !tbaa.struct !27
  %797 = load i32, ptr %499, align 4, !tbaa !11
  store i32 %797, ptr %378, align 8, !tbaa !43
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %79, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %80)
          to label %798 unwind label %816

798:                                              ; preds = %795
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %78, ptr noundef nonnull %79)
          to label %799 unwind label %818

799:                                              ; preds = %798
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %79) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %81) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %82, i32 noundef 14)
          to label %800 unwind label %820

800:                                              ; preds = %799
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %85, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %801 unwind label %822

801:                                              ; preds = %800
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %84, ptr noundef nonnull %85)
          to label %802 unwind label %824

802:                                              ; preds = %801
  store i32 18, ptr %379, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %380, ptr noundef nonnull align 8 dereferenceable(48) %78) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %83, ptr noundef nonnull %84)
          to label %803 unwind label %826

803:                                              ; preds = %802
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %81, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull %83)
          to label %804 unwind label %828

804:                                              ; preds = %803
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %83) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %84) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(32) %81)
          to label %805 unwind label %834

805:                                              ; preds = %804
  %806 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %806, ptr %381, align 8, !tbaa !17
  store i32 %794, ptr %382, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %86, ptr noundef nonnull %87)
          to label %807 unwind label %836

807:                                              ; preds = %805
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %86)
          to label %808 unwind label %838

808:                                              ; preds = %807
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %86) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %87) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %794)
          to label %809 unwind label %834

809:                                              ; preds = %808
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %78) #9
  br label %844

810:                                              ; preds = %906, %854, %.preheader1146
  %811 = landingpad { ptr, i32 }
          cleanup
  br label %2058

812:                                              ; preds = %788, %785
  %813 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #9
  br label %2058

814:                                              ; preds = %793
  %815 = landingpad { ptr, i32 }
          cleanup
  br label %2058

816:                                              ; preds = %795
  %817 = landingpad { ptr, i32 }
          cleanup
  br label %843

818:                                              ; preds = %798
  %819 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %79) #9
  br label %843

820:                                              ; preds = %799
  %821 = landingpad { ptr, i32 }
          cleanup
  br label %833

822:                                              ; preds = %800
  %823 = landingpad { ptr, i32 }
          cleanup
  br label %832

824:                                              ; preds = %801
  %825 = landingpad { ptr, i32 }
          cleanup
  br label %831

826:                                              ; preds = %802
  %827 = landingpad { ptr, i32 }
          cleanup
  br label %830

828:                                              ; preds = %803
  %829 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %83) #9
  br label %830

830:                                              ; preds = %828, %826
  %.pn1018 = phi { ptr, i32 } [ %829, %828 ], [ %827, %826 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %84) #9
  br label %831

831:                                              ; preds = %830, %824
  %.pn1018.pn = phi { ptr, i32 } [ %.pn1018, %830 ], [ %825, %824 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #9
  br label %832

832:                                              ; preds = %831, %822
  %.pn1018.pn.pn = phi { ptr, i32 } [ %.pn1018.pn, %831 ], [ %823, %822 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #9
  br label %833

833:                                              ; preds = %832, %820
  %.pn1018.pn.pn.pn = phi { ptr, i32 } [ %.pn1018.pn.pn, %832 ], [ %821, %820 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #9
  br label %842

834:                                              ; preds = %808, %804
  %835 = landingpad { ptr, i32 }
          cleanup
  br label %841

836:                                              ; preds = %805
  %837 = landingpad { ptr, i32 }
          cleanup
  br label %840

838:                                              ; preds = %807
  %839 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %86) #9
  br label %840

840:                                              ; preds = %838, %836
  %.pn1023 = phi { ptr, i32 } [ %839, %838 ], [ %837, %836 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %87) #9
  br label %841

841:                                              ; preds = %840, %834
  %.pn1025 = phi { ptr, i32 } [ %835, %834 ], [ %.pn1023, %840 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #9
  br label %842

842:                                              ; preds = %841, %833
  %.pn1025.pn = phi { ptr, i32 } [ %.pn1025, %841 ], [ %.pn1018.pn.pn.pn, %833 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #9
  br label %843

843:                                              ; preds = %842, %818, %816
  %.pn1025.pn.pn = phi { ptr, i32 } [ %.pn1025.pn, %842 ], [ %819, %818 ], [ %817, %816 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %78) #9
  br label %2058

844:                                              ; preds = %809, %792
  %845 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %782)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %88) #9
  %846 = invoke { i64, i64 } @_ZN4S1283maxEv()
          to label %847 unwind label %857

847:                                              ; preds = %844
  %848 = extractvalue { i64, i64 } %846, 0
  store i64 %848, ptr %88, align 8
  %849 = extractvalue { i64, i64 } %846, 1
  store i64 %849, ptr %383, align 8
  %850 = call noundef zeroext i1 @_ZNK4S128eqERKS_(ptr noundef nonnull align 8 dereferenceable(16) %845, ptr noundef nonnull align 8 dereferenceable(16) %88)
  br i1 %850, label %851, label %.critedge2

851:                                              ; preds = %847
  %852 = load i8, ptr %783, align 8, !tbaa !37, !range !15, !noundef !16
  %853 = trunc nuw i8 %852 to i1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #9
  br i1 %853, label %854, label %861

854:                                              ; preds = %851
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %89, i32 noundef %784)
          to label %855 unwind label %810

855:                                              ; preds = %854
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %89)
          to label %856 unwind label %859

856:                                              ; preds = %855
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %89) #9
  br label %906

857:                                              ; preds = %844
  %858 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #9
  br label %2058

859:                                              ; preds = %855
  %860 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %89) #9
  br label %2058

.critedge2:                                       ; preds = %847
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #9
  br label %861

861:                                              ; preds = %.critedge2, %851
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %90) #9
  %862 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40) %782)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %92, ptr noundef nonnull align 8 dereferenceable(16) %862, i64 16, i1 false), !tbaa.struct !27
  %863 = load i32, ptr %499, align 4, !tbaa !11
  store i32 %863, ptr %384, align 8, !tbaa !43
  invoke void @_ZN3MIR8Constant8make_IntENS0_8Data_IntE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %91, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Int") align 8 %92)
          to label %864 unwind label %878

864:                                              ; preds = %861
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %90, ptr noundef nonnull %91)
          to label %865 unwind label %880

865:                                              ; preds = %864
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %91) #9
  %866 = load i8, ptr %783, align 8, !tbaa !37, !range !15, !noundef !16
  %867 = trunc nuw i8 %866 to i1
  %868 = select i1 %867, i32 16, i32 17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %93) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %94, i32 noundef 14)
          to label %869 unwind label %882

869:                                              ; preds = %865
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %97, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %870 unwind label %884

870:                                              ; preds = %869
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %96, ptr noundef nonnull %97)
          to label %871 unwind label %886

871:                                              ; preds = %870
  store i32 %868, ptr %385, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %386, ptr noundef nonnull align 8 dereferenceable(48) %90) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %95, ptr noundef nonnull %96)
          to label %872 unwind label %888

872:                                              ; preds = %871
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %93, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull %95)
          to label %873 unwind label %890

873:                                              ; preds = %872
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %95) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %96) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef nonnull align 8 dereferenceable(32) %93)
          to label %874 unwind label %896

874:                                              ; preds = %873
  %875 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %875, ptr %387, align 8, !tbaa !17
  store i32 %784, ptr %388, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %98, ptr noundef nonnull %99)
          to label %876 unwind label %898

876:                                              ; preds = %874
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %98)
          to label %877 unwind label %900

877:                                              ; preds = %876
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %98) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %99) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %93) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %90) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %90) #9
  br label %906

878:                                              ; preds = %861
  %879 = landingpad { ptr, i32 }
          cleanup
  br label %905

880:                                              ; preds = %864
  %881 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %91) #9
  br label %905

882:                                              ; preds = %865
  %883 = landingpad { ptr, i32 }
          cleanup
  br label %895

884:                                              ; preds = %869
  %885 = landingpad { ptr, i32 }
          cleanup
  br label %894

886:                                              ; preds = %870
  %887 = landingpad { ptr, i32 }
          cleanup
  br label %893

888:                                              ; preds = %871
  %889 = landingpad { ptr, i32 }
          cleanup
  br label %892

890:                                              ; preds = %872
  %891 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %95) #9
  br label %892

892:                                              ; preds = %890, %888
  %.pn1030 = phi { ptr, i32 } [ %891, %890 ], [ %889, %888 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %96) #9
  br label %893

893:                                              ; preds = %892, %886
  %.pn1030.pn = phi { ptr, i32 } [ %.pn1030, %892 ], [ %887, %886 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #9
  br label %894

894:                                              ; preds = %893, %884
  %.pn1030.pn.pn = phi { ptr, i32 } [ %.pn1030.pn, %893 ], [ %885, %884 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #9
  br label %895

895:                                              ; preds = %894, %882
  %.pn1030.pn.pn.pn = phi { ptr, i32 } [ %.pn1030.pn.pn, %894 ], [ %883, %882 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #9
  br label %904

896:                                              ; preds = %873
  %897 = landingpad { ptr, i32 }
          cleanup
  br label %903

898:                                              ; preds = %874
  %899 = landingpad { ptr, i32 }
          cleanup
  br label %902

900:                                              ; preds = %876
  %901 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %98) #9
  br label %902

902:                                              ; preds = %900, %898
  %.pn1035 = phi { ptr, i32 } [ %901, %900 ], [ %899, %898 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %99) #9
  br label %903

903:                                              ; preds = %902, %896
  %.pn1035.pn = phi { ptr, i32 } [ %.pn1035, %902 ], [ %897, %896 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #9
  br label %904

904:                                              ; preds = %903, %895
  %.pn1035.pn.pn = phi { ptr, i32 } [ %.pn1035.pn, %903 ], [ %.pn1030.pn.pn.pn, %895 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %93) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %90) #9
  br label %905

905:                                              ; preds = %904, %880, %878
  %.pn1035.pn.pn.pn = phi { ptr, i32 } [ %.pn1035.pn.pn, %904 ], [ %881, %880 ], [ %879, %878 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %90) #9
  br label %2058

906:                                              ; preds = %877, %856
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %784)
          to label %.loopexit1180 unwind label %810, !llvm.loop !46

907:                                              ; preds = %.lr.ph1843
  %908 = call noundef i32 @_ZNK11PatternRule3tagEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  switch i32 %908, label %1076 [
    i32 0, label %909
    i32 5, label %910
    i32 6, label %958
  ]

909:                                              ; preds = %907
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 2613, ptr noundef nonnull @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

910:                                              ; preds = %907
  %911 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %912 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %913 unwind label %928

913:                                              ; preds = %910
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %100) #9
  %914 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %911)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef nonnull align 8 dereferenceable(16) %914, i64 16, i1 false), !tbaa.struct !27
  %915 = load i32, ptr %499, align 4, !tbaa !11
  store i32 %915, ptr %372, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %101, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %102)
          to label %916 unwind label %930

916:                                              ; preds = %913
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %100, ptr noundef nonnull %101)
          to label %917 unwind label %932

917:                                              ; preds = %916
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %101) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %103) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %104) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %104, i32 noundef 14)
          to label %918 unwind label %934

918:                                              ; preds = %917
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %107, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %919 unwind label %936

919:                                              ; preds = %918
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %106, ptr noundef nonnull %107)
          to label %920 unwind label %938

920:                                              ; preds = %919
  store i32 14, ptr %373, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %374, ptr noundef nonnull align 8 dereferenceable(48) %100) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %105, ptr noundef nonnull %106)
          to label %921 unwind label %940

921:                                              ; preds = %920
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %103, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull %105)
          to label %922 unwind label %942

922:                                              ; preds = %921
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %105) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %106) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %923 unwind label %948

923:                                              ; preds = %922
  store i32 %912, ptr %375, align 8, !tbaa !17
  %924 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %924, ptr %376, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %108, ptr noundef nonnull %109)
          to label %925 unwind label %950

925:                                              ; preds = %923
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %108)
          to label %926 unwind label %952

926:                                              ; preds = %925
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %108) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %109) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %912)
          to label %927 unwind label %948

927:                                              ; preds = %926
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %100) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %100) #9
  br label %.loopexit1180

928:                                              ; preds = %910
  %929 = landingpad { ptr, i32 }
          cleanup
  br label %2058

930:                                              ; preds = %913
  %931 = landingpad { ptr, i32 }
          cleanup
  br label %957

932:                                              ; preds = %916
  %933 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %101) #9
  br label %957

934:                                              ; preds = %917
  %935 = landingpad { ptr, i32 }
          cleanup
  br label %947

936:                                              ; preds = %918
  %937 = landingpad { ptr, i32 }
          cleanup
  br label %946

938:                                              ; preds = %919
  %939 = landingpad { ptr, i32 }
          cleanup
  br label %945

940:                                              ; preds = %920
  %941 = landingpad { ptr, i32 }
          cleanup
  br label %944

942:                                              ; preds = %921
  %943 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %105) #9
  br label %944

944:                                              ; preds = %942, %940
  %.pn1004 = phi { ptr, i32 } [ %943, %942 ], [ %941, %940 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %106) #9
  br label %945

945:                                              ; preds = %944, %938
  %.pn1004.pn = phi { ptr, i32 } [ %.pn1004, %944 ], [ %939, %938 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #9
  br label %946

946:                                              ; preds = %945, %936
  %.pn1004.pn.pn = phi { ptr, i32 } [ %.pn1004.pn, %945 ], [ %937, %936 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #9
  br label %947

947:                                              ; preds = %946, %934
  %.pn1004.pn.pn.pn = phi { ptr, i32 } [ %.pn1004.pn.pn, %946 ], [ %935, %934 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #9
  br label %956

948:                                              ; preds = %926, %922
  %949 = landingpad { ptr, i32 }
          cleanup
  br label %955

950:                                              ; preds = %923
  %951 = landingpad { ptr, i32 }
          cleanup
  br label %954

952:                                              ; preds = %925
  %953 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %108) #9
  br label %954

954:                                              ; preds = %952, %950
  %.pn1009 = phi { ptr, i32 } [ %953, %952 ], [ %951, %950 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %109) #9
  br label %955

955:                                              ; preds = %954, %948
  %.pn1011 = phi { ptr, i32 } [ %949, %948 ], [ %.pn1009, %954 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #9
  br label %956

956:                                              ; preds = %955, %947
  %.pn1011.pn = phi { ptr, i32 } [ %.pn1011, %955 ], [ %.pn1004.pn.pn.pn, %947 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %103) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %100) #9
  br label %957

957:                                              ; preds = %956, %932, %930
  %.pn1011.pn.pn = phi { ptr, i32 } [ %.pn1011.pn, %956 ], [ %933, %932 ], [ %931, %930 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %100) #9
  br label %2058

958:                                              ; preds = %907
  %959 = call noundef nonnull align 8 dereferenceable(81) ptr @_ZNK11PatternRule13as_ValueRangeEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %960 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %961 unwind label %982

961:                                              ; preds = %958
  %962 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %959)
  %963 = invoke noundef zeroext i1 @_ZNK4U128neEj(ptr noundef nonnull align 8 dereferenceable(16) %962, i32 noundef 0)
          to label %964 unwind label %982

964:                                              ; preds = %961
  br i1 %963, label %965, label %1014

965:                                              ; preds = %964
  %966 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %967 unwind label %984

967:                                              ; preds = %965
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %110) #9
  %968 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %959)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %112, ptr noundef nonnull align 8 dereferenceable(16) %968, i64 16, i1 false), !tbaa.struct !27
  %969 = load i32, ptr %499, align 4, !tbaa !11
  store i32 %969, ptr %362, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %111, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %112)
          to label %970 unwind label %986

970:                                              ; preds = %967
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %110, ptr noundef nonnull %111)
          to label %971 unwind label %988

971:                                              ; preds = %970
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %111) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %113) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %114) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %114, i32 noundef 14)
          to label %972 unwind label %990

972:                                              ; preds = %971
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %117, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %973 unwind label %992

973:                                              ; preds = %972
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %116, ptr noundef nonnull %117)
          to label %974 unwind label %994

974:                                              ; preds = %973
  store i32 18, ptr %363, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %364, ptr noundef nonnull align 8 dereferenceable(48) %110) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %115, ptr noundef nonnull %116)
          to label %975 unwind label %996

975:                                              ; preds = %974
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %113, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull %115)
          to label %976 unwind label %998

976:                                              ; preds = %975
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %115) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %116) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull align 8 dereferenceable(32) %113)
          to label %977 unwind label %1004

977:                                              ; preds = %976
  %978 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %978, ptr %365, align 8, !tbaa !17
  store i32 %966, ptr %366, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %118, ptr noundef nonnull %119)
          to label %979 unwind label %1006

979:                                              ; preds = %977
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %118)
          to label %980 unwind label %1008

980:                                              ; preds = %979
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %118) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %119) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %966)
          to label %981 unwind label %1004

981:                                              ; preds = %980
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %110) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %110) #9
  br label %1014

982:                                              ; preds = %1075, %1024, %1014, %961, %958
  %983 = landingpad { ptr, i32 }
          cleanup
  br label %2058

984:                                              ; preds = %965
  %985 = landingpad { ptr, i32 }
          cleanup
  br label %2058

986:                                              ; preds = %967
  %987 = landingpad { ptr, i32 }
          cleanup
  br label %1013

988:                                              ; preds = %970
  %989 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %111) #9
  br label %1013

990:                                              ; preds = %971
  %991 = landingpad { ptr, i32 }
          cleanup
  br label %1003

992:                                              ; preds = %972
  %993 = landingpad { ptr, i32 }
          cleanup
  br label %1002

994:                                              ; preds = %973
  %995 = landingpad { ptr, i32 }
          cleanup
  br label %1001

996:                                              ; preds = %974
  %997 = landingpad { ptr, i32 }
          cleanup
  br label %1000

998:                                              ; preds = %975
  %999 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %115) #9
  br label %1000

1000:                                             ; preds = %998, %996
  %.pn980 = phi { ptr, i32 } [ %999, %998 ], [ %997, %996 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %116) #9
  br label %1001

1001:                                             ; preds = %1000, %994
  %.pn980.pn = phi { ptr, i32 } [ %.pn980, %1000 ], [ %995, %994 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #9
  br label %1002

1002:                                             ; preds = %1001, %992
  %.pn980.pn.pn = phi { ptr, i32 } [ %.pn980.pn, %1001 ], [ %993, %992 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #9
  br label %1003

1003:                                             ; preds = %1002, %990
  %.pn980.pn.pn.pn = phi { ptr, i32 } [ %.pn980.pn.pn, %1002 ], [ %991, %990 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #9
  br label %1012

1004:                                             ; preds = %980, %976
  %1005 = landingpad { ptr, i32 }
          cleanup
  br label %1011

1006:                                             ; preds = %977
  %1007 = landingpad { ptr, i32 }
          cleanup
  br label %1010

1008:                                             ; preds = %979
  %1009 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %118) #9
  br label %1010

1010:                                             ; preds = %1008, %1006
  %.pn985 = phi { ptr, i32 } [ %1009, %1008 ], [ %1007, %1006 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %119) #9
  br label %1011

1011:                                             ; preds = %1010, %1004
  %.pn987 = phi { ptr, i32 } [ %1005, %1004 ], [ %.pn985, %1010 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  br label %1012

1012:                                             ; preds = %1011, %1003
  %.pn987.pn = phi { ptr, i32 } [ %.pn987, %1011 ], [ %.pn980.pn.pn.pn, %1003 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %113) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %110) #9
  br label %1013

1013:                                             ; preds = %1012, %988, %986
  %.pn987.pn.pn = phi { ptr, i32 } [ %.pn987.pn, %1012 ], [ %989, %988 ], [ %987, %986 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %110) #9
  br label %2058

1014:                                             ; preds = %981, %964
  %1015 = getelementptr inbounds i8, ptr %959, i64 40
  %1016 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %1015)
  %1017 = invoke noundef zeroext i1 @_ZNK4U128geEj(ptr noundef nonnull align 8 dereferenceable(16) %1016, i32 noundef 1114111)
          to label %1018 unwind label %982

1018:                                             ; preds = %1014
  br i1 %1017, label %1019, label %1029

1019:                                             ; preds = %1018
  %1020 = getelementptr inbounds i8, ptr %959, i64 80
  %1021 = load i8, ptr %1020, align 8, !tbaa !37, !range !15, !noundef !16
  %1022 = trunc nuw i8 %1021 to i1
  br i1 %1022, label %1024, label %1023

1023:                                             ; preds = %1019
  call void @__assert_fail(ptr noundef nonnull @.str.78, ptr noundef nonnull @.str.17, i32 noundef 2601, ptr noundef nonnull @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

1024:                                             ; preds = %1019
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %120, i32 noundef %960)
          to label %1025 unwind label %982

1025:                                             ; preds = %1024
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %120)
          to label %1026 unwind label %1027

1026:                                             ; preds = %1025
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %120) #9
  br label %1075

1027:                                             ; preds = %1025
  %1028 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %120) #9
  br label %2058

1029:                                             ; preds = %1018
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %121) #9
  %1030 = call noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40) %1015)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %123, ptr noundef nonnull align 8 dereferenceable(16) %1030, i64 16, i1 false), !tbaa.struct !27
  %1031 = load i32, ptr %499, align 4, !tbaa !11
  store i32 %1031, ptr %367, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %122, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %123)
          to label %1032 unwind label %1047

1032:                                             ; preds = %1029
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %121, ptr noundef nonnull %122)
          to label %1033 unwind label %1049

1033:                                             ; preds = %1032
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %122) #9
  %1034 = getelementptr inbounds i8, ptr %959, i64 80
  %1035 = load i8, ptr %1034, align 8, !tbaa !37, !range !15, !noundef !16
  %1036 = trunc nuw i8 %1035 to i1
  %1037 = select i1 %1036, i32 16, i32 17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %124) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %125) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %125, i32 noundef 14)
          to label %1038 unwind label %1051

1038:                                             ; preds = %1033
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %128, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1039 unwind label %1053

1039:                                             ; preds = %1038
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %127, ptr noundef nonnull %128)
          to label %1040 unwind label %1055

1040:                                             ; preds = %1039
  store i32 %1037, ptr %368, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %369, ptr noundef nonnull align 8 dereferenceable(48) %121) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %126, ptr noundef nonnull %127)
          to label %1041 unwind label %1057

1041:                                             ; preds = %1040
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %124, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef nonnull %126)
          to label %1042 unwind label %1059

1042:                                             ; preds = %1041
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %126) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %127) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %125) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef nonnull align 8 dereferenceable(32) %124)
          to label %1043 unwind label %1065

1043:                                             ; preds = %1042
  %1044 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1044, ptr %370, align 8, !tbaa !17
  store i32 %960, ptr %371, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %129, ptr noundef nonnull %130)
          to label %1045 unwind label %1067

1045:                                             ; preds = %1043
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %129)
          to label %1046 unwind label %1069

1046:                                             ; preds = %1045
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %129) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %130) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %121) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %121) #9
  br label %1075

1047:                                             ; preds = %1029
  %1048 = landingpad { ptr, i32 }
          cleanup
  br label %1074

1049:                                             ; preds = %1032
  %1050 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %122) #9
  br label %1074

1051:                                             ; preds = %1033
  %1052 = landingpad { ptr, i32 }
          cleanup
  br label %1064

1053:                                             ; preds = %1038
  %1054 = landingpad { ptr, i32 }
          cleanup
  br label %1063

1055:                                             ; preds = %1039
  %1056 = landingpad { ptr, i32 }
          cleanup
  br label %1062

1057:                                             ; preds = %1040
  %1058 = landingpad { ptr, i32 }
          cleanup
  br label %1061

1059:                                             ; preds = %1041
  %1060 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %126) #9
  br label %1061

1061:                                             ; preds = %1059, %1057
  %.pn992 = phi { ptr, i32 } [ %1060, %1059 ], [ %1058, %1057 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %127) #9
  br label %1062

1062:                                             ; preds = %1061, %1055
  %.pn992.pn = phi { ptr, i32 } [ %.pn992, %1061 ], [ %1056, %1055 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #9
  br label %1063

1063:                                             ; preds = %1062, %1053
  %.pn992.pn.pn = phi { ptr, i32 } [ %.pn992.pn, %1062 ], [ %1054, %1053 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #9
  br label %1064

1064:                                             ; preds = %1063, %1051
  %.pn992.pn.pn.pn = phi { ptr, i32 } [ %.pn992.pn.pn, %1063 ], [ %1052, %1051 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %125) #9
  br label %1073

1065:                                             ; preds = %1042
  %1066 = landingpad { ptr, i32 }
          cleanup
  br label %1072

1067:                                             ; preds = %1043
  %1068 = landingpad { ptr, i32 }
          cleanup
  br label %1071

1069:                                             ; preds = %1045
  %1070 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %129) #9
  br label %1071

1071:                                             ; preds = %1069, %1067
  %.pn997 = phi { ptr, i32 } [ %1070, %1069 ], [ %1068, %1067 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %130) #9
  br label %1072

1072:                                             ; preds = %1071, %1065
  %.pn997.pn = phi { ptr, i32 } [ %.pn997, %1071 ], [ %1066, %1065 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #9
  br label %1073

1073:                                             ; preds = %1072, %1064
  %.pn997.pn.pn = phi { ptr, i32 } [ %.pn997.pn, %1072 ], [ %.pn992.pn.pn.pn, %1064 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %124) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %121) #9
  br label %1074

1074:                                             ; preds = %1073, %1049, %1047
  %.pn997.pn.pn.pn = phi { ptr, i32 } [ %.pn997.pn.pn, %1073 ], [ %1050, %1049 ], [ %1048, %1047 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %121) #9
  br label %2058

1075:                                             ; preds = %1046, %1026
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %960)
          to label %.loopexit1180 unwind label %982

1076:                                             ; preds = %907
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %131) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1077 unwind label %1080

1077:                                             ; preds = %1076
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %133) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %132, ptr noundef nonnull align 1 dereferenceable(1) %133) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull %132)
          to label %1078 unwind label %1082

1078:                                             ; preds = %1077
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %133) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %131) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %131) #9
  %1079 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1079, ptr noundef nonnull @.str.10)
          to label %.invoke unwind label %1085

1080:                                             ; preds = %1076
  %1081 = landingpad { ptr, i32 }
          cleanup
  br label %1084

1082:                                             ; preds = %1077
  %1083 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %132) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %133) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %131) #9
  br label %1084

1084:                                             ; preds = %1082, %1080
  %.pn1016 = phi { ptr, i32 } [ %1083, %1082 ], [ %1081, %1080 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %131) #9
  br label %2058

1085:                                             ; preds = %1078
  %1086 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1079) #9
  br label %2058

1087:                                             ; preds = %.lr.ph1843, %.lr.ph1843
  %1088 = call noundef i32 @_ZNK11PatternRule3tagEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  switch i32 %1088, label %1261 [
    i32 0, label %1089
    i32 5, label %1090
    i32 6, label %1139
  ]

1089:                                             ; preds = %1087
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 2656, ptr noundef nonnull @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

1090:                                             ; preds = %1087
  %1091 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %1092 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %1093 unwind label %1109

1093:                                             ; preds = %1090
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %134) #9
  %1094 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %1091)
  %1095 = load double, ptr %1094, align 8, !tbaa !47
  %1096 = load i32, ptr %499, align 4, !tbaa !11
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %135, double %1095, i32 %1096)
          to label %1097 unwind label %1111

1097:                                             ; preds = %1093
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %134, ptr noundef nonnull %135)
          to label %1098 unwind label %1113

1098:                                             ; preds = %1097
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %135) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %136) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %137) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %137, i32 noundef 14)
          to label %1099 unwind label %1115

1099:                                             ; preds = %1098
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %140, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1100 unwind label %1117

1100:                                             ; preds = %1099
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %139, ptr noundef nonnull %140)
          to label %1101 unwind label %1119

1101:                                             ; preds = %1100
  store i32 14, ptr %358, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %359, ptr noundef nonnull align 8 dereferenceable(48) %134) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %138, ptr noundef nonnull %139)
          to label %1102 unwind label %1121

1102:                                             ; preds = %1101
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %136, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull %138)
          to label %1103 unwind label %1123

1103:                                             ; preds = %1102
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %138) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %139) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %142, ptr noundef nonnull align 8 dereferenceable(32) %136)
          to label %1104 unwind label %1129

1104:                                             ; preds = %1103
  store i32 %1092, ptr %360, align 8, !tbaa !17
  %1105 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1105, ptr %361, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %141, ptr noundef nonnull %142)
          to label %1106 unwind label %1131

1106:                                             ; preds = %1104
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %141)
          to label %1107 unwind label %1133

1107:                                             ; preds = %1106
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %141) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %142) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %1092)
          to label %1108 unwind label %1129

1108:                                             ; preds = %1107
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %136) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %134) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %134) #9
  br label %.loopexit1180

1109:                                             ; preds = %1090
  %1110 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1111:                                             ; preds = %1093
  %1112 = landingpad { ptr, i32 }
          cleanup
  br label %1138

1113:                                             ; preds = %1097
  %1114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %135) #9
  br label %1138

1115:                                             ; preds = %1098
  %1116 = landingpad { ptr, i32 }
          cleanup
  br label %1128

1117:                                             ; preds = %1099
  %1118 = landingpad { ptr, i32 }
          cleanup
  br label %1127

1119:                                             ; preds = %1100
  %1120 = landingpad { ptr, i32 }
          cleanup
  br label %1126

1121:                                             ; preds = %1101
  %1122 = landingpad { ptr, i32 }
          cleanup
  br label %1125

1123:                                             ; preds = %1102
  %1124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %138) #9
  br label %1125

1125:                                             ; preds = %1123, %1121
  %.pn966 = phi { ptr, i32 } [ %1124, %1123 ], [ %1122, %1121 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %139) #9
  br label %1126

1126:                                             ; preds = %1125, %1119
  %.pn966.pn = phi { ptr, i32 } [ %.pn966, %1125 ], [ %1120, %1119 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #9
  br label %1127

1127:                                             ; preds = %1126, %1117
  %.pn966.pn.pn = phi { ptr, i32 } [ %.pn966.pn, %1126 ], [ %1118, %1117 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #9
  br label %1128

1128:                                             ; preds = %1127, %1115
  %.pn966.pn.pn.pn = phi { ptr, i32 } [ %.pn966.pn.pn, %1127 ], [ %1116, %1115 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #9
  br label %1137

1129:                                             ; preds = %1107, %1103
  %1130 = landingpad { ptr, i32 }
          cleanup
  br label %1136

1131:                                             ; preds = %1104
  %1132 = landingpad { ptr, i32 }
          cleanup
  br label %1135

1133:                                             ; preds = %1106
  %1134 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %141) #9
  br label %1135

1135:                                             ; preds = %1133, %1131
  %.pn971 = phi { ptr, i32 } [ %1134, %1133 ], [ %1132, %1131 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %142) #9
  br label %1136

1136:                                             ; preds = %1135, %1129
  %.pn973 = phi { ptr, i32 } [ %1130, %1129 ], [ %.pn971, %1135 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #9
  br label %1137

1137:                                             ; preds = %1136, %1128
  %.pn973.pn = phi { ptr, i32 } [ %.pn973, %1136 ], [ %.pn966.pn.pn.pn, %1128 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %136) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %134) #9
  br label %1138

1138:                                             ; preds = %1137, %1113, %1111
  %.pn973.pn.pn = phi { ptr, i32 } [ %.pn973.pn, %1137 ], [ %1114, %1113 ], [ %1112, %1111 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %134) #9
  br label %2058

1139:                                             ; preds = %1087
  %1140 = call noundef nonnull align 8 dereferenceable(81) ptr @_ZNK11PatternRule13as_ValueRangeEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %1141 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %1142 unwind label %1148

1142:                                             ; preds = %1139
  %1143 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %1140)
  %1144 = load double, ptr %1143, align 8, !tbaa !47
  %1145 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #9
  %1146 = fneg double %1145
  %1147 = fcmp oeq double %1144, %1146
  br i1 %1147, label %1198, label %1150

1148:                                             ; preds = %1260, %1207, %1139
  %1149 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1150:                                             ; preds = %1142
  %1151 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %1152 unwind label %1168

1152:                                             ; preds = %1150
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %143) #9
  %1153 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %1140)
  %1154 = load double, ptr %1153, align 8, !tbaa !47
  %1155 = load i32, ptr %499, align 4, !tbaa !11
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %144, double %1154, i32 %1155)
          to label %1156 unwind label %1170

1156:                                             ; preds = %1152
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %143, ptr noundef nonnull %144)
          to label %1157 unwind label %1172

1157:                                             ; preds = %1156
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %144) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %145) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %146) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %146, i32 noundef 14)
          to label %1158 unwind label %1174

1158:                                             ; preds = %1157
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %149, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1159 unwind label %1176

1159:                                             ; preds = %1158
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %148, ptr noundef nonnull %149)
          to label %1160 unwind label %1178

1160:                                             ; preds = %1159
  store i32 18, ptr %350, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %351, ptr noundef nonnull align 8 dereferenceable(48) %143) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %147, ptr noundef nonnull %148)
          to label %1161 unwind label %1180

1161:                                             ; preds = %1160
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %145, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull %147)
          to label %1162 unwind label %1182

1162:                                             ; preds = %1161
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %147) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %148) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %146) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef nonnull align 8 dereferenceable(32) %145)
          to label %1163 unwind label %1188

1163:                                             ; preds = %1162
  %1164 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1164, ptr %352, align 8, !tbaa !17
  store i32 %1151, ptr %353, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %150, ptr noundef nonnull %151)
          to label %1165 unwind label %1190

1165:                                             ; preds = %1163
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %150)
          to label %1166 unwind label %1192

1166:                                             ; preds = %1165
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %150) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %151) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %1151)
          to label %1167 unwind label %1188

1167:                                             ; preds = %1166
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %145) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %143) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %143) #9
  br label %1198

1168:                                             ; preds = %1150
  %1169 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1170:                                             ; preds = %1152
  %1171 = landingpad { ptr, i32 }
          cleanup
  br label %1197

1172:                                             ; preds = %1156
  %1173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %144) #9
  br label %1197

1174:                                             ; preds = %1157
  %1175 = landingpad { ptr, i32 }
          cleanup
  br label %1187

1176:                                             ; preds = %1158
  %1177 = landingpad { ptr, i32 }
          cleanup
  br label %1186

1178:                                             ; preds = %1159
  %1179 = landingpad { ptr, i32 }
          cleanup
  br label %1185

1180:                                             ; preds = %1160
  %1181 = landingpad { ptr, i32 }
          cleanup
  br label %1184

1182:                                             ; preds = %1161
  %1183 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %147) #9
  br label %1184

1184:                                             ; preds = %1182, %1180
  %.pn942 = phi { ptr, i32 } [ %1183, %1182 ], [ %1181, %1180 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %148) #9
  br label %1185

1185:                                             ; preds = %1184, %1178
  %.pn942.pn = phi { ptr, i32 } [ %.pn942, %1184 ], [ %1179, %1178 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #9
  br label %1186

1186:                                             ; preds = %1185, %1176
  %.pn942.pn.pn = phi { ptr, i32 } [ %.pn942.pn, %1185 ], [ %1177, %1176 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %146) #9
  br label %1187

1187:                                             ; preds = %1186, %1174
  %.pn942.pn.pn.pn = phi { ptr, i32 } [ %.pn942.pn.pn, %1186 ], [ %1175, %1174 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %146) #9
  br label %1196

1188:                                             ; preds = %1166, %1162
  %1189 = landingpad { ptr, i32 }
          cleanup
  br label %1195

1190:                                             ; preds = %1163
  %1191 = landingpad { ptr, i32 }
          cleanup
  br label %1194

1192:                                             ; preds = %1165
  %1193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %150) #9
  br label %1194

1194:                                             ; preds = %1192, %1190
  %.pn947 = phi { ptr, i32 } [ %1193, %1192 ], [ %1191, %1190 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %151) #9
  br label %1195

1195:                                             ; preds = %1194, %1188
  %.pn949 = phi { ptr, i32 } [ %1189, %1188 ], [ %.pn947, %1194 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #9
  br label %1196

1196:                                             ; preds = %1195, %1187
  %.pn949.pn = phi { ptr, i32 } [ %.pn949, %1195 ], [ %.pn942.pn.pn.pn, %1187 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %145) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %143) #9
  br label %1197

1197:                                             ; preds = %1196, %1172, %1170
  %.pn949.pn.pn = phi { ptr, i32 } [ %.pn949.pn, %1196 ], [ %1173, %1172 ], [ %1171, %1170 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %143) #9
  br label %2058

1198:                                             ; preds = %1142, %1167
  %1199 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %1140)
  %1200 = load double, ptr %1199, align 8, !tbaa !47
  %1201 = call noundef double @_ZNSt14numeric_limitsIdE8infinityEv() #9
  %1202 = fcmp oeq double %1200, %1201
  br i1 %1202, label %1203, label %1212

1203:                                             ; preds = %1198
  %1204 = getelementptr inbounds i8, ptr %1140, i64 80
  %1205 = load i8, ptr %1204, align 8, !tbaa !37, !range !15, !noundef !16
  %1206 = trunc nuw i8 %1205 to i1
  br i1 %1206, label %1207, label %1212

1207:                                             ; preds = %1203
  invoke void @_ZN3MIR10Terminator9make_GotoEj(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %152, i32 noundef %1141)
          to label %1208 unwind label %1148

1208:                                             ; preds = %1207
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %152)
          to label %1209 unwind label %1210

1209:                                             ; preds = %1208
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %152) #9
  br label %1260

1210:                                             ; preds = %1208
  %1211 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %152) #9
  br label %2058

1212:                                             ; preds = %1203, %1198
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %153) #9
  %1213 = getelementptr inbounds i8, ptr %1140, i64 40
  %1214 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40) %1213)
  %1215 = load double, ptr %1214, align 8, !tbaa !47
  %1216 = load i32, ptr %499, align 4, !tbaa !11
  invoke void @_ZN3MIR8Constant10make_FloatENS0_10Data_FloatE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %154, double %1215, i32 %1216)
          to label %1217 unwind label %1232

1217:                                             ; preds = %1212
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %153, ptr noundef nonnull %154)
          to label %1218 unwind label %1234

1218:                                             ; preds = %1217
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %154) #9
  %1219 = getelementptr inbounds i8, ptr %1140, i64 80
  %1220 = load i8, ptr %1219, align 8, !tbaa !37, !range !15, !noundef !16
  %1221 = trunc nuw i8 %1220 to i1
  %1222 = select i1 %1221, i32 16, i32 17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %155) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %156) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %156, i32 noundef 14)
          to label %1223 unwind label %1236

1223:                                             ; preds = %1218
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %159, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1224 unwind label %1238

1224:                                             ; preds = %1223
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %158, ptr noundef nonnull %159)
          to label %1225 unwind label %1240

1225:                                             ; preds = %1224
  store i32 %1222, ptr %354, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %355, ptr noundef nonnull align 8 dereferenceable(48) %153) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %157, ptr noundef nonnull %158)
          to label %1226 unwind label %1242

1226:                                             ; preds = %1225
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %155, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull %157)
          to label %1227 unwind label %1244

1227:                                             ; preds = %1226
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %157) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %158) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %156) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %161, ptr noundef nonnull align 8 dereferenceable(32) %155)
          to label %1228 unwind label %1250

1228:                                             ; preds = %1227
  %1229 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1229, ptr %356, align 8, !tbaa !17
  store i32 %1141, ptr %357, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %160, ptr noundef nonnull %161)
          to label %1230 unwind label %1252

1230:                                             ; preds = %1228
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %160)
          to label %1231 unwind label %1254

1231:                                             ; preds = %1230
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %160) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %161) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %155) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %153) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %153) #9
  br label %1260

1232:                                             ; preds = %1212
  %1233 = landingpad { ptr, i32 }
          cleanup
  br label %1259

1234:                                             ; preds = %1217
  %1235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %154) #9
  br label %1259

1236:                                             ; preds = %1218
  %1237 = landingpad { ptr, i32 }
          cleanup
  br label %1249

1238:                                             ; preds = %1223
  %1239 = landingpad { ptr, i32 }
          cleanup
  br label %1248

1240:                                             ; preds = %1224
  %1241 = landingpad { ptr, i32 }
          cleanup
  br label %1247

1242:                                             ; preds = %1225
  %1243 = landingpad { ptr, i32 }
          cleanup
  br label %1246

1244:                                             ; preds = %1226
  %1245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %157) #9
  br label %1246

1246:                                             ; preds = %1244, %1242
  %.pn954 = phi { ptr, i32 } [ %1245, %1244 ], [ %1243, %1242 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %158) #9
  br label %1247

1247:                                             ; preds = %1246, %1240
  %.pn954.pn = phi { ptr, i32 } [ %.pn954, %1246 ], [ %1241, %1240 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #9
  br label %1248

1248:                                             ; preds = %1247, %1238
  %.pn954.pn.pn = phi { ptr, i32 } [ %.pn954.pn, %1247 ], [ %1239, %1238 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #9
  br label %1249

1249:                                             ; preds = %1248, %1236
  %.pn954.pn.pn.pn = phi { ptr, i32 } [ %.pn954.pn.pn, %1248 ], [ %1237, %1236 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %156) #9
  br label %1258

1250:                                             ; preds = %1227
  %1251 = landingpad { ptr, i32 }
          cleanup
  br label %1257

1252:                                             ; preds = %1228
  %1253 = landingpad { ptr, i32 }
          cleanup
  br label %1256

1254:                                             ; preds = %1230
  %1255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %160) #9
  br label %1256

1256:                                             ; preds = %1254, %1252
  %.pn959 = phi { ptr, i32 } [ %1255, %1254 ], [ %1253, %1252 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %161) #9
  br label %1257

1257:                                             ; preds = %1256, %1250
  %.pn959.pn = phi { ptr, i32 } [ %.pn959, %1256 ], [ %1251, %1250 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #9
  br label %1258

1258:                                             ; preds = %1257, %1249
  %.pn959.pn.pn = phi { ptr, i32 } [ %.pn959.pn, %1257 ], [ %.pn954.pn.pn.pn, %1249 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %155) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %153) #9
  br label %1259

1259:                                             ; preds = %1258, %1234, %1232
  %.pn959.pn.pn.pn = phi { ptr, i32 } [ %.pn959.pn.pn, %1258 ], [ %1235, %1234 ], [ %1233, %1232 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %153) #9
  br label %2058

1260:                                             ; preds = %1231, %1209
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %1141)
          to label %.loopexit1180 unwind label %1148

1261:                                             ; preds = %1087
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %162) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1262 unwind label %1265

1262:                                             ; preds = %1261
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %164) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %163, ptr noundef nonnull align 1 dereferenceable(1) %164) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull %163)
          to label %1263 unwind label %1267

1263:                                             ; preds = %1262
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %164) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #9
  %1264 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1264, ptr noundef nonnull @.str.10)
          to label %.invoke unwind label %1270

1265:                                             ; preds = %1261
  %1266 = landingpad { ptr, i32 }
          cleanup
  br label %1269

1267:                                             ; preds = %1262
  %1268 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %163) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %164) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %162) #9
  br label %1269

1269:                                             ; preds = %1267, %1265
  %.pn978 = phi { ptr, i32 } [ %1268, %1267 ], [ %1266, %1265 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %162) #9
  br label %2058

1270:                                             ; preds = %1263
  %1271 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1264) #9
  br label %2058

1272:                                             ; preds = %.lr.ph1843
  %1273 = call noundef zeroext i1 @_ZNK11PatternRule8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  br i1 %1273, label %1274, label %1277

1274:                                             ; preds = %1272
  %1275 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %1276 = call noundef zeroext i1 @_ZNK3MIR8Constant15is_StaticStringEv(ptr noundef nonnull align 8 dereferenceable(40) %1275)
  br i1 %1276, label %1289, label %1277

1277:                                             ; preds = %1274, %1272
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %165) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1278 unwind label %1282

1278:                                             ; preds = %1277
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %167) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull align 1 dereferenceable(1) %167) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull %166)
          to label %1279 unwind label %1284

1279:                                             ; preds = %1278
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %167) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %165) #9
  %1280 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1280, ptr noundef nonnull @.str.10)
          to label %.invoke unwind label %1287

.invoke:                                          ; preds = %1279, %1263, %1078, %505
  %1281 = phi ptr [ %506, %505 ], [ %1079, %1078 ], [ %1264, %1263 ], [ %1280, %1279 ]
  invoke void @__cxa_throw(ptr nonnull %1281, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %.cont unwind label %497

.cont:                                            ; preds = %.invoke
  unreachable

1282:                                             ; preds = %1277
  %1283 = landingpad { ptr, i32 }
          cleanup
  br label %1286

1284:                                             ; preds = %1278
  %1285 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %166) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %167) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %165) #9
  br label %1286

1286:                                             ; preds = %1284, %1282
  %.pn922 = phi { ptr, i32 } [ %1285, %1284 ], [ %1283, %1282 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %165) #9
  br label %2058

1287:                                             ; preds = %1279
  %1288 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1280) #9
  br label %2058

1289:                                             ; preds = %1274
  %1290 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %1291 = invoke noundef zeroext i1 @_ZNK3MIR6LValue8is_DerefEv(ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1292 unwind label %.loopexit1162

1292:                                             ; preds = %1289
  br i1 %1291, label %1305, label %1293

1293:                                             ; preds = %1292
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %168) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1294 unwind label %1298

1294:                                             ; preds = %1293
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %170) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %169, ptr noundef nonnull align 1 dereferenceable(1) %170) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull %169)
          to label %1295 unwind label %1300

1295:                                             ; preds = %1294
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %170) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #9
  %1296 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1296, ptr noundef nonnull @.str.10)
          to label %1297 unwind label %1303

1297:                                             ; preds = %1295
  invoke void @__cxa_throw(ptr nonnull %1296, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %.loopexit.split-lp1163

.loopexit1162:                                    ; preds = %1289
  %lpad.loopexit1164 = landingpad { ptr, i32 }
          cleanup
  br label %2058

.loopexit.split-lp1163:                           ; preds = %1297
  %lpad.loopexit.split-lp1165 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1298:                                             ; preds = %1293
  %1299 = landingpad { ptr, i32 }
          cleanup
  br label %1302

1300:                                             ; preds = %1294
  %1301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %169) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %170) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %168) #9
  br label %1302

1302:                                             ; preds = %1300, %1298
  %.pn924 = phi { ptr, i32 } [ %1301, %1300 ], [ %1299, %1298 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #9
  br label %2058

1303:                                             ; preds = %1295
  %1304 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1296) #9
  br label %2058

1305:                                             ; preds = %1292
  call void @_ZNSt6vectorIN3MIR6LValue7WrapperESaIS2_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %345) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %171) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %171, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1306 unwind label %1323

1306:                                             ; preds = %1305
  %1307 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %1308 unwind label %1325

1308:                                             ; preds = %1306
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %172) #9
  %1309 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR8Constant15as_StaticStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(40) %1290)
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull align 8 dereferenceable(32) %1309)
          to label %1310 unwind label %1327

1310:                                             ; preds = %1308
  invoke void @_ZN3MIR8ConstantC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %173, ptr noundef nonnull %174)
          to label %1311 unwind label %1329

1311:                                             ; preds = %1310
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %172, ptr noundef nonnull %173)
          to label %1312 unwind label %1331

1312:                                             ; preds = %1311
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %173) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %175) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %176) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %176, i32 noundef 14)
          to label %1313 unwind label %1334

1313:                                             ; preds = %1312
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull align 8 dereferenceable(32) %171)
          to label %1314 unwind label %1336

1314:                                             ; preds = %1313
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %178, ptr noundef nonnull %179)
          to label %1315 unwind label %1338

1315:                                             ; preds = %1314
  store i32 14, ptr %346, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %347, ptr noundef nonnull align 8 dereferenceable(48) %172) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %177, ptr noundef nonnull %178)
          to label %1316 unwind label %1340

1316:                                             ; preds = %1315
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %175, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %176, ptr noundef nonnull %177)
          to label %1317 unwind label %1342

1317:                                             ; preds = %1316
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %177) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %178) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %176) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %181, ptr noundef nonnull align 8 dereferenceable(32) %175)
          to label %1318 unwind label %1348

1318:                                             ; preds = %1317
  store i32 %1307, ptr %348, align 8, !tbaa !17
  %1319 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1319, ptr %349, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %180, ptr noundef nonnull %181)
          to label %1320 unwind label %1350

1320:                                             ; preds = %1318
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %180)
          to label %1321 unwind label %1352

1321:                                             ; preds = %1320
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %180) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %181) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %1307)
          to label %1322 unwind label %1348

1322:                                             ; preds = %1321
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %175) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %172) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %172) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %171) #9
  br label %.loopexit1180

1323:                                             ; preds = %1305
  %1324 = landingpad { ptr, i32 }
          cleanup
  br label %1359

1325:                                             ; preds = %1306
  %1326 = landingpad { ptr, i32 }
          cleanup
  br label %1358

1327:                                             ; preds = %1308
  %1328 = landingpad { ptr, i32 }
          cleanup
  br label %1357

1329:                                             ; preds = %1310
  %1330 = landingpad { ptr, i32 }
          cleanup
  br label %1333

1331:                                             ; preds = %1311
  %1332 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %173) #9
  br label %1333

1333:                                             ; preds = %1331, %1329
  %.pn926 = phi { ptr, i32 } [ %1332, %1331 ], [ %1330, %1329 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %174) #9
  br label %1357

1334:                                             ; preds = %1312
  %1335 = landingpad { ptr, i32 }
          cleanup
  br label %1347

1336:                                             ; preds = %1313
  %1337 = landingpad { ptr, i32 }
          cleanup
  br label %1346

1338:                                             ; preds = %1314
  %1339 = landingpad { ptr, i32 }
          cleanup
  br label %1345

1340:                                             ; preds = %1315
  %1341 = landingpad { ptr, i32 }
          cleanup
  br label %1344

1342:                                             ; preds = %1316
  %1343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %177) #9
  br label %1344

1344:                                             ; preds = %1342, %1340
  %.pn928 = phi { ptr, i32 } [ %1343, %1342 ], [ %1341, %1340 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %178) #9
  br label %1345

1345:                                             ; preds = %1344, %1338
  %.pn928.pn = phi { ptr, i32 } [ %.pn928, %1344 ], [ %1339, %1338 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #9
  br label %1346

1346:                                             ; preds = %1345, %1336
  %.pn928.pn.pn = phi { ptr, i32 } [ %.pn928.pn, %1345 ], [ %1337, %1336 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #9
  br label %1347

1347:                                             ; preds = %1346, %1334
  %.pn928.pn.pn.pn = phi { ptr, i32 } [ %.pn928.pn.pn, %1346 ], [ %1335, %1334 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %176) #9
  br label %1356

1348:                                             ; preds = %1321, %1317
  %1349 = landingpad { ptr, i32 }
          cleanup
  br label %1355

1350:                                             ; preds = %1318
  %1351 = landingpad { ptr, i32 }
          cleanup
  br label %1354

1352:                                             ; preds = %1320
  %1353 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %180) #9
  br label %1354

1354:                                             ; preds = %1352, %1350
  %.pn933 = phi { ptr, i32 } [ %1353, %1352 ], [ %1351, %1350 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %181) #9
  br label %1355

1355:                                             ; preds = %1354, %1348
  %.pn935 = phi { ptr, i32 } [ %1349, %1348 ], [ %.pn933, %1354 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %175) #9
  br label %1356

1356:                                             ; preds = %1355, %1347
  %.pn935.pn = phi { ptr, i32 } [ %.pn935, %1355 ], [ %.pn928.pn.pn.pn, %1347 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %175) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %172) #9
  br label %1357

1357:                                             ; preds = %1356, %1333, %1327
  %.pn935.pn.pn = phi { ptr, i32 } [ %.pn935.pn, %1356 ], [ %.pn926, %1333 ], [ %1328, %1327 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %172) #9
  br label %1358

1358:                                             ; preds = %1357, %1325
  %.pn935.pn.pn.pn = phi { ptr, i32 } [ %.pn935.pn.pn, %1357 ], [ %1326, %1325 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %171) #9
  br label %1359

1359:                                             ; preds = %1358, %1323
  %.pn935.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn935.pn.pn.pn, %1358 ], [ %1324, %1323 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %171) #9
  br label %2058

.lr.ph1830:                                       ; preds = %.lr.ph1845
  %1360 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  %1361 = getelementptr inbounds i8, ptr %1360, i64 88
  %1362 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %1361)
  switch i32 %1362, label %.loopexit1180 [
    i32 0, label %1367
    i32 1, label %1368
    i32 2, label %1383
    i32 4, label %.preheader1148.split
    i32 5, label %1442
    i32 3, label %1458
    i32 6, label %.lr.ph1755
  ]

.preheader1148.split:                             ; preds = %.lr.ph1830
  %1363 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1361)
  %1364 = load ptr, ptr %1363, align 8, !tbaa !5
  %1365 = getelementptr inbounds i8, ptr %1364, i64 104
  %1366 = call noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %1365)
  switch i32 %1366, label %.loopexit1180 [
    i32 0, label %.split1759
    i32 1, label %.split1761
    i32 2, label %.split1763
    i32 3, label %.split1766
  ], !llvm.loop !50

1367:                                             ; preds = %.lr.ph1830
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 2675, ptr noundef nonnull @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

1368:                                             ; preds = %.lr.ph1830
  %1369 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %1361)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %182) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1372 unwind label %1376

1370:                                             ; preds = %1375
  %1371 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1372:                                             ; preds = %1368
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %184) #9
  store ptr %1360, ptr %184, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_10vEEOT_"(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 nonnull %183)
          to label %1373 unwind label %1378

1373:                                             ; preds = %1372
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %184) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %182) #9
  %1374 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1374, ptr noundef nonnull @.str.10)
          to label %1375 unwind label %1381

1375:                                             ; preds = %1373
  invoke void @__cxa_throw(ptr nonnull %1374, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1370

1376:                                             ; preds = %1368
  %1377 = landingpad { ptr, i32 }
          cleanup
  br label %1380

1378:                                             ; preds = %1372
  %1379 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %183) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %184) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %182) #9
  br label %1380

1380:                                             ; preds = %1378, %1376
  %.pn917 = phi { ptr, i32 } [ %1379, %1378 ], [ %1377, %1376 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %182) #9
  br label %2058

1381:                                             ; preds = %1373
  %1382 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1374) #9
  br label %2058

1383:                                             ; preds = %.lr.ph1830
  %1384 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %1361)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %185) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1387 unwind label %1391

1385:                                             ; preds = %1390
  %1386 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1387:                                             ; preds = %1383
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %187) #9
  store ptr %16, ptr %187, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %186, ptr noundef nonnull align 8 dereferenceable(8) %187) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull %186)
          to label %1388 unwind label %1393

1388:                                             ; preds = %1387
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %185) #9
  %1389 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1389, ptr noundef nonnull @.str.10)
          to label %1390 unwind label %1396

1390:                                             ; preds = %1388
  invoke void @__cxa_throw(ptr nonnull %1389, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1385

1391:                                             ; preds = %1383
  %1392 = landingpad { ptr, i32 }
          cleanup
  br label %1395

1393:                                             ; preds = %1387
  %1394 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %186) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %187) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #9
  br label %1395

1395:                                             ; preds = %1393, %1391
  %.pn913 = phi { ptr, i32 } [ %1394, %1393 ], [ %1392, %1391 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %185) #9
  br label %2058

1396:                                             ; preds = %1388
  %1397 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1389) #9
  br label %2058

.split1759:                                       ; preds = %.preheader1148.split
  call void @__assert_fail(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str.17, i32 noundef 2684, ptr noundef nonnull @__PRETTY_FUNCTION__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj) #10
  unreachable

.split1761:                                       ; preds = %.preheader1148.split
  %1398 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %1365)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %188) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1401 unwind label %1405

1399:                                             ; preds = %1404
  %1400 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1401:                                             ; preds = %.split1761
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %190) #9
  store ptr %16, ptr %190, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %189, ptr noundef nonnull align 8 dereferenceable(8) %190) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull %189)
          to label %1402 unwind label %1407

1402:                                             ; preds = %1401
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %189) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %190) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %188) #9
  %1403 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1403, ptr noundef nonnull @.str.10)
          to label %1404 unwind label %1410

1404:                                             ; preds = %1402
  invoke void @__cxa_throw(ptr nonnull %1403, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1399

1405:                                             ; preds = %.split1761
  %1406 = landingpad { ptr, i32 }
          cleanup
  br label %1409

1407:                                             ; preds = %1401
  %1408 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %189) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %190) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #9
  br label %1409

1409:                                             ; preds = %1407, %1405
  %.pn908 = phi { ptr, i32 } [ %1408, %1407 ], [ %1406, %1405 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %188) #9
  br label %2058

1410:                                             ; preds = %1402
  %1411 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1403) #9
  br label %2058

.split1763:                                       ; preds = %.preheader1148.split
  %1412 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %1365)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %191) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %191, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %192) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1413 unwind label %1417

1413:                                             ; preds = %.split1763
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %194) #9
  store ptr %191, ptr %194, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %193, ptr noundef nonnull align 8 dereferenceable(8) %194) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull %193)
          to label %1414 unwind label %1419

1414:                                             ; preds = %1413
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %192) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %192) #9
  %1415 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1415, ptr noundef nonnull @.str.5)
          to label %1416 unwind label %1422

1416:                                             ; preds = %1414
  invoke void @__cxa_throw(ptr nonnull %1415, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1424

1417:                                             ; preds = %.split1763
  %1418 = landingpad { ptr, i32 }
          cleanup
  br label %1421

1419:                                             ; preds = %1413
  %1420 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %193) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %194) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %192) #9
  br label %1421

1421:                                             ; preds = %1419, %1417
  %.pn904 = phi { ptr, i32 } [ %1420, %1419 ], [ %1418, %1417 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %192) #9
  br label %1426

1422:                                             ; preds = %1414
  %1423 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1415) #9
  br label %1426

1424:                                             ; preds = %1416
  %1425 = landingpad { ptr, i32 }
          cleanup
  br label %1426

1426:                                             ; preds = %1424, %1422, %1421
  %.pn906 = phi { ptr, i32 } [ %1425, %1424 ], [ %1423, %1422 ], [ %.pn904, %1421 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %191) #9
  br label %2058

.split1766:                                       ; preds = %.preheader1148.split
  %1427 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %1365)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %195) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %195, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %196) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %196, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1428 unwind label %1432

1428:                                             ; preds = %.split1766
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %198) #9
  store ptr %195, ptr %198, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %197, ptr noundef nonnull align 8 dereferenceable(8) %198) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %196, ptr noundef nonnull %197)
          to label %1429 unwind label %1434

1429:                                             ; preds = %1428
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %198) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %196) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %196) #9
  %1430 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1430, ptr noundef nonnull @.str.5)
          to label %1431 unwind label %1437

1431:                                             ; preds = %1429
  invoke void @__cxa_throw(ptr nonnull %1430, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1439

1432:                                             ; preds = %.split1766
  %1433 = landingpad { ptr, i32 }
          cleanup
  br label %1436

1434:                                             ; preds = %1428
  %1435 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %197) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %198) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %196) #9
  br label %1436

1436:                                             ; preds = %1434, %1432
  %.pn900 = phi { ptr, i32 } [ %1435, %1434 ], [ %1433, %1432 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %196) #9
  br label %1441

1437:                                             ; preds = %1429
  %1438 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1430) #9
  br label %1441

1439:                                             ; preds = %1431
  %1440 = landingpad { ptr, i32 }
          cleanup
  br label %1441

1441:                                             ; preds = %1439, %1437, %1436
  %.pn902 = phi { ptr, i32 } [ %1440, %1439 ], [ %1438, %1437 ], [ %.pn900, %1436 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %195) #9
  br label %2058

1442:                                             ; preds = %.lr.ph1830
  %1443 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %1361)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %199) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %199, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %200) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1444 unwind label %1448

1444:                                             ; preds = %1442
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %202) #9
  store ptr %199, ptr %202, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %201, ptr noundef nonnull align 8 dereferenceable(8) %202) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef nonnull %201)
          to label %1445 unwind label %1450

1445:                                             ; preds = %1444
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %202) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %200) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %200) #9
  %1446 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1446, ptr noundef nonnull @.str.5)
          to label %1447 unwind label %1453

1447:                                             ; preds = %1445
  invoke void @__cxa_throw(ptr nonnull %1446, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1455

1448:                                             ; preds = %1442
  %1449 = landingpad { ptr, i32 }
          cleanup
  br label %1452

1450:                                             ; preds = %1444
  %1451 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %201) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %202) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %200) #9
  br label %1452

1452:                                             ; preds = %1450, %1448
  %.pn896 = phi { ptr, i32 } [ %1451, %1450 ], [ %1449, %1448 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %200) #9
  br label %1457

1453:                                             ; preds = %1445
  %1454 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1446) #9
  br label %1457

1455:                                             ; preds = %1447
  %1456 = landingpad { ptr, i32 }
          cleanup
  br label %1457

1457:                                             ; preds = %1455, %1453, %1452
  %.pn898 = phi { ptr, i32 } [ %1456, %1455 ], [ %1454, %1453 ], [ %.pn896, %1452 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %199) #9
  br label %2058

1458:                                             ; preds = %.lr.ph1830
  %1459 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %1361)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %203) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %203, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %204) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1460 unwind label %1464

1460:                                             ; preds = %1458
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %206) #9
  store ptr %203, ptr %206, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %205, ptr noundef nonnull align 8 dereferenceable(8) %206) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull %205)
          to label %1461 unwind label %1466

1461:                                             ; preds = %1460
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %206) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #9
  %1462 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1462, ptr noundef nonnull @.str.5)
          to label %1463 unwind label %1469

1463:                                             ; preds = %1461
  invoke void @__cxa_throw(ptr nonnull %1462, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1471

1464:                                             ; preds = %1458
  %1465 = landingpad { ptr, i32 }
          cleanup
  br label %1468

1466:                                             ; preds = %1460
  %1467 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %206) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %204) #9
  br label %1468

1468:                                             ; preds = %1466, %1464
  %.pn892 = phi { ptr, i32 } [ %1467, %1466 ], [ %1465, %1464 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %204) #9
  br label %1473

1469:                                             ; preds = %1461
  %1470 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1462) #9
  br label %1473

1471:                                             ; preds = %1463
  %1472 = landingpad { ptr, i32 }
          cleanup
  br label %1473

1473:                                             ; preds = %1471, %1469, %1468
  %.pn894 = phi { ptr, i32 } [ %1472, %1471 ], [ %1470, %1469 ], [ %.pn892, %1468 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %203) #9
  br label %2058

.lr.ph1755:                                       ; preds = %.lr.ph1830
  %1474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %1361)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %207) #9
  store ptr %1360, ptr %207, align 8, !tbaa !5
  store ptr %1, ptr %342, align 8, !tbaa !5
  store ptr %0, ptr %343, align 8, !tbaa !5
  %1475 = call noundef zeroext i1 @_ZNK11PatternRule10is_VariantEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  br i1 %1475, label %1490, label %1476

1476:                                             ; preds = %.lr.ph1755
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %208) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1477 unwind label %1483

1477:                                             ; preds = %1476
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %210) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_17vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %209, ptr noundef nonnull align 1 dereferenceable(1) %210) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull %209)
          to label %1478 unwind label %1485

1478:                                             ; preds = %1477
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %209) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %210) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %208) #9
  %1479 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1479, ptr noundef nonnull @.str.10)
          to label %1480 unwind label %1488

1480:                                             ; preds = %1478
  invoke void @__cxa_throw(ptr nonnull %1479, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1481

1481:                                             ; preds = %1480
  %1482 = landingpad { ptr, i32 }
          cleanup
  br label %1581

1483:                                             ; preds = %1476
  %1484 = landingpad { ptr, i32 }
          cleanup
  br label %1487

1485:                                             ; preds = %1477
  %1486 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %209) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %210) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %208) #9
  br label %1487

1487:                                             ; preds = %1485, %1483
  %.pn875 = phi { ptr, i32 } [ %1486, %1485 ], [ %1484, %1483 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %208) #9
  br label %1581

1488:                                             ; preds = %1478
  %1489 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1479) #9
  br label %1581

1490:                                             ; preds = %.lr.ph1755
  %1491 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK11PatternRule10as_VariantEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %1492 = load i32, ptr %1491, align 8, !tbaa !51
  %1493 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %1494 unwind label %1516

1494:                                             ; preds = %1490
  %1495 = load ptr, ptr %1474, align 8, !tbaa !5
  %1496 = invoke noundef i64 @_ZNK3HIR4Enum12num_variantsEv(ptr noundef nonnull align 8 dereferenceable(200) %1495)
          to label %1497 unwind label %1518

1497:                                             ; preds = %1494
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %211) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %212) #9
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %211, i64 noundef %1496, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 1 dereferenceable(1) %212)
          to label %1498 unwind label %1520

1498:                                             ; preds = %1497
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %212) #9
  %1499 = zext i32 %1492 to i64
  %1500 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %211, i64 noundef %1499) #9
  store i32 %1493, ptr %1500, align 4, !tbaa !9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %214, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1501 unwind label %.loopexit1139

1501:                                             ; preds = %1498
  call void @_ZNSt6vectorIjSaIjEEC2EOS1_(ptr noundef nonnull align 8 dereferenceable(24) %344, ptr noundef nonnull align 8 dereferenceable(24) %211) #9
  invoke void @_ZN3MIR10Terminator11make_SwitchENS0_11Data_SwitchE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %213, ptr noundef nonnull %214)
          to label %1502 unwind label %1522

1502:                                             ; preds = %1501
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %213)
          to label %1503 unwind label %1524

1503:                                             ; preds = %1502
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %213) #9
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %214) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %1493)
          to label %1504 unwind label %.loopexit1139

1504:                                             ; preds = %1503
  %1505 = getelementptr inbounds i8, ptr %1491, i64 8
  %1506 = call noundef i64 @_ZNKSt6vectorI11PatternRuleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1505) #9
  %.not = icmp eq i64 %1506, 0
  br i1 %.not, label %..loopexit1138_crit_edge, label %1507

1507:                                             ; preds = %1504
  %1508 = load ptr, ptr %1474, align 8, !tbaa !5
  %1509 = getelementptr inbounds i8, ptr %1508, i64 104
  %1510 = call noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %1509)
  br i1 %1510, label %1534, label %1511

1511:                                             ; preds = %1507
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %215) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1512 unwind label %1527

1512:                                             ; preds = %1511
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %217) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_18vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %216, ptr noundef nonnull align 1 dereferenceable(1) %217) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull %216)
          to label %1513 unwind label %1529

1513:                                             ; preds = %1512
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %217) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %215) #9
  %1514 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1514, ptr noundef nonnull @.str.10)
          to label %1515 unwind label %1532

1515:                                             ; preds = %1513
  invoke void @__cxa_throw(ptr nonnull %1514, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %.loopexit.split-lp

1516:                                             ; preds = %1490
  %1517 = landingpad { ptr, i32 }
          cleanup
  br label %1581

1518:                                             ; preds = %1494
  %1519 = landingpad { ptr, i32 }
          cleanup
  br label %1581

1520:                                             ; preds = %1497
  %1521 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %212) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %212) #9
  br label %1580

.loopexit1139:                                    ; preds = %1498, %1503
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %1579

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

1522:                                             ; preds = %1501
  %1523 = landingpad { ptr, i32 }
          cleanup
  br label %1526

1524:                                             ; preds = %1502
  %1525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %213) #9
  br label %1526

1526:                                             ; preds = %1524, %1522
  %.pn877 = phi { ptr, i32 } [ %1525, %1524 ], [ %1523, %1522 ]
  call void @_ZN3MIR10Terminator11Data_SwitchD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %214) #9
  br label %1579

1527:                                             ; preds = %1511
  %1528 = landingpad { ptr, i32 }
          cleanup
  br label %1531

1529:                                             ; preds = %1512
  %1530 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %217) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #9
  br label %1531

1531:                                             ; preds = %1529, %1527
  %.pn879 = phi { ptr, i32 } [ %1530, %1529 ], [ %1528, %1527 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %215) #9
  br label %1579

1532:                                             ; preds = %1513
  %1533 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1514) #9
  br label %1579

1534:                                             ; preds = %1507
  %1535 = load ptr, ptr %1474, align 8, !tbaa !5
  %1536 = getelementptr inbounds i8, ptr %1535, i64 104
  %1537 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %1536)
  %1538 = load i32, ptr %1491, align 8, !tbaa !51
  %1539 = zext i32 %1538 to i64
  %1540 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1537, i64 noundef %1539)
          to label %1541 unwind label %1561

1541:                                             ; preds = %1534
  %1542 = getelementptr inbounds i8, ptr %1540, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %218) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %218)
          to label %1543 unwind label %1563

1543:                                             ; preds = %1541
  %1544 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %1542, i1 noundef zeroext false)
          to label %1545 unwind label %1565

1545:                                             ; preds = %1543
  br i1 %1544, label %1546, label %.critedge1120

1546:                                             ; preds = %1545
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %219) #9
  invoke void @"_ZZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjENK4$_19clIS8_EEDaRKT_"(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %219, ptr noundef nonnull align 8 dereferenceable(24) %207, ptr noundef nonnull align 8 dereferenceable(8) %1542)
          to label %1547 unwind label %1567

1547:                                             ; preds = %1546
  %1548 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull align 8 dereferenceable(8) %219)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %219) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %219) #9
  br label %.critedge1120

.critedge1120:                                    ; preds = %1545, %1547
  %1549 = phi ptr [ %1548, %1547 ], [ %1542, %1545 ]
  %1550 = call noundef ptr @_ZNKSt6vectorI11PatternRuleSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1505) #9
  %1551 = call noundef i64 @_ZNKSt6vectorI11PatternRuleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1505) #9
  %1552 = trunc i64 %1551 to i32
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %220) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %221, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1553 unwind label %1569

1553:                                             ; preds = %.critedge1120
  invoke void @_ZN3MIR6LValue12new_DowncastES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %220, ptr noundef nonnull %221, i32 noundef %1492)
          to label %1554 unwind label %1571

1554:                                             ; preds = %1553
  %1555 = call noundef i64 @_ZNK12field_path_t4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %439)
  %1556 = trunc i64 %1555 to i32
  %1557 = add i32 %1556, 1
  %1558 = load i32, ptr %11, align 4, !tbaa !9
  %1559 = invoke noundef i32 @_Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %1550, i32 noundef %1552, ptr noundef nonnull align 8 dereferenceable(8) %1549, ptr noundef nonnull align 8 dereferenceable(32) %220, i32 noundef %1557, i32 noundef %1558)
          to label %1560 unwind label %1573

1560:                                             ; preds = %1554
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %220) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #9
  br label %..loopexit1138_crit_edge

1561:                                             ; preds = %1534
  %1562 = landingpad { ptr, i32 }
          cleanup
  br label %1579

1563:                                             ; preds = %1541
  %1564 = landingpad { ptr, i32 }
          cleanup
  br label %1578

1565:                                             ; preds = %1543
  %1566 = landingpad { ptr, i32 }
          cleanup
  br label %1577

1567:                                             ; preds = %1546
  %1568 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %219) #9
  br label %1577

1569:                                             ; preds = %.critedge1120
  %1570 = landingpad { ptr, i32 }
          cleanup
  br label %1576

1571:                                             ; preds = %1553
  %1572 = landingpad { ptr, i32 }
          cleanup
  br label %1575

1573:                                             ; preds = %1554
  %1574 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %220) #9
  br label %1575

1575:                                             ; preds = %1573, %1571
  %.pn881 = phi { ptr, i32 } [ %1574, %1573 ], [ %1572, %1571 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %221) #9
  br label %1576

1576:                                             ; preds = %1575, %1569
  %.pn881.pn = phi { ptr, i32 } [ %.pn881, %1575 ], [ %1570, %1569 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %220) #9
  br label %1577

1577:                                             ; preds = %1567, %1576, %1565
  %.pn881.pn.pn = phi { ptr, i32 } [ %.pn881.pn, %1576 ], [ %1568, %1567 ], [ %1566, %1565 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %218) #9
  br label %1578

1578:                                             ; preds = %1577, %1563
  %.pn881.pn.pn.pn = phi { ptr, i32 } [ %.pn881.pn.pn, %1577 ], [ %1564, %1563 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %218) #9
  br label %1579

..loopexit1138_crit_edge:                         ; preds = %1560, %1504
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %211) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %211) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %207) #9
  br label %.loopexit1180

1579:                                             ; preds = %.loopexit1139, %.loopexit.split-lp, %1561, %1578, %1532, %1531, %1526
  %.pn881.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1533, %1532 ], [ %.pn879, %1531 ], [ %.pn877, %1526 ], [ %.pn881.pn.pn.pn, %1578 ], [ %1562, %1561 ], [ %lpad.loopexit, %.loopexit1139 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %211) #9
  br label %1580

1580:                                             ; preds = %1579, %1520
  %.pn881.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn881.pn.pn.pn.pn.pn, %1579 ], [ %1521, %1520 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %211) #9
  br label %1581

1581:                                             ; preds = %1516, %1580, %1518, %1488, %1487, %1481
  %.pn881.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1482, %1481 ], [ %1489, %1488 ], [ %.pn875, %1487 ], [ %1517, %1516 ], [ %.pn881.pn.pn.pn.pn.pn.pn, %1580 ], [ %1519, %1518 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %207) #9
  br label %2058

1582:                                             ; preds = %.lr.ph1845
  %1583 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %222) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %222, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1586 unwind label %1590

1584:                                             ; preds = %1589
  %1585 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1586:                                             ; preds = %1582
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %224) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_20vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %223, ptr noundef nonnull align 1 dereferenceable(1) %224) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %222, ptr noundef nonnull %223)
          to label %1587 unwind label %1592

1587:                                             ; preds = %1586
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %224) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %222) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %222) #9
  %1588 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1588, ptr noundef nonnull @.str.10)
          to label %1589 unwind label %1595

1589:                                             ; preds = %1587
  invoke void @__cxa_throw(ptr nonnull %1588, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1584

1590:                                             ; preds = %1582
  %1591 = landingpad { ptr, i32 }
          cleanup
  br label %1594

1592:                                             ; preds = %1586
  %1593 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %223) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %224) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %222) #9
  br label %1594

1594:                                             ; preds = %1592, %1590
  %.pn871 = phi { ptr, i32 } [ %1593, %1592 ], [ %1591, %1590 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %222) #9
  br label %2058

1595:                                             ; preds = %1587
  %1596 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1588) #9
  br label %2058

1597:                                             ; preds = %.lr.ph1845
  %1598 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %225) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1601 unwind label %1605

1599:                                             ; preds = %1604
  %1600 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1601:                                             ; preds = %1597
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %227) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_21vEEOT_"(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 nonnull %226)
          to label %1602 unwind label %1607

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

1604:                                             ; preds = %1602
  invoke void @__cxa_throw(ptr nonnull %1603, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1599

1605:                                             ; preds = %1597
  %1606 = landingpad { ptr, i32 }
          cleanup
  br label %1609

1607:                                             ; preds = %1601
  %1608 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %226) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %227) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %225) #9
  br label %1609

1609:                                             ; preds = %1607, %1605
  %.pn867 = phi { ptr, i32 } [ %1608, %1607 ], [ %1606, %1605 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %225) #9
  br label %2058

1610:                                             ; preds = %1602
  %1611 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1603) #9
  br label %2058

1612:                                             ; preds = %.lr.ph1845
  %1613 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %228) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1616 unwind label %1620

1614:                                             ; preds = %1619
  %1615 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1616:                                             ; preds = %1612
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %230) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_22vEEOT_"(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 nonnull %229)
          to label %1617 unwind label %1622

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

1619:                                             ; preds = %1617
  invoke void @__cxa_throw(ptr nonnull %1618, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1614

1620:                                             ; preds = %1612
  %1621 = landingpad { ptr, i32 }
          cleanup
  br label %1624

1622:                                             ; preds = %1616
  %1623 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %229) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %230) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %228) #9
  br label %1624

1624:                                             ; preds = %1622, %1620
  %.pn863 = phi { ptr, i32 } [ %1623, %1622 ], [ %1621, %1620 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %228) #9
  br label %2058

1625:                                             ; preds = %1617
  %1626 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1618) #9
  br label %2058

1627:                                             ; preds = %.lr.ph1845
  %1628 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %231) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %231, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %232) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %232, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1629 unwind label %1633

1629:                                             ; preds = %1627
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %234) #9
  store ptr %231, ptr %234, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_23vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %233, ptr noundef nonnull align 8 dereferenceable(8) %234) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %232, ptr noundef nonnull %233)
          to label %1630 unwind label %1635

1630:                                             ; preds = %1629
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %234) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %232) #9
  %1631 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1631, ptr noundef nonnull @.str.5)
          to label %1632 unwind label %1638

1632:                                             ; preds = %1630
  invoke void @__cxa_throw(ptr nonnull %1631, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1640

1633:                                             ; preds = %1627
  %1634 = landingpad { ptr, i32 }
          cleanup
  br label %1637

1635:                                             ; preds = %1629
  %1636 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %234) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %232) #9
  br label %1637

1637:                                             ; preds = %1635, %1633
  %.pn859 = phi { ptr, i32 } [ %1636, %1635 ], [ %1634, %1633 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %232) #9
  br label %1642

1638:                                             ; preds = %1630
  %1639 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1631) #9
  br label %1642

1640:                                             ; preds = %1632
  %1641 = landingpad { ptr, i32 }
          cleanup
  br label %1642

1642:                                             ; preds = %1640, %1638, %1637
  %.pn861 = phi { ptr, i32 } [ %1641, %1640 ], [ %1639, %1638 ], [ %.pn859, %1637 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %231) #9
  br label %2058

1643:                                             ; preds = %.invoke3017
  %1644 = landingpad { ptr, i32 }
          cleanup
  br label %2058

.lr.ph:                                           ; preds = %.lr.ph1845
  %1645 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  %1646 = call noundef zeroext i1 @_ZNK11PatternRule8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  br i1 %1646, label %1665, label %1647

1647:                                             ; preds = %.lr.ph
  %1648 = call noundef zeroext i1 @_ZNK11PatternRule13is_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  br i1 %1648, label %1665, label %1649

1649:                                             ; preds = %1647
  %1650 = call noundef zeroext i1 @_ZNK11PatternRule8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  br i1 %1650, label %1651, label %1654

1651:                                             ; preds = %1649
  %1652 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %1653 = call noundef zeroext i1 @_ZNK3MIR8Constant8is_BytesEv(ptr noundef nonnull align 8 dereferenceable(40) %1652)
  br i1 %1653, label %1665, label %1654

1654:                                             ; preds = %1651, %1649
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %235) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1655 unwind label %1658

1655:                                             ; preds = %1654
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %237) #9
  store ptr %418, ptr %237, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_24vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %236, ptr noundef nonnull align 8 dereferenceable(8) %237) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull %236)
          to label %1656 unwind label %1660

1656:                                             ; preds = %1655
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %237) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %235) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %235) #9
  %1657 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1657, ptr noundef nonnull @.str.10)
          to label %.invoke3017 unwind label %1663

1658:                                             ; preds = %1654
  %1659 = landingpad { ptr, i32 }
          cleanup
  br label %1662

1660:                                             ; preds = %1655
  %1661 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %237) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %235) #9
  br label %1662

1662:                                             ; preds = %1660, %1658
  %.pn793 = phi { ptr, i32 } [ %1661, %1660 ], [ %1659, %1658 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %235) #9
  br label %2058

1663:                                             ; preds = %1656
  %1664 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1657) #9
  br label %2058

1665:                                             ; preds = %1651, %1647, %.lr.ph
  %1666 = call noundef zeroext i1 @_ZNK11PatternRule8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  br i1 %1666, label %1667, label %1783

1667:                                             ; preds = %1665
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %238) #9
  store i32 2, ptr %238, align 4, !tbaa !11
  %1668 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKNS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %1645, ptr noundef nonnull align 4 dereferenceable(4) %238)
          to label %1669 unwind label %1674

1669:                                             ; preds = %1667
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %238) #9
  br i1 %1668, label %1683, label %1670

1670:                                             ; preds = %1669
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %239) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %239, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1671 unwind label %1676

1671:                                             ; preds = %1670
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %241) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_25vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %240, ptr noundef nonnull align 1 dereferenceable(1) %241) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %239, ptr noundef nonnull %240)
          to label %1672 unwind label %1678

1672:                                             ; preds = %1671
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %240) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %241) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %239) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %239) #9
  %1673 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1673, ptr noundef nonnull @.str.10)
          to label %.invoke3017 unwind label %1681

1674:                                             ; preds = %1667
  %1675 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %238) #9
  br label %2058

1676:                                             ; preds = %1670
  %1677 = landingpad { ptr, i32 }
          cleanup
  br label %1680

1678:                                             ; preds = %1671
  %1679 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %240) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %241) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %239) #9
  br label %1680

1680:                                             ; preds = %1678, %1676
  %.pn855 = phi { ptr, i32 } [ %1679, %1678 ], [ %1677, %1676 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %239) #9
  br label %2058

1681:                                             ; preds = %1672
  %1682 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1673) #9
  br label %2058

1683:                                             ; preds = %1669
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %242) #9
  %1684 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %1685 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR8Constant8as_BytesEv(ptr noundef nonnull align 8 dereferenceable(40) %1684)
  invoke void @_ZNSt6vectorIhSaIhEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %243, ptr noundef nonnull align 8 dereferenceable(24) %1685)
          to label %1686 unwind label %1701

1686:                                             ; preds = %1683
  invoke void @_ZN3MIR8ConstantC2ESt6vectorIhSaIhEE(ptr noundef nonnull align 8 dereferenceable(40) %242, ptr noundef nonnull %243)
          to label %1687 unwind label %1703

1687:                                             ; preds = %1686
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %243) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %244) #9
  %1688 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK11PatternRule8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  %1689 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3MIR8Constant8as_BytesEv(ptr noundef nonnull align 8 dereferenceable(40) %1688)
  %1690 = call noundef i64 @_ZNKSt6vectorIhSaIhEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1689) #9
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %245, i64 noundef %1690, i64 noundef 0)
  store i32 0, ptr %336, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %244, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %245)
          to label %1691 unwind label %1705

1691:                                             ; preds = %1687
  %1692 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %1693 unwind label %.loopexit1169

1693:                                             ; preds = %1691
  %1694 = invoke noundef zeroext i1 @_ZNK3MIR6LValue8is_DerefEv(ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1695 unwind label %.loopexit1169

1695:                                             ; preds = %1693
  br i1 %1694, label %1714, label %1696

1696:                                             ; preds = %1695
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %246) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1697 unwind label %1707

1697:                                             ; preds = %1696
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %248) #9
  store ptr %15, ptr %248, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_26vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %247, ptr noundef nonnull align 8 dereferenceable(8) %248) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull %247)
          to label %1698 unwind label %1709

1698:                                             ; preds = %1697
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %248) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %246) #9
  %1699 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1699, ptr noundef nonnull @.str.10)
          to label %1700 unwind label %1712

1700:                                             ; preds = %1698
  invoke void @__cxa_throw(ptr nonnull %1699, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %.loopexit.split-lp1170

1701:                                             ; preds = %1683
  %1702 = landingpad { ptr, i32 }
          cleanup
  br label %1782

1703:                                             ; preds = %1686
  %1704 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %243) #9
  br label %1782

1705:                                             ; preds = %1687
  %1706 = landingpad { ptr, i32 }
          cleanup
  br label %1781

.loopexit1169:                                    ; preds = %1691, %1693
  %lpad.loopexit1171 = landingpad { ptr, i32 }
          cleanup
  br label %1780

.loopexit.split-lp1170:                           ; preds = %1700
  %lpad.loopexit.split-lp1172 = landingpad { ptr, i32 }
          cleanup
  br label %1780

1707:                                             ; preds = %1696
  %1708 = landingpad { ptr, i32 }
          cleanup
  br label %1711

1709:                                             ; preds = %1697
  %1710 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %247) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %248) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %246) #9
  br label %1711

1711:                                             ; preds = %1709, %1707
  %.pn829 = phi { ptr, i32 } [ %1710, %1709 ], [ %1708, %1707 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %246) #9
  br label %1780

1712:                                             ; preds = %1698
  %1713 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1699) #9
  br label %1780

1714:                                             ; preds = %1695
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %249) #9
  invoke void @_ZNK3MIR6LValue15clone_unwrappedEj(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %249, ptr noundef nonnull align 8 dereferenceable(32) %15, i32 noundef 1)
          to label %1715 unwind label %1734

1715:                                             ; preds = %1714
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %250) #9
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %252, ptr noundef nonnull align 8 dereferenceable(40) %242) #9
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %251, ptr noundef nonnull %252)
          to label %1716 unwind label %1736

1716:                                             ; preds = %1715
  call void @_ZN3MIR8ConstantC2EOS0_(ptr noundef nonnull align 8 dereferenceable(40) %253, ptr noundef nonnull align 8 dereferenceable(40) %244) #9
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %337, ptr noundef nonnull %253)
          to label %1717 unwind label %1740

1717:                                             ; preds = %1716
  invoke void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %250, ptr noundef nonnull %251)
          to label %1718 unwind label %1738

1718:                                             ; preds = %1717
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %251) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %253) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %252) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %254) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %255) #9
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %256, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %1719 unwind label %1743

1719:                                             ; preds = %1718
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %255, i32 noundef 0, ptr noundef nonnull %256)
          to label %1720 unwind label %1745

1720:                                             ; preds = %1719
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %257, ptr noundef nonnull align 8 dereferenceable(112) %250) #9
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %254, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull %257)
          to label %1721 unwind label %1747

1721:                                             ; preds = %1720
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %257) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %256) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %255) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %258) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %259) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %259, i32 noundef 14)
          to label %1722 unwind label %1751

1722:                                             ; preds = %1721
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %262, ptr noundef nonnull align 8 dereferenceable(32) %249)
          to label %1723 unwind label %1753

1723:                                             ; preds = %1722
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %261, ptr noundef nonnull %262)
          to label %1724 unwind label %1755

1724:                                             ; preds = %1723
  store i32 14, ptr %338, align 8, !tbaa !32
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %263, ptr noundef nonnull align 8 dereferenceable(32) %254)
          to label %1725 unwind label %.thread1125

1725:                                             ; preds = %1724
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %339, ptr noundef nonnull %263)
          to label %1726 unwind label %.thread1129

1726:                                             ; preds = %1725
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %260, ptr noundef nonnull %261)
          to label %1727 unwind label %1759

1727:                                             ; preds = %1726
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %258, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef nonnull %260)
          to label %1728 unwind label %1761

1728:                                             ; preds = %1727
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %260) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %261) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %259) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %259) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %265, ptr noundef nonnull align 8 dereferenceable(32) %258)
          to label %1729 unwind label %1768

1729:                                             ; preds = %1728
  store i32 %1692, ptr %340, align 8, !tbaa !17
  %1730 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1730, ptr %341, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %264, ptr noundef nonnull %265)
          to label %1731 unwind label %1770

1731:                                             ; preds = %1729
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %264)
          to label %1732 unwind label %1772

1732:                                             ; preds = %1731
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %264) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %265) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %1692)
          to label %1733 unwind label %1768

1733:                                             ; preds = %1732
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %258) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %254) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %250) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %250) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %249) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %249) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %244) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %244) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %242) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %242) #9
  br label %.loopexit1180

1734:                                             ; preds = %1714
  %1735 = landingpad { ptr, i32 }
          cleanup
  br label %1779

1736:                                             ; preds = %1715
  %1737 = landingpad { ptr, i32 }
          cleanup
  br label %1742

1738:                                             ; preds = %1717
  %1739 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue12Data_MakeDstD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %251) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %253) #9
  br label %1742

1740:                                             ; preds = %1716
  %1741 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %253) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %251) #9
  br label %1742

1742:                                             ; preds = %1738, %1740, %1736
  %.pn831.pn = phi { ptr, i32 } [ %1741, %1740 ], [ %1739, %1738 ], [ %1737, %1736 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %252) #9
  br label %1778

1743:                                             ; preds = %1718
  %1744 = landingpad { ptr, i32 }
          cleanup
  br label %1750

1745:                                             ; preds = %1719
  %1746 = landingpad { ptr, i32 }
          cleanup
  br label %1749

1747:                                             ; preds = %1720
  %1748 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %257) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %255) #9
  br label %1749

1749:                                             ; preds = %1747, %1745
  %.pn834 = phi { ptr, i32 } [ %1748, %1747 ], [ %1746, %1745 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %256) #9
  br label %1750

1750:                                             ; preds = %1749, %1743
  %.pn834.pn = phi { ptr, i32 } [ %.pn834, %1749 ], [ %1744, %1743 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %255) #9
  br label %1777

1751:                                             ; preds = %1721
  %1752 = landingpad { ptr, i32 }
          cleanup
  br label %1767

1753:                                             ; preds = %1722
  %1754 = landingpad { ptr, i32 }
          cleanup
  br label %1766

1755:                                             ; preds = %1723
  %1756 = landingpad { ptr, i32 }
          cleanup
  br label %1765

.thread1125:                                      ; preds = %1724
  %1757 = landingpad { ptr, i32 }
          cleanup
  br label %1764

.thread1129:                                      ; preds = %1725
  %1758 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #9
  br label %1764

1759:                                             ; preds = %1726
  %1760 = landingpad { ptr, i32 }
          cleanup
  br label %1763

1761:                                             ; preds = %1727
  %1762 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %260) #9
  br label %1763

1763:                                             ; preds = %1759, %1761
  %.pn837 = phi { ptr, i32 } [ %1762, %1761 ], [ %1760, %1759 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %261) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #9
  br label %1765

1764:                                             ; preds = %.thread1129, %.thread1125
  %.pn837.pn.pn1128 = phi { ptr, i32 } [ %1757, %.thread1125 ], [ %1758, %.thread1129 ]
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %261) #9
  br label %1765

1765:                                             ; preds = %1763, %1764, %1755
  %.pn837.pn.pn.pn = phi { ptr, i32 } [ %.pn837.pn.pn1128, %1764 ], [ %.pn837, %1763 ], [ %1756, %1755 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %262) #9
  br label %1766

1766:                                             ; preds = %1765, %1753
  %.pn837.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn837.pn.pn.pn, %1765 ], [ %1754, %1753 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %259) #9
  br label %1767

1767:                                             ; preds = %1766, %1751
  %.pn837.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn837.pn.pn.pn.pn, %1766 ], [ %1752, %1751 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %259) #9
  br label %1776

1768:                                             ; preds = %1732, %1728
  %1769 = landingpad { ptr, i32 }
          cleanup
  br label %1775

1770:                                             ; preds = %1729
  %1771 = landingpad { ptr, i32 }
          cleanup
  br label %1774

1772:                                             ; preds = %1731
  %1773 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %264) #9
  br label %1774

1774:                                             ; preds = %1772, %1770
  %.pn844 = phi { ptr, i32 } [ %1773, %1772 ], [ %1771, %1770 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %265) #9
  br label %1775

1775:                                             ; preds = %1774, %1768
  %.pn846 = phi { ptr, i32 } [ %1769, %1768 ], [ %.pn844, %1774 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %258) #9
  br label %1776

1776:                                             ; preds = %1775, %1767
  %.pn846.pn = phi { ptr, i32 } [ %.pn846, %1775 ], [ %.pn837.pn.pn.pn.pn.pn, %1767 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %258) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #9
  br label %1777

1777:                                             ; preds = %1776, %1750
  %.pn846.pn.pn = phi { ptr, i32 } [ %.pn846.pn, %1776 ], [ %.pn834.pn, %1750 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %254) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %250) #9
  br label %1778

1778:                                             ; preds = %1777, %1742
  %.pn846.pn.pn.pn = phi { ptr, i32 } [ %.pn846.pn.pn, %1777 ], [ %.pn831.pn, %1742 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %250) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %249) #9
  br label %1779

1779:                                             ; preds = %1778, %1734
  %.pn846.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn846.pn.pn.pn, %1778 ], [ %1735, %1734 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %249) #9
  br label %1780

1780:                                             ; preds = %.loopexit1169, %.loopexit.split-lp1170, %1779, %1712, %1711
  %.pn846.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn846.pn.pn.pn.pn, %1779 ], [ %1713, %1712 ], [ %.pn829, %1711 ], [ %lpad.loopexit1171, %.loopexit1169 ], [ %lpad.loopexit.split-lp1172, %.loopexit.split-lp1170 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %244) #9
  br label %1781

1781:                                             ; preds = %1780, %1705
  %.pn846.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn846.pn.pn.pn.pn.pn, %1780 ], [ %1706, %1705 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %244) #9
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %242) #9
  br label %1782

1782:                                             ; preds = %1781, %1703, %1701
  %.pn846.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn846.pn.pn.pn.pn.pn.pn, %1781 ], [ %1704, %1703 ], [ %1702, %1701 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %242) #9
  br label %2058

1783:                                             ; preds = %1665
  %1784 = call noundef zeroext i1 @_ZNK11PatternRule8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  br i1 %1784, label %1785, label %1854

1785:                                             ; preds = %1783
  %1786 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK11PatternRule8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %266) #9
  %1787 = load i32, ptr %1786, align 8, !tbaa !57
  %1788 = zext i32 %1787 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %268, i64 noundef %1788, i64 noundef 0)
  store i32 0, ptr %331, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %267, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %268)
          to label %1789 unwind label %1814

1789:                                             ; preds = %1785
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %266, ptr noundef nonnull %267)
          to label %1790 unwind label %1816

1790:                                             ; preds = %1789
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %267) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %269) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %270) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %270, i32 noundef 0)
          to label %1791 unwind label %1818

1791:                                             ; preds = %1790
  invoke void @_ZNK10MirBuilder14get_ptr_to_dstERK4SpanRKN3MIR6LValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %272, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1792 unwind label %1820

1792:                                             ; preds = %1791
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %271, ptr noundef nonnull %272)
          to label %1793 unwind label %1822

1793:                                             ; preds = %1792
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %269, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull %271)
          to label %1794 unwind label %1824

1794:                                             ; preds = %1793
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %271) #9
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %272) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %270) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %270) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %273) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %274) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %274, i32 noundef 14)
          to label %1795 unwind label %1829

1795:                                             ; preds = %1794
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %277, ptr noundef nonnull align 8 dereferenceable(32) %269)
          to label %1796 unwind label %1831

1796:                                             ; preds = %1795
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %276, ptr noundef nonnull %277)
          to label %1797 unwind label %1833

1797:                                             ; preds = %1796
  store i32 14, ptr %332, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %333, ptr noundef nonnull align 8 dereferenceable(48) %266) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %275, ptr noundef nonnull %276)
          to label %1798 unwind label %1835

1798:                                             ; preds = %1797
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %273, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef nonnull %275)
          to label %1799 unwind label %1837

1799:                                             ; preds = %1798
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %275) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %276) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %277) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %274) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %274) #9
  %1800 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %1801 unwind label %1843

1801:                                             ; preds = %1799
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %279, ptr noundef nonnull align 8 dereferenceable(32) %273)
          to label %1802 unwind label %1843

1802:                                             ; preds = %1801
  store i32 %1800, ptr %334, align 8, !tbaa !17
  %1803 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1803, ptr %335, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %278, ptr noundef nonnull %279)
          to label %1804 unwind label %1845

1804:                                             ; preds = %1802
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %278)
          to label %1805 unwind label %1847

1805:                                             ; preds = %1804
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %278) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %279) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %1800)
          to label %1806 unwind label %1843

1806:                                             ; preds = %1805
  %1807 = getelementptr inbounds i8, ptr %1786, i64 8
  %1808 = call noundef ptr @_ZNKSt6vectorI11PatternRuleSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1807) #9
  %1809 = call noundef i64 @_ZNKSt6vectorI11PatternRuleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1807) #9
  %1810 = trunc i64 %1809 to i32
  %1811 = load i32, ptr %11, align 4, !tbaa !9
  %1812 = invoke noundef i32 @_Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %1808, i32 noundef %1810, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %6, i32 noundef %1811)
          to label %1813 unwind label %1843

1813:                                             ; preds = %1806
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %273) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %269) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %269) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %266) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %266) #9
  br label %.loopexit1180

1814:                                             ; preds = %1785
  %1815 = landingpad { ptr, i32 }
          cleanup
  br label %1853

1816:                                             ; preds = %1789
  %1817 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %267) #9
  br label %1853

1818:                                             ; preds = %1790
  %1819 = landingpad { ptr, i32 }
          cleanup
  br label %1828

1820:                                             ; preds = %1791
  %1821 = landingpad { ptr, i32 }
          cleanup
  br label %1827

1822:                                             ; preds = %1792
  %1823 = landingpad { ptr, i32 }
          cleanup
  br label %1826

1824:                                             ; preds = %1793
  %1825 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %271) #9
  br label %1826

1826:                                             ; preds = %1824, %1822
  %.pn813 = phi { ptr, i32 } [ %1825, %1824 ], [ %1823, %1822 ]
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %272) #9
  br label %1827

1827:                                             ; preds = %1826, %1820
  %.pn813.pn = phi { ptr, i32 } [ %.pn813, %1826 ], [ %1821, %1820 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %270) #9
  br label %1828

1828:                                             ; preds = %1827, %1818
  %.pn813.pn.pn = phi { ptr, i32 } [ %.pn813.pn, %1827 ], [ %1819, %1818 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %270) #9
  br label %1852

1829:                                             ; preds = %1794
  %1830 = landingpad { ptr, i32 }
          cleanup
  br label %1842

1831:                                             ; preds = %1795
  %1832 = landingpad { ptr, i32 }
          cleanup
  br label %1841

1833:                                             ; preds = %1796
  %1834 = landingpad { ptr, i32 }
          cleanup
  br label %1840

1835:                                             ; preds = %1797
  %1836 = landingpad { ptr, i32 }
          cleanup
  br label %1839

1837:                                             ; preds = %1798
  %1838 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %275) #9
  br label %1839

1839:                                             ; preds = %1837, %1835
  %.pn817 = phi { ptr, i32 } [ %1838, %1837 ], [ %1836, %1835 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %276) #9
  br label %1840

1840:                                             ; preds = %1839, %1833
  %.pn817.pn = phi { ptr, i32 } [ %.pn817, %1839 ], [ %1834, %1833 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %277) #9
  br label %1841

1841:                                             ; preds = %1840, %1831
  %.pn817.pn.pn = phi { ptr, i32 } [ %.pn817.pn, %1840 ], [ %1832, %1831 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %274) #9
  br label %1842

1842:                                             ; preds = %1841, %1829
  %.pn817.pn.pn.pn = phi { ptr, i32 } [ %.pn817.pn.pn, %1841 ], [ %1830, %1829 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %274) #9
  br label %1851

1843:                                             ; preds = %1806, %1805, %1801, %1799
  %1844 = landingpad { ptr, i32 }
          cleanup
  br label %1850

1845:                                             ; preds = %1802
  %1846 = landingpad { ptr, i32 }
          cleanup
  br label %1849

1847:                                             ; preds = %1804
  %1848 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %278) #9
  br label %1849

1849:                                             ; preds = %1847, %1845
  %.pn822 = phi { ptr, i32 } [ %1848, %1847 ], [ %1846, %1845 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %279) #9
  br label %1850

1850:                                             ; preds = %1849, %1843
  %.pn824 = phi { ptr, i32 } [ %1844, %1843 ], [ %.pn822, %1849 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %273) #9
  br label %1851

1851:                                             ; preds = %1850, %1842
  %.pn824.pn = phi { ptr, i32 } [ %.pn824, %1850 ], [ %.pn817.pn.pn.pn, %1842 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %273) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %269) #9
  br label %1852

1852:                                             ; preds = %1851, %1828
  %.pn824.pn.pn = phi { ptr, i32 } [ %.pn824.pn, %1851 ], [ %.pn813.pn.pn, %1828 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %269) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %266) #9
  br label %1853

1853:                                             ; preds = %1852, %1816, %1814
  %.pn824.pn.pn.pn = phi { ptr, i32 } [ %.pn824.pn.pn, %1852 ], [ %1817, %1816 ], [ %1815, %1814 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %266) #9
  br label %2058

1854:                                             ; preds = %1783
  %1855 = call noundef zeroext i1 @_ZNK11PatternRule13is_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  br i1 %1855, label %1856, label %1932

1856:                                             ; preds = %1854
  %1857 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK11PatternRule13as_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(120) %418)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %280) #9
  %1858 = load i32, ptr %1857, align 8, !tbaa !59
  %1859 = zext i32 %1858 to i64
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %282, i64 noundef %1859, i64 noundef 0)
  store i32 0, ptr %326, align 8, !tbaa !29
  invoke void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %281, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %282)
          to label %1860 unwind label %1892

1860:                                             ; preds = %1856
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %280, ptr noundef nonnull %281)
          to label %1861 unwind label %1894

1861:                                             ; preds = %1860
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %281) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %283) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %284) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %284, i32 noundef 0)
          to label %1862 unwind label %1896

1862:                                             ; preds = %1861
  invoke void @_ZNK10MirBuilder14get_ptr_to_dstERK4SpanRKN3MIR6LValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %286, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %1863 unwind label %1898

1863:                                             ; preds = %1862
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %285, ptr noundef nonnull %286)
          to label %1864 unwind label %1900

1864:                                             ; preds = %1863
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %283, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef nonnull %285)
          to label %1865 unwind label %1902

1865:                                             ; preds = %1864
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %285) #9
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %284) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %287) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %288) #9
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %288, i32 noundef 14)
          to label %1866 unwind label %1907

1866:                                             ; preds = %1865
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %291, ptr noundef nonnull align 8 dereferenceable(32) %283)
          to label %1867 unwind label %1909

1867:                                             ; preds = %1866
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %290, ptr noundef nonnull %291)
          to label %1868 unwind label %1911

1868:                                             ; preds = %1867
  store i32 18, ptr %327, align 8, !tbaa !32
  call void @_ZN3MIR5ParamC2EOS0_(ptr noundef nonnull align 8 dereferenceable(48) %328, ptr noundef nonnull align 8 dereferenceable(48) %280) #9
  invoke void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %289, ptr noundef nonnull %290)
          to label %1869 unwind label %1913

1869:                                             ; preds = %1868
  invoke void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %287, ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %288, ptr noundef nonnull %289)
          to label %1870 unwind label %1915

1870:                                             ; preds = %1869
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %289) #9
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %290) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %291) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %288) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %288) #9
  %1871 = invoke noundef i32 @_ZN10MirBuilder15new_bb_unlinkedEv(ptr noundef nonnull align 8 dereferenceable(440) %0)
          to label %1872 unwind label %1921

1872:                                             ; preds = %1870
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %293, ptr noundef nonnull align 8 dereferenceable(32) %287)
          to label %1873 unwind label %1921

1873:                                             ; preds = %1872
  %1874 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %1874, ptr %329, align 8, !tbaa !17
  store i32 %1871, ptr %330, align 4, !tbaa !26
  invoke void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Terminator") align 8 %292, ptr noundef nonnull %293)
          to label %1875 unwind label %1923

1875:                                             ; preds = %1873
  invoke void @_ZN10MirBuilder9end_blockEN3MIR10TerminatorE(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull %292)
          to label %1876 unwind label %1925

1876:                                             ; preds = %1875
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %292) #9
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %293) #9
  invoke void @_ZN10MirBuilder13set_cur_blockEj(ptr noundef nonnull align 8 dereferenceable(440) %0, i32 noundef %1871)
          to label %1877 unwind label %1921

1877:                                             ; preds = %1876
  %1878 = getelementptr inbounds i8, ptr %1857, i64 8
  %1879 = call noundef ptr @_ZNKSt6vectorI11PatternRuleSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1878) #9
  %1880 = call noundef i64 @_ZNKSt6vectorI11PatternRuleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1878) #9
  %1881 = trunc i64 %1880 to i32
  %1882 = load i32, ptr %11, align 4, !tbaa !9
  %1883 = invoke noundef i32 @_Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %1879, i32 noundef %1881, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %6, i32 noundef %1882)
          to label %1884 unwind label %1921

1884:                                             ; preds = %1877
  %1885 = getelementptr inbounds i8, ptr %1857, i64 32
  %1886 = call noundef ptr @_ZNKSt6vectorI11PatternRuleSaIS0_EE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %1885) #9
  %1887 = call noundef i64 @_ZNKSt6vectorI11PatternRuleSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1885) #9
  %1888 = trunc i64 %1887 to i32
  %1889 = load i32, ptr %11, align 4, !tbaa !9
  %1890 = invoke noundef i32 @_Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj(ptr noundef nonnull align 8 dereferenceable(440) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %1886, i32 noundef %1888, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %6, i32 noundef %1889)
          to label %1891 unwind label %1921

1891:                                             ; preds = %1884
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %287) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %283) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %283) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %280) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %280) #9
  br label %.loopexit1180

1892:                                             ; preds = %1856
  %1893 = landingpad { ptr, i32 }
          cleanup
  br label %1931

1894:                                             ; preds = %1860
  %1895 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %281) #9
  br label %1931

1896:                                             ; preds = %1861
  %1897 = landingpad { ptr, i32 }
          cleanup
  br label %1906

1898:                                             ; preds = %1862
  %1899 = landingpad { ptr, i32 }
          cleanup
  br label %1905

1900:                                             ; preds = %1863
  %1901 = landingpad { ptr, i32 }
          cleanup
  br label %1904

1902:                                             ; preds = %1864
  %1903 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %285) #9
  br label %1904

1904:                                             ; preds = %1902, %1900
  %.pn797 = phi { ptr, i32 } [ %1903, %1902 ], [ %1901, %1900 ]
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %286) #9
  br label %1905

1905:                                             ; preds = %1904, %1898
  %.pn797.pn = phi { ptr, i32 } [ %.pn797, %1904 ], [ %1899, %1898 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %284) #9
  br label %1906

1906:                                             ; preds = %1905, %1896
  %.pn797.pn.pn = phi { ptr, i32 } [ %.pn797.pn, %1905 ], [ %1897, %1896 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %284) #9
  br label %1930

1907:                                             ; preds = %1865
  %1908 = landingpad { ptr, i32 }
          cleanup
  br label %1920

1909:                                             ; preds = %1866
  %1910 = landingpad { ptr, i32 }
          cleanup
  br label %1919

1911:                                             ; preds = %1867
  %1912 = landingpad { ptr, i32 }
          cleanup
  br label %1918

1913:                                             ; preds = %1868
  %1914 = landingpad { ptr, i32 }
          cleanup
  br label %1917

1915:                                             ; preds = %1869
  %1916 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %289) #9
  br label %1917

1917:                                             ; preds = %1915, %1913
  %.pn801 = phi { ptr, i32 } [ %1916, %1915 ], [ %1914, %1913 ]
  call void @_ZN3MIR6RValue10Data_BinOpD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %290) #9
  br label %1918

1918:                                             ; preds = %1917, %1911
  %.pn801.pn = phi { ptr, i32 } [ %.pn801, %1917 ], [ %1912, %1911 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %291) #9
  br label %1919

1919:                                             ; preds = %1918, %1909
  %.pn801.pn.pn = phi { ptr, i32 } [ %.pn801.pn, %1918 ], [ %1910, %1909 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %288) #9
  br label %1920

1920:                                             ; preds = %1919, %1907
  %.pn801.pn.pn.pn = phi { ptr, i32 } [ %.pn801.pn.pn, %1919 ], [ %1908, %1907 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %288) #9
  br label %1929

1921:                                             ; preds = %1884, %1877, %1876, %1872, %1870
  %1922 = landingpad { ptr, i32 }
          cleanup
  br label %1928

1923:                                             ; preds = %1873
  %1924 = landingpad { ptr, i32 }
          cleanup
  br label %1927

1925:                                             ; preds = %1875
  %1926 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR10TerminatorD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %292) #9
  br label %1927

1927:                                             ; preds = %1925, %1923
  %.pn806 = phi { ptr, i32 } [ %1926, %1925 ], [ %1924, %1923 ]
  call void @_ZN3MIR10Terminator7Data_IfD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %293) #9
  br label %1928

1928:                                             ; preds = %1927, %1921
  %.pn808 = phi { ptr, i32 } [ %1922, %1921 ], [ %.pn806, %1927 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %287) #9
  br label %1929

1929:                                             ; preds = %1928, %1920
  %.pn808.pn = phi { ptr, i32 } [ %.pn808, %1928 ], [ %.pn801.pn.pn.pn, %1920 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %287) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %283) #9
  br label %1930

1930:                                             ; preds = %1929, %1906
  %.pn808.pn.pn = phi { ptr, i32 } [ %.pn808.pn, %1929 ], [ %.pn797.pn.pn, %1906 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %283) #9
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %280) #9
  br label %1931

1931:                                             ; preds = %1930, %1894, %1892
  %.pn808.pn.pn.pn = phi { ptr, i32 } [ %.pn808.pn.pn, %1930 ], [ %1895, %1894 ], [ %1893, %1892 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %280) #9
  br label %2058

1932:                                             ; preds = %1854
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %294) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1933 unwind label %1937

1933:                                             ; preds = %1932
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %296) #9
  store ptr %418, ptr %296, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_27vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %295, ptr noundef nonnull align 8 dereferenceable(8) %296) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull %295)
          to label %1934 unwind label %1939

1934:                                             ; preds = %1933
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %295) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %296) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %294) #9
  %1935 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1935, ptr noundef nonnull @.str.10)
          to label %.invoke3017 unwind label %1942

.invoke3017:                                      ; preds = %1934, %1672, %1656
  %1936 = phi ptr [ %1657, %1656 ], [ %1673, %1672 ], [ %1935, %1934 ]
  invoke void @__cxa_throw(ptr nonnull %1936, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %.cont3018 unwind label %1643

.cont3018:                                        ; preds = %.invoke3017
  unreachable

1937:                                             ; preds = %1932
  %1938 = landingpad { ptr, i32 }
          cleanup
  br label %1941

1939:                                             ; preds = %1933
  %1940 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %295) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %296) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %294) #9
  br label %1941

1941:                                             ; preds = %1939, %1937
  %.pn795 = phi { ptr, i32 } [ %1940, %1939 ], [ %1938, %1937 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %294) #9
  br label %2058

1942:                                             ; preds = %1934
  %1943 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1935) #9
  br label %2058

1944:                                             ; preds = %.lr.ph1845
  %1945 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %297) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %297, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %298) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %298, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1946 unwind label %1950

1946:                                             ; preds = %1944
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %300) #9
  store ptr %297, ptr %300, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_28vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %299, ptr noundef nonnull align 8 dereferenceable(8) %300) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %298, ptr noundef nonnull %299)
          to label %1947 unwind label %1952

1947:                                             ; preds = %1946
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %299) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %300) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %298) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %298) #9
  %1948 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1948, ptr noundef nonnull @.str.5)
          to label %1949 unwind label %1955

1949:                                             ; preds = %1947
  invoke void @__cxa_throw(ptr nonnull %1948, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1957

1950:                                             ; preds = %1944
  %1951 = landingpad { ptr, i32 }
          cleanup
  br label %1954

1952:                                             ; preds = %1946
  %1953 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %299) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %300) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %298) #9
  br label %1954

1954:                                             ; preds = %1952, %1950
  %.pn789 = phi { ptr, i32 } [ %1953, %1952 ], [ %1951, %1950 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %298) #9
  br label %1959

1955:                                             ; preds = %1947
  %1956 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1948) #9
  br label %1959

1957:                                             ; preds = %1949
  %1958 = landingpad { ptr, i32 }
          cleanup
  br label %1959

1959:                                             ; preds = %1957, %1955, %1954
  %.pn791 = phi { ptr, i32 } [ %1958, %1957 ], [ %1956, %1955 ], [ %.pn789, %1954 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %297) #9
  br label %2058

1960:                                             ; preds = %.lr.ph1845
  %1961 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %301) #9
  store ptr @__func__._Z42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjj, ptr %301, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %302) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1962 unwind label %1966

1962:                                             ; preds = %1960
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %304) #9
  store ptr %301, ptr %304, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_29vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %303, ptr noundef nonnull align 8 dereferenceable(8) %304) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull %303)
          to label %1963 unwind label %1968

1963:                                             ; preds = %1962
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %304) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %302) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %302) #9
  %1964 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1964, ptr noundef nonnull @.str.5)
          to label %1965 unwind label %1971

1965:                                             ; preds = %1963
  invoke void @__cxa_throw(ptr nonnull %1964, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1973

1966:                                             ; preds = %1960
  %1967 = landingpad { ptr, i32 }
          cleanup
  br label %1970

1968:                                             ; preds = %1962
  %1969 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %303) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %304) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %302) #9
  br label %1970

1970:                                             ; preds = %1968, %1966
  %.pn785 = phi { ptr, i32 } [ %1969, %1968 ], [ %1967, %1966 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %302) #9
  br label %1975

1971:                                             ; preds = %1963
  %1972 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1964) #9
  br label %1975

1973:                                             ; preds = %1965
  %1974 = landingpad { ptr, i32 }
          cleanup
  br label %1975

1975:                                             ; preds = %1973, %1971, %1970
  %.pn787 = phi { ptr, i32 } [ %1974, %1973 ], [ %1972, %1971 ], [ %.pn785, %1970 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %301) #9
  br label %2058

1976:                                             ; preds = %.lr.ph1845
  %1977 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %305) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %305, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1980 unwind label %1985

1978:                                             ; preds = %1984
  %1979 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1980:                                             ; preds = %1976
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %307) #9
  store ptr %418, ptr %307, align 8, !tbaa !5
  %1981 = getelementptr inbounds i8, ptr %307, i64 8
  store ptr %16, ptr %1981, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_30vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %306, ptr noundef nonnull align 8 dereferenceable(16) %307) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %305, ptr noundef nonnull %306)
          to label %1982 unwind label %1987

1982:                                             ; preds = %1980
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %306) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %307) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %305) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %305) #9
  %1983 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1983, ptr noundef nonnull @.str.10)
          to label %1984 unwind label %1990

1984:                                             ; preds = %1982
  invoke void @__cxa_throw(ptr nonnull %1983, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1978

1985:                                             ; preds = %1976
  %1986 = landingpad { ptr, i32 }
          cleanup
  br label %1989

1987:                                             ; preds = %1980
  %1988 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %306) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %307) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %305) #9
  br label %1989

1989:                                             ; preds = %1987, %1985
  %.pn781 = phi { ptr, i32 } [ %1988, %1987 ], [ %1986, %1985 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %305) #9
  br label %2058

1990:                                             ; preds = %1982
  %1991 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1983) #9
  br label %2058

1992:                                             ; preds = %.lr.ph1845
  %1993 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %308) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1996 unwind label %2001

1994:                                             ; preds = %2000
  %1995 = landingpad { ptr, i32 }
          cleanup
  br label %2058

1996:                                             ; preds = %1992
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %310) #9
  store ptr %418, ptr %310, align 8, !tbaa !5
  %1997 = getelementptr inbounds i8, ptr %310, i64 8
  store ptr %16, ptr %1997, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_31vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %309, ptr noundef nonnull align 8 dereferenceable(16) %310) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef nonnull %309)
          to label %1998 unwind label %2003

1998:                                             ; preds = %1996
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %309) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %310) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %308) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %308) #9
  %1999 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1999, ptr noundef nonnull @.str.10)
          to label %2000 unwind label %2006

2000:                                             ; preds = %1998
  invoke void @__cxa_throw(ptr nonnull %1999, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %1994

2001:                                             ; preds = %1992
  %2002 = landingpad { ptr, i32 }
          cleanup
  br label %2005

2003:                                             ; preds = %1996
  %2004 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %309) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %310) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %308) #9
  br label %2005

2005:                                             ; preds = %2003, %2001
  %.pn777 = phi { ptr, i32 } [ %2004, %2003 ], [ %2002, %2001 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %308) #9
  br label %2058

2006:                                             ; preds = %1998
  %2007 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1999) #9
  br label %2058

2008:                                             ; preds = %.lr.ph1845
  %2009 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %311) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %311, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %2012 unwind label %2017

2010:                                             ; preds = %2016
  %2011 = landingpad { ptr, i32 }
          cleanup
  br label %2058

2012:                                             ; preds = %2008
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %313) #9
  store ptr %418, ptr %313, align 8, !tbaa !5
  %2013 = getelementptr inbounds i8, ptr %313, i64 8
  store ptr %16, ptr %2013, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_32vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %312, ptr noundef nonnull align 8 dereferenceable(16) %313) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %311, ptr noundef nonnull %312)
          to label %2014 unwind label %2019

2014:                                             ; preds = %2012
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %313) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %311) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %311) #9
  %2015 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2015, ptr noundef nonnull @.str.10)
          to label %2016 unwind label %2022

2016:                                             ; preds = %2014
  invoke void @__cxa_throw(ptr nonnull %2015, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %2010

2017:                                             ; preds = %2008
  %2018 = landingpad { ptr, i32 }
          cleanup
  br label %2021

2019:                                             ; preds = %2012
  %2020 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %312) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %313) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %311) #9
  br label %2021

2021:                                             ; preds = %2019, %2017
  %.pn773 = phi { ptr, i32 } [ %2020, %2019 ], [ %2018, %2017 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %311) #9
  br label %2058

2022:                                             ; preds = %2014
  %2023 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %2015) #9
  br label %2058

2024:                                             ; preds = %.lr.ph1845
  %2025 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %314) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %2028 unwind label %2032

2026:                                             ; preds = %2031
  %2027 = landingpad { ptr, i32 }
          cleanup
  br label %2058

2028:                                             ; preds = %2024
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %316) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_33vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %315, ptr noundef nonnull align 1 dereferenceable(1) %316) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull %315)
          to label %2029 unwind label %2034

2029:                                             ; preds = %2028
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %315) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %316) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %314) #9
  %2030 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2030, ptr noundef nonnull @.str.10)
          to label %2031 unwind label %2037

2031:                                             ; preds = %2029
  invoke void @__cxa_throw(ptr nonnull %2030, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %2026

2032:                                             ; preds = %2024
  %2033 = landingpad { ptr, i32 }
          cleanup
  br label %2036

2034:                                             ; preds = %2028
  %2035 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %315) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %316) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %314) #9
  br label %2036

2036:                                             ; preds = %2034, %2032
  %.pn769 = phi { ptr, i32 } [ %2035, %2034 ], [ %2033, %2032 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %314) #9
  br label %2058

2037:                                             ; preds = %2029
  %2038 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %2030) #9
  br label %2058

2039:                                             ; preds = %.lr.ph1845
  %2040 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %464)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %317) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %2043 unwind label %2047

2041:                                             ; preds = %2046
  %2042 = landingpad { ptr, i32 }
          cleanup
  br label %2058

2043:                                             ; preds = %2039
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %319) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjE4$_34vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %318, ptr noundef nonnull align 1 dereferenceable(1) %319) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef nonnull %318)
          to label %2044 unwind label %2049

2044:                                             ; preds = %2043
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %319) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %317) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %317) #9
  %2045 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2045, ptr noundef nonnull @.str.10)
          to label %2046 unwind label %2052

2046:                                             ; preds = %2044
  invoke void @__cxa_throw(ptr nonnull %2045, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %2063 unwind label %2041

2047:                                             ; preds = %2039
  %2048 = landingpad { ptr, i32 }
          cleanup
  br label %2051

2049:                                             ; preds = %2043
  %2050 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %318) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %319) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %317) #9
  br label %2051

2051:                                             ; preds = %2049, %2047
  %.pn = phi { ptr, i32 } [ %2050, %2049 ], [ %2048, %2047 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %317) #9
  br label %2058

2052:                                             ; preds = %2044
  %2053 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %2045) #9
  br label %2058

2054:                                             ; preds = %434, %.loopexit1180
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %2055 = load i32, ptr %10, align 4, !tbaa !9
  %2056 = zext i32 %2055 to i64
  %2057 = icmp ult i64 %indvars.iv.next, %2056
  br i1 %2057, label %416, label %._crit_edge, !llvm.loop !61

2058:                                             ; preds = %.loopexit1162, %.loopexit.split-lp1163, %1642, %1959, %1975, %480, %479, %469, %495, %494, %484, %1302, %1303, %1359, %1148, %1210, %1259, %1197, %1168, %1109, %1138, %982, %1027, %1074, %1013, %984, %928, %957, %720, %732, %733, %780, %751, %814, %843, %905, %859, %857, %812, %810, %542, %554, %555, %598, %573, %626, %655, %717, %671, %669, %624, %524, %530, %539, %1287, %1286, %1270, %1269, %1085, %1084, %512, %511, %497, %1426, %1441, %1410, %1409, %1399, %1385, %1395, %1396, %1370, %1380, %1381, %1581, %1473, %1457, %1595, %1594, %1584, %1610, %1609, %1599, %1625, %1624, %1614, %1942, %1941, %1931, %1853, %1782, %1681, %1680, %1674, %1663, %1662, %1643, %1990, %1989, %1978, %2006, %2005, %1994, %2022, %2021, %2010, %2037, %2036, %2026, %2052, %2051, %2041, %462
  %.pn767.pn.pn = phi { ptr, i32 } [ %463, %462 ], [ %.pn787, %1975 ], [ %.pn791, %1959 ], [ %.pn861, %1642 ], [ %470, %469 ], [ %481, %480 ], [ %.pn1109, %479 ], [ %485, %484 ], [ %496, %495 ], [ %.pn1105, %494 ], [ %498, %497 ], [ %1288, %1287 ], [ %.pn922, %1286 ], [ %1271, %1270 ], [ %.pn978, %1269 ], [ %1086, %1085 ], [ %.pn1016, %1084 ], [ %513, %512 ], [ %.pn1096, %511 ], [ %525, %524 ], [ %.pn1100, %530 ], [ %.pn1098, %539 ], [ %543, %542 ], [ %556, %555 ], [ %.pn1092, %554 ], [ %.pn1088.pn, %598 ], [ %574, %573 ], [ %625, %624 ], [ %672, %671 ], [ %.pn1075.pn.pn.pn, %717 ], [ %670, %669 ], [ %.pn1065.pn.pn, %655 ], [ %627, %626 ], [ %721, %720 ], [ %734, %733 ], [ %.pn1054, %732 ], [ %.pn1049.pn.pn, %780 ], [ %752, %751 ], [ %811, %810 ], [ %860, %859 ], [ %.pn1035.pn.pn.pn, %905 ], [ %858, %857 ], [ %813, %812 ], [ %.pn1025.pn.pn, %843 ], [ %815, %814 ], [ %.pn1011.pn.pn, %957 ], [ %929, %928 ], [ %983, %982 ], [ %1028, %1027 ], [ %.pn997.pn.pn.pn, %1074 ], [ %.pn987.pn.pn, %1013 ], [ %985, %984 ], [ %.pn973.pn.pn, %1138 ], [ %1110, %1109 ], [ %1149, %1148 ], [ %1211, %1210 ], [ %.pn959.pn.pn.pn, %1259 ], [ %.pn949.pn.pn, %1197 ], [ %1169, %1168 ], [ %.pn935.pn.pn.pn.pn, %1359 ], [ %1304, %1303 ], [ %.pn924, %1302 ], [ %.pn881.pn.pn.pn.pn.pn.pn.pn.pn.pn, %1581 ], [ %.pn894, %1473 ], [ %.pn898, %1457 ], [ %1371, %1370 ], [ %1382, %1381 ], [ %.pn917, %1380 ], [ %1386, %1385 ], [ %1397, %1396 ], [ %.pn913, %1395 ], [ %.pn902, %1441 ], [ %.pn906, %1426 ], [ %1400, %1399 ], [ %1411, %1410 ], [ %.pn908, %1409 ], [ %1585, %1584 ], [ %1596, %1595 ], [ %.pn871, %1594 ], [ %1600, %1599 ], [ %1611, %1610 ], [ %.pn867, %1609 ], [ %1615, %1614 ], [ %1626, %1625 ], [ %.pn863, %1624 ], [ %1644, %1643 ], [ %1682, %1681 ], [ %.pn855, %1680 ], [ %.pn846.pn.pn.pn.pn.pn.pn.pn, %1782 ], [ %1675, %1674 ], [ %.pn824.pn.pn.pn, %1853 ], [ %.pn808.pn.pn.pn, %1931 ], [ %1943, %1942 ], [ %.pn795, %1941 ], [ %1664, %1663 ], [ %.pn793, %1662 ], [ %1979, %1978 ], [ %1991, %1990 ], [ %.pn781, %1989 ], [ %1995, %1994 ], [ %2007, %2006 ], [ %.pn777, %2005 ], [ %2011, %2010 ], [ %2023, %2022 ], [ %.pn773, %2021 ], [ %2027, %2026 ], [ %2038, %2037 ], [ %.pn769, %2036 ], [ %2042, %2041 ], [ %2053, %2052 ], [ %.pn, %2051 ], [ %lpad.loopexit1164, %.loopexit1162 ], [ %lpad.loopexit.split-lp1165, %.loopexit.split-lp1163 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br label %2059

2059:                                             ; preds = %2058, %460
  %.pn767.pn.pn.pn = phi { ptr, i32 } [ %.pn767.pn.pn, %2058 ], [ %461, %460 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  br label %2060

2060:                                             ; preds = %2059, %458
  %.pn767.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn767.pn.pn.pn, %2059 ], [ %459, %458 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  br label %2061

2061:                                             ; preds = %2060, %432
  %.pn767.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn767.pn.pn.pn.pn, %2060 ], [ %433, %432 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #9
  br label %2062

2062:                                             ; preds = %2061, %414
  %.pn767.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn767.pn.pn.pn.pn.pn, %2061 ], [ %415, %414 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #9
  resume { ptr, i32 } %.pn767.pn.pn.pn.pn.pn.pn

2063:                                             ; preds = %2046, %2031, %2016, %2000, %1984, %1965, %1949, %1700, %1632, %1619, %1604, %1589, %1515, %1480, %1463, %1447, %1431, %1416, %1404, %1390, %1375, %1297, %727, %549, %489, %474
  unreachable
}

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3MIRlsERSoRKNS_6LValueE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11PatternRule7is_BoolEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator7make_IfENS0_7Data_IfE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, ptr noundef) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant7as_UintEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK10MirBuilder11get_if_condEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(440)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue10make_BinOpENS0_10Data_BinOpE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) local_unnamed_addr #0 align 2

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

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

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

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

declare void @_ZN10MirBuilder14lvalue_or_tempERK4SpanRKN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZN4U1283maxEv() local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(20) ptr @_ZNK3MIR8Constant6as_IntEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4S128neERKS_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZN4S1283minEv() local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, i64 } @_ZN4S1283maxEv() local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK4U128geEj(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3MIR8Constant8as_FloatEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNSt14numeric_limitsIdE8infinityEv() local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11PatternRule8is_ValueEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3MIR6LValue8is_DerefEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3MIR8Constant15as_StaticStringB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11PatternRule10is_VariantEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK3HIR4Enum12num_variantsEv(ptr noundef nonnull align 8 dereferenceable(200)) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR10Terminator11make_SwitchENS0_11Data_SwitchE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Terminator") align 8, ptr noundef) local_unnamed_addr #0 align 2

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

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

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

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

declare noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZ42MIR_LowerHIR_Match_Simple__GeneratePatternR10MirBuilderRK4SpanPK11PatternRulejRKN3HIR7TypeRefERKN3MIR6LValueEjjENK4$_19clIS8_EEDaRKT_"(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue12new_DowncastES0_j(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef, i32 noundef) local_unnamed_addr #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11PatternRule8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11PatternRule13is_SplitSliceEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR6LValue15clone_unwrappedEj(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue12make_MakeDstENS0_12Data_MakeDstE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) local_unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) local_unnamed_addr #0 align 2

declare void @_ZNK10MirBuilder14get_ptr_to_dstERK4SpanRKN3MIR6LValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(440), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = { 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 #5 = { 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 #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 = { mustprogress 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!18, !10, i64 32}
!18 = !{!"_ZTSN3MIR10Terminator7Data_IfE", !19, i64 0, !10, i64 32, !10, i64 36}
!19 = !{!"_ZTSN3MIR6LValueE", !20, i64 0, !22, i64 8}
!20 = !{!"_ZTSN3MIR6LValue7StorageE", !21, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!18, !10, i64 36}
!27 = !{i64 0, i64 8, !28, i64 8, i64 8, !28}
!28 = !{!21, !21, i64 0}
!29 = !{!30, !12, i64 16}
!30 = !{!"_ZTSN3MIR8Constant9Data_UintE", !31, i64 0, !12, i64 16}
!31 = !{!"_ZTS4U128", !21, i64 0, !21, i64 8}
!32 = !{!33, !36, i64 48}
!33 = !{!"_ZTSN3MIR6RValue10Data_BinOpE", !34, i64 0, !36, i64 48, !34, i64 56}
!34 = !{!"_ZTSN3MIR5ParamE", !35, i64 0, !7, i64 8}
!35 = !{!"_ZTSN3MIR5Param3TagE", !7, i64 0}
!36 = !{!"_ZTSN3MIR6eBinOpE", !7, i64 0}
!37 = !{!38, !14, i64 80}
!38 = !{!"_ZTSN11PatternRule15Data_ValueRangeE", !39, i64 0, !39, i64 40, !14, i64 80}
!39 = !{!"_ZTSN3MIR8ConstantE", !40, i64 0, !7, i64 8}
!40 = !{!"_ZTSN3MIR8Constant3TagE", !7, i64 0}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = !{!44, !12, i64 16}
!44 = !{!"_ZTSN3MIR8Constant8Data_IntE", !45, i64 0, !12, i64 16}
!45 = !{!"_ZTS4S128", !31, i64 0}
!46 = distinct !{!46, !42}
!47 = !{!48, !49, i64 0}
!48 = !{!"_ZTSN3MIR8Constant10Data_FloatE", !49, i64 0, !12, i64 8}
!49 = !{!"double", !7, i64 0}
!50 = distinct !{!50, !42}
!51 = !{!52, !10, i64 0}
!52 = !{!"_ZTSN11PatternRule12Data_VariantE", !10, i64 0, !53, i64 8}
!53 = !{!"_ZTSSt6vectorI11PatternRuleSaIS0_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseI11PatternRuleSaIS0_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseI11PatternRuleSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!58, !10, i64 0}
!58 = !{!"_ZTSN11PatternRule10Data_SliceE", !10, i64 0, !53, i64 8}
!59 = !{!60, !10, i64 0}
!60 = !{!"_ZTSN11PatternRule15Data_SplitSliceE", !10, i64 0, !10, i64 4, !53, i64 8, !53, i64 32}
!61 = distinct !{!61, !42}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass