; LLVM IR from OAID/AutoKernel :: AutoSearch/src/adams2019 (LoopNest)

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

%"class.__gnu_cxx::__normal_iterator.54" = type { ptr }
%"class.Halide::Func" = type { %"class.Halide::Internal::Function", %"class.Halide::Pipeline" }
%"class.Halide::Internal::Function" = type { %"struct.Halide::Internal::FunctionPtr" }
%"struct.Halide::Internal::FunctionPtr" = type <{ %"struct.Halide::Internal::IntrusivePtr", ptr, i32, [4 x i8] }>
%"struct.Halide::Internal::IntrusivePtr" = type { ptr }
%"class.Halide::Pipeline" = type { %"struct.Halide::Internal::IntrusivePtr.150" }
%"struct.Halide::Internal::IntrusivePtr.150" = type { ptr }
%"class.Halide::LoopLevel" = type { %"struct.Halide::Internal::IntrusivePtr.149" }
%"struct.Halide::Internal::IntrusivePtr.149" = type { ptr }
%"class.Halide::Internal::Voidifier" = type { i8 }
%"struct.Halide::Internal::ErrorReport" = type <{ %"class.std::__cxx11::basic_ostringstream", i32, [4 x i8] }>
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar" = type <{ %"struct.Halide::VarOrRVar", %"struct.Halide::VarOrRVar", %"class.std::__cxx11::basic_string", i64, i64, i8, i8, i8, i8, i8, i8, [2 x i8] }>
%"struct.Halide::VarOrRVar" = type <{ %"class.Halide::Var", %"class.Halide::RVar", i8, [7 x i8] }>
%"class.Halide::Var" = type { %"class.std::__cxx11::basic_string" }
%"class.Halide::RVar" = type <{ %"class.std::__cxx11::basic_string", %"class.Halide::Internal::ReductionDomain", i32, [4 x i8] }>
%"class.Halide::Internal::ReductionDomain" = type { %"struct.Halide::Internal::IntrusivePtr.170" }
%"struct.Halide::Internal::IntrusivePtr.170" = type { ptr }
%"class.std::unique_ptr.157" = type { %"struct.std::__uniq_ptr_data.158" }
%"struct.std::__uniq_ptr_data.158" = type { %"class.std::__uniq_ptr_impl.159" }
%"class.std::__uniq_ptr_impl.159" = type { %"class.std::tuple.160" }
%"class.std::tuple.160" = type { %"struct.std::_Tuple_impl.161" }
%"struct.std::_Tuple_impl.161" = type { %"struct.std::_Head_base.164" }
%"struct.std::_Head_base.164" = type { ptr }
%"class.Halide::Stage" = type { %"class.Halide::Internal::Function", %"class.Halide::Internal::Definition", i64, %"class.std::vector.62" }
%"class.Halide::Internal::Definition" = type { %"struct.Halide::Internal::IntrusivePtr.61" }
%"struct.Halide::Internal::IntrusivePtr.61" = type { ptr }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.165" = type { %"struct.std::_Vector_base.166" }
%"struct.std::_Vector_base.166" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar, std::allocator<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar, std::allocator<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar, std::allocator<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar, std::allocator<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Halide::Expr" = type { %"struct.Halide::Internal::IRHandle" }
%"struct.Halide::Internal::IRHandle" = type { %"struct.Halide::Internal::IntrusivePtr.79" }
%"struct.Halide::Internal::IntrusivePtr.79" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.171" = type { ptr }
%class.anon.172 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.174" = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.71" = type { ptr }
%"struct.Halide::Internal::Autoscheduler::LoopNest" = type <{ %"class.Halide::Internal::RefCount", [4 x i8], %"class.std::vector.3", %"class.std::vector.8", %class.PerfectHashMap, %"class.std::set", %class.PerfectHashMap.21, ptr, ptr, i8, i8, i8, i8, i32, i32, [4 x i8] }>
%"class.Halide::Internal::RefCount" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>, std::allocator<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>, std::allocator<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>, std::allocator<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>, std::allocator<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.PerfectHashMap = type { %"class.std::vector.13", i32, i32 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, const Halide::Internal::Autoscheduler::FunctionDAG::Node *, std::_Identity<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::less<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, const Halide::Internal::Autoscheduler::FunctionDAG::Node *, std::_Identity<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::less<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.PerfectHashMap.21 = type { %"class.std::vector.22", i32, i32 }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node" = type { ptr, %"class.Halide::Internal::Function", double, %"class.std::vector.27", %"class.std::vector.32", %"class.std::vector.37", i8, %"class.std::vector.42", %"class.std::vector.47", i32, i32, i32, i32, i8, i8, i8, i8, i8, %"class.std::unique_ptr" }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.37" = type { %"struct.std::_Vector_base.38" }
%"struct.std::_Vector_base.38" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.42" = type { %"struct.std::_Vector_base.43" }
%"struct.std::_Vector_base.43" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.53" }
%"struct.std::_Head_base.53" = type { ptr }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage" = type { ptr, i32, %"class.std::vector.56", i8, i32, %"struct.Halide::Internal::PipelineFeatures", %"class.Halide::Stage", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.47", %"class.std::vector.67" }
%"class.std::vector.56" = type { %"struct.std::_Vector_base.57" }
%"struct.std::_Vector_base.57" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Halide::Internal::PipelineFeatures" = type { [7 x i32], [24 x [7 x i32]], [4 x [7 x i32]], [4 x [7 x i32]], [4 x [7 x i32]], [4 x [7 x i32]] }
%"class.std::vector.67" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState" = type { double, i32, i32, %"class.std::vector.165", %"class.std::__cxx11::basic_ostringstream" }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop" = type { %"class.std::__cxx11::basic_string", i8, i8, %"struct.Halide::Expr", %"struct.Halide::Expr", i32, i8, i32, i8, i64, i64, %"class.std::__cxx11::basic_string" }

@.str.3 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [12 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(380)) #4 align 2

declare void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #5

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

declare void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380)) unnamed_addr #5

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #6

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest21accesses_input_bufferEv(ptr noundef nonnull align 8 dereferenceable(196)) #3 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #7

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK6Halide8Internal13Autoscheduler8LoopNest5applyENS_9LoopLevelER14PerfectHashMapINS1_11FunctionDAG4Node5StageESt10unique_ptrINS2_18StageScheduleStateESt14default_deleteIS9_EELi4E22PerfectHashMapAsserterEdiPKS2_SH_(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(32) %2, double noundef %3, i32 noundef %4, ptr noundef %5, ptr noundef %6) #3 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca double, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.Halide::Func", align 8
  %20 = alloca %"class.Halide::Internal::Function", align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca %"class.Halide::LoopLevel", align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.Halide::Internal::Voidifier", align 1
  %26 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %27 = alloca i1, align 1
  %28 = alloca i1, align 1
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i64, align 8
  %33 = alloca %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"struct.Halide::VarOrRVar", align 8
  %36 = alloca ptr, align 8
  %37 = alloca i32, align 4
  %38 = alloca %"class.std::unique_ptr.157", align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.Halide::Stage", align 8
  %41 = alloca %"class.Halide::Func", align 8
  %42 = alloca %"class.Halide::Internal::Function", align 8
  %43 = alloca %"class.Halide::Stage", align 8
  %44 = alloca %"class.Halide::Func", align 8
  %45 = alloca %"class.Halide::Internal::Function", align 8
  %46 = alloca double, align 8
  %47 = alloca i32, align 4
  %48 = alloca ptr, align 8
  %49 = alloca %"class.Halide::Func", align 8
  %50 = alloca %"class.Halide::Internal::Function", align 8
  %51 = alloca i32, align 4
  %52 = alloca i64, align 8
  %53 = alloca ptr, align 8
  %54 = alloca %"class.Halide::Internal::Voidifier", align 1
  %55 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %56 = alloca i1, align 1
  %57 = alloca i1, align 1
  %58 = alloca %"struct.Halide::VarOrRVar", align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %64 = alloca i32, align 4
  %65 = alloca ptr, align 8
  %66 = alloca %"class.std::vector.165", align 8
  %67 = alloca i64, align 8
  %68 = alloca %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", align 8
  %69 = alloca ptr, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca %"struct.Halide::VarOrRVar", align 8
  %73 = alloca %"class.Halide::Var", align 8
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"struct.Halide::VarOrRVar", align 8
  %76 = alloca %"class.Halide::RVar", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca i32, align 4
  %79 = alloca %"struct.Halide::VarOrRVar", align 8
  %80 = alloca %"struct.Halide::VarOrRVar", align 8
  %81 = alloca %"struct.Halide::VarOrRVar", align 8
  %82 = alloca %"struct.Halide::Expr", align 8
  %83 = alloca i64, align 8
  %84 = alloca i8, align 1
  %85 = alloca i64, align 8
  %86 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %87 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %88 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %89 = alloca %class.anon.172, align 1
  %90 = alloca i64, align 8
  %91 = alloca %"struct.Halide::VarOrRVar", align 8
  %92 = alloca i8, align 1
  %93 = alloca ptr, align 8
  %94 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %95 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %96 = alloca ptr, align 8
  %97 = alloca %"class.Halide::LoopLevel", align 8
  %98 = alloca %"struct.Halide::VarOrRVar", align 8
  %99 = alloca %"class.Halide::LoopLevel", align 8
  %100 = alloca %"struct.Halide::VarOrRVar", align 8
  %101 = alloca %"class.Halide::Var", align 8
  %102 = alloca %"class.__gnu_cxx::__normal_iterator.174", align 8
  %103 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %104 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %105 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %106 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %107 = alloca %"class.Halide::Internal::Voidifier", align 1
  %108 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %109 = alloca i1, align 1
  %110 = alloca i1, align 1
  %111 = alloca %"class.Halide::Internal::Voidifier", align 1
  %112 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %113 = alloca i1, align 1
  %114 = alloca i1, align 1
  %115 = alloca ptr, align 8
  %116 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %117 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %118 = alloca ptr, align 8
  %119 = alloca %"class.Halide::Func", align 8
  %120 = alloca %"class.Halide::Internal::Function", align 8
  %121 = alloca %"class.Halide::LoopLevel", align 8
  %122 = alloca ptr, align 8
  %123 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %124 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %125 = alloca i64, align 8
  %126 = alloca %"class.std::__cxx11::basic_string", align 8
  %127 = alloca %"class.std::__cxx11::basic_string", align 8
  %128 = alloca %"class.std::__cxx11::basic_string", align 8
  %129 = alloca %"class.std::__cxx11::basic_string", align 8
  %130 = alloca %"class.std::__cxx11::basic_string", align 8
  %131 = alloca %"class.std::__cxx11::basic_string", align 8
  %132 = alloca %"struct.Halide::VarOrRVar", align 8
  %133 = alloca ptr, align 8
  %134 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %135 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %136 = alloca ptr, align 8
  %137 = alloca %"class.Halide::Func", align 8
  %138 = alloca %"class.Halide::Internal::Function", align 8
  %139 = alloca %"class.Halide::LoopLevel", align 8
  %140 = alloca %"class.Halide::LoopLevel", align 8
  %141 = alloca ptr, align 8
  %142 = alloca ptr, align 8
  %143 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %144 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %145 = alloca ptr, align 8
  %146 = alloca i8, align 1
  %147 = alloca ptr, align 8
  %148 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %149 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %150 = alloca ptr, align 8
  %151 = alloca ptr, align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store double %3, ptr %11, align 8, !tbaa !9
  store i32 %4, ptr %12, align 4, !tbaa !11
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  %152 = load ptr, ptr %8, align 8
  %153 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %152)
  br i1 %153, label %154, label %219

154:                                              ; preds = %7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %155 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 3
  store ptr %155, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %156 = load ptr, ptr %15, align 8, !tbaa !5
  %157 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %156) #10
  %158 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %16, i32 0, i32 0
  store ptr %157, ptr %158, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  %159 = load ptr, ptr %15, align 8, !tbaa !5
  %160 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %159) #10
  %161 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %17, i32 0, i32 0
  store ptr %160, ptr %161, align 8
  br label %162

162:                                              ; preds = %215, %154
  %163 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  br i1 %163, label %165, label %164

164:                                              ; preds = %162
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %218

165:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  store ptr %166, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #10
  %167 = load ptr, ptr %18, align 8, !tbaa !5
  %168 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %167)
  %169 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %168, i32 0, i32 7
  %170 = load ptr, ptr %169, align 8, !tbaa !13
  %171 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %170, i32 0, i32 1
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %171) #10
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %20)
          to label %172 unwind label %201

172:                                              ; preds = %165
  %173 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func12compute_rootEv(ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %174 unwind label %205

174:                                              ; preds = %172
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #10
  %175 = load ptr, ptr %18, align 8, !tbaa !5
  %176 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %175)
  call void @_ZN6Halide9LoopLevel4rootEv(ptr dead_on_unwind writable sret(%"class.Halide::LoopLevel") align 8 %23)
  %177 = load ptr, ptr %10, align 8, !tbaa !5
  %178 = load double, ptr %11, align 8, !tbaa !9
  %179 = load ptr, ptr %18, align 8, !tbaa !5
  %180 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %179)
          to label %181 unwind label %210

181:                                              ; preds = %174
  invoke void @_ZNK6Halide8Internal13Autoscheduler8LoopNest5applyENS_9LoopLevelER14PerfectHashMapINS1_11FunctionDAG4Node5StageESt10unique_ptrINS2_18StageScheduleStateESt14default_deleteIS9_EELi4E22PerfectHashMapAsserterEdiPKS2_SH_(ptr noundef nonnull align 8 dereferenceable(196) %176, ptr noundef %23, ptr noundef nonnull align 8 dereferenceable(32) %177, double noundef %178, i32 noundef 1, ptr noundef %152, ptr noundef %180)
          to label %182 unwind label %210

182:                                              ; preds = %181
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  %183 = load ptr, ptr %18, align 8, !tbaa !5
  %184 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %183)
  %185 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %184, i32 0, i32 8
  %186 = load ptr, ptr %185, align 8, !tbaa !48
  %187 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %186, i32 0, i32 1
  %188 = load i32, ptr %187, align 8, !tbaa !49
  %189 = icmp eq i32 %188, 0
  br i1 %189, label %190, label %214

190:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %191 = load ptr, ptr %10, align 8, !tbaa !5
  %192 = load ptr, ptr %18, align 8, !tbaa !5
  %193 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %192)
  %194 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %193, i32 0, i32 8
  %195 = load ptr, ptr %194, align 8, !tbaa !48
  %196 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %191, ptr noundef %195)
  store ptr %196, ptr %24, align 8, !tbaa !5
  %197 = load ptr, ptr %24, align 8, !tbaa !5
  %198 = call noundef ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %197) #10
  %199 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %198, i32 0, i32 4
  %200 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef @.str.40)
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  br label %214

201:                                              ; preds = %165
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %21, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %22, align 4
  br label %209

205:                                              ; preds = %172
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %21, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %22, align 4
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  br label %209

209:                                              ; preds = %205, %201
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #10
  br label %217

210:                                              ; preds = %181, %174
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %21, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %22, align 4
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  br label %217

214:                                              ; preds = %190, %182
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  br label %215

215:                                              ; preds = %214
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %162

217:                                              ; preds = %210, %209
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %1631

218:                                              ; preds = %164
  br label %1630

219:                                              ; preds = %7
  %220 = load ptr, ptr %13, align 8, !tbaa !5
  %221 = icmp ne ptr %220, null
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #10
  store i1 false, ptr %27, align 1
  store i1 false, ptr %28, align 1
  br i1 %221, label %222, label %223

222:                                              ; preds = %219
  br label %227

223:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 384, ptr %26) #10
  store i1 true, ptr %27, align 1
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %26, ptr noundef @.str.3, i32 noundef 1577, ptr noundef @.str.26, i32 noundef 0)
  store i1 true, ptr %28, align 1
  %224 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %26)
          to label %225 unwind label %241

225:                                              ; preds = %223
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %25, ptr noundef nonnull align 8 dereferenceable(380) %224)
          to label %226 unwind label %241

226:                                              ; preds = %225
  br label %227

227:                                              ; preds = %226, %222
  %228 = load i1, ptr %28, align 1
  br i1 %228, label %229, label %230

229:                                              ; preds = %227
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %26)
  br label %230

230:                                              ; preds = %229, %227
  %231 = load i1, ptr %27, align 1
  br i1 %231, label %232, label %233

232:                                              ; preds = %230
  call void @llvm.lifetime.end.p0(i64 384, ptr %26) #10
  br label %233

233:                                              ; preds = %232, %230
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #10
  %234 = load ptr, ptr %13, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %234, i32 0, i32 7
  %236 = load ptr, ptr %235, align 8, !tbaa !13
  %237 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %238 = load ptr, ptr %237, align 8, !tbaa !13
  %239 = icmp ne ptr %236, %238
  br i1 %239, label %240, label %252

240:                                              ; preds = %233
  store ptr %152, ptr %14, align 8, !tbaa !5
  br label %252

241:                                              ; preds = %225, %223
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %21, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %22, align 4
  %245 = load i1, ptr %28, align 1
  br i1 %245, label %246, label %248

246:                                              ; preds = %241
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %26)
          to label %247 unwind label %1636

247:                                              ; preds = %246
  br label %248

248:                                              ; preds = %247, %241
  %249 = load i1, ptr %27, align 1
  br i1 %249, label %250, label %251

250:                                              ; preds = %248
  call void @llvm.lifetime.end.p0(i64 384, ptr %26) #10
  br label %251

251:                                              ; preds = %250, %248
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #10
  br label %1631

252:                                              ; preds = %240, %233
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %253 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 8
  %254 = load ptr, ptr %253, align 8, !tbaa !48
  %255 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %254, i32 0, i32 2
  store ptr %255, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %256 = load ptr, ptr %13, align 8, !tbaa !5
  %257 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %258 = load ptr, ptr %257, align 8, !tbaa !13
  %259 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %256, ptr noundef %258)
  store ptr %259, ptr %30, align 8, !tbaa !5
  %260 = load ptr, ptr %10, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 8
  %262 = load ptr, ptr %261, align 8, !tbaa !48
  %263 = call noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE8containsEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %260, ptr noundef %262)
  br i1 %263, label %425, label %264

264:                                              ; preds = %252
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %265 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 416) #11
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateC2Ev(ptr noundef nonnull align 8 dereferenceable(416) %265)
          to label %266 unwind label %284

266:                                              ; preds = %264
  store ptr %265, ptr %31, align 8, !tbaa !5
  %267 = load double, ptr %11, align 8, !tbaa !9
  %268 = load ptr, ptr %31, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %268, i32 0, i32 0
  store double %267, ptr %269, align 8, !tbaa !78
  %270 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 13
  %271 = load i32, ptr %270, align 4, !tbaa !90
  %272 = load ptr, ptr %31, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %272, i32 0, i32 1
  store i32 %271, ptr %273, align 8, !tbaa !91
  %274 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 14
  %275 = load i32, ptr %274, align 8, !tbaa !92
  %276 = load ptr, ptr %31, align 8, !tbaa !5
  %277 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %276, i32 0, i32 2
  store i32 %275, ptr %277, align 4, !tbaa !93
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  store i64 0, ptr %32, align 8, !tbaa !94
  br label %278

278:                                              ; preds = %363, %266
  %279 = load i64, ptr %32, align 8, !tbaa !94
  %280 = load ptr, ptr %29, align 8, !tbaa !5
  %281 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %280) #10
  %282 = icmp ult i64 %279, %281
  br i1 %282, label %288, label %283

283:                                              ; preds = %278
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %379

284:                                              ; preds = %264
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %21, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %22, align 4
  call void @_ZdlPvm(ptr noundef %265, i64 noundef 416) #12
  br label %424

288:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 232, ptr %33) #10
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarC2Ev(ptr noundef nonnull align 8 dereferenceable(230) %33)
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %289 = load ptr, ptr %29, align 8, !tbaa !5
  %290 = load i64, ptr %32, align 8, !tbaa !94
  %291 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %289, i64 noundef %290) #10
  store ptr %291, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 88, ptr %35) #10
  %292 = load ptr, ptr %34, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %292, i32 0, i32 0
  %294 = load ptr, ptr %34, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %294, i32 0, i32 1
  %296 = load i8, ptr %295, align 8, !tbaa !95, !range !100, !noundef !101
  %297 = trunc i8 %296 to i1
  %298 = xor i1 %297, true
  invoke void @_ZN6Halide9VarOrRVarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(81) %35, ptr noundef nonnull align 8 dereferenceable(32) %293, i1 noundef zeroext %298)
          to label %299 unwind label %366

299:                                              ; preds = %288
  %300 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 1
  %301 = call noundef nonnull align 8 dereferenceable(81) ptr @_ZN6Halide9VarOrRVaraSEOS0_(ptr noundef nonnull align 8 dereferenceable(81) %300, ptr noundef nonnull align 8 dereferenceable(81) %35) #10
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %35) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr %35) #10
  %302 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 1
  %303 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 0
  %304 = invoke noundef nonnull align 8 dereferenceable(81) ptr @_ZN6Halide9VarOrRVaraSERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %303, ptr noundef nonnull align 8 dereferenceable(81) %302)
          to label %305 unwind label %370

305:                                              ; preds = %299
  %306 = load ptr, ptr %34, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %306, i32 0, i32 11
  %308 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 2
  %309 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %308, ptr noundef nonnull align 8 dereferenceable(32) %307)
          to label %310 unwind label %370

310:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  %311 = load ptr, ptr %30, align 8, !tbaa !5
  %312 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %311)
          to label %313 unwind label %374

313:                                              ; preds = %310
  %314 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 8
  %315 = load ptr, ptr %314, align 8, !tbaa !48
  %316 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %315, i32 0, i32 1
  %317 = load i32, ptr %316, align 8, !tbaa !49
  %318 = load i64, ptr %32, align 8, !tbaa !94
  %319 = trunc i64 %318 to i32
  %320 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %312, i32 noundef %317, i32 noundef %319)
          to label %321 unwind label %374

321:                                              ; preds = %313
  store ptr %320, ptr %36, align 8, !tbaa !5
  %322 = load ptr, ptr %36, align 8, !tbaa !5
  %323 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %322)
          to label %324 unwind label %374

324:                                              ; preds = %321
  %325 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 3
  store i64 %323, ptr %325, align 8, !tbaa !102
  %326 = load ptr, ptr %36, align 8, !tbaa !5
  %327 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler4Span15constant_extentEv(ptr noundef nonnull align 8 dereferenceable(17) %326)
          to label %328 unwind label %374

328:                                              ; preds = %324
  %329 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 10
  %330 = zext i1 %327 to i8
  store i8 %330, ptr %329, align 1, !tbaa !109
  %331 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 6
  store i8 1, ptr %331, align 1, !tbaa !110
  %332 = load ptr, ptr %34, align 8, !tbaa !5
  %333 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %332, i32 0, i32 1
  %334 = load i8, ptr %333, align 8, !tbaa !95, !range !100, !noundef !101
  %335 = trunc i8 %334 to i1
  br i1 %335, label %336, label %340

336:                                              ; preds = %328
  %337 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 11
  %338 = load i8, ptr %337, align 2, !tbaa !111, !range !100, !noundef !101
  %339 = trunc i8 %338 to i1
  br label %340

340:                                              ; preds = %336, %328
  %341 = phi i1 [ false, %328 ], [ %339, %336 ]
  %342 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 7
  %343 = zext i1 %341 to i8
  store i8 %343, ptr %342, align 2, !tbaa !112
  %344 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 8
  store i8 1, ptr %344, align 1, !tbaa !113
  %345 = load ptr, ptr %34, align 8, !tbaa !5
  %346 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %345, i32 0, i32 1
  %347 = load i8, ptr %346, align 8, !tbaa !95, !range !100, !noundef !101
  %348 = trunc i8 %347 to i1
  %349 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 9
  %350 = zext i1 %348 to i8
  store i8 %350, ptr %349, align 4, !tbaa !114
  %351 = load i64, ptr %32, align 8, !tbaa !94
  %352 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 4
  store i64 %351, ptr %352, align 8, !tbaa !115
  %353 = load i64, ptr %32, align 8, !tbaa !94
  %354 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 14
  %355 = load i32, ptr %354, align 8, !tbaa !92
  %356 = sext i32 %355 to i64
  %357 = icmp eq i64 %353, %356
  %358 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %33, i32 0, i32 5
  %359 = zext i1 %357 to i8
  store i8 %359, ptr %358, align 8, !tbaa !116
  %360 = load ptr, ptr %31, align 8, !tbaa !5
  %361 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %360, i32 0, i32 3
  invoke void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %361, ptr noundef nonnull align 8 dereferenceable(230) %33)
          to label %362 unwind label %374

362:                                              ; preds = %340
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarD2Ev(ptr noundef nonnull align 8 dereferenceable(230) %33) #10
  call void @llvm.lifetime.end.p0(i64 232, ptr %33) #10
  br label %363

363:                                              ; preds = %362
  %364 = load i64, ptr %32, align 8, !tbaa !94
  %365 = add i64 %364, 1
  store i64 %365, ptr %32, align 8, !tbaa !94
  br label %278, !llvm.loop !117

366:                                              ; preds = %288
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %21, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 88, ptr %35) #10
  br label %378

370:                                              ; preds = %305, %299
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %21, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %22, align 4
  br label %378

374:                                              ; preds = %340, %324, %321, %313, %310
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %21, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %378

378:                                              ; preds = %374, %370, %366
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarD2Ev(ptr noundef nonnull align 8 dereferenceable(230) %33) #10
  call void @llvm.lifetime.end.p0(i64 232, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %424

379:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  %380 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 14
  %381 = load i32, ptr %380, align 8, !tbaa !92
  %382 = sub nsw i32 %381, 1
  store i32 %382, ptr %37, align 4, !tbaa !11
  br label %383

383:                                              ; preds = %410, %379
  %384 = load i32, ptr %37, align 4, !tbaa !11
  %385 = icmp sge i32 %384, 0
  br i1 %385, label %386, label %395

386:                                              ; preds = %383
  %387 = load ptr, ptr %31, align 8, !tbaa !5
  %388 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %387, i32 0, i32 3
  %389 = load i32, ptr %37, align 4, !tbaa !11
  %390 = sext i32 %389 to i64
  %391 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %388, i64 noundef %390) #10
  %392 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %391, i32 0, i32 9
  %393 = load i8, ptr %392, align 4, !tbaa !114, !range !100, !noundef !101
  %394 = trunc i8 %393 to i1
  br label %395

395:                                              ; preds = %386, %383
  %396 = phi i1 [ false, %383 ], [ %394, %386 ]
  br i1 %396, label %398, label %397

397:                                              ; preds = %395
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %413

398:                                              ; preds = %395
  %399 = load ptr, ptr %31, align 8, !tbaa !5
  %400 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %399, i32 0, i32 3
  %401 = load i32, ptr %37, align 4, !tbaa !11
  %402 = sext i32 %401 to i64
  %403 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %400, i64 noundef %402) #10
  %404 = load ptr, ptr %31, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %404, i32 0, i32 3
  %406 = load i32, ptr %37, align 4, !tbaa !11
  %407 = add nsw i32 %406, 1
  %408 = sext i32 %407 to i64
  %409 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %405, i64 noundef %408) #10
  call void @_ZSt4swapIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS9_ESt18is_move_assignableIS9_EEE5valueEvE4typeERS9_SI_(ptr noundef nonnull align 8 dereferenceable(230) %403, ptr noundef nonnull align 8 dereferenceable(230) %409) #10
  br label %410

410:                                              ; preds = %398
  %411 = load i32, ptr %37, align 4, !tbaa !11
  %412 = add nsw i32 %411, -1
  store i32 %412, ptr %37, align 4, !tbaa !11
  br label %383, !llvm.loop !119

413:                                              ; preds = %397
  %414 = load ptr, ptr %10, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 8
  %416 = load ptr, ptr %415, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %417 = load ptr, ptr %31, align 8, !tbaa !5
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EEC2IS6_vEEPS4_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef %417) #10
  %418 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE7emplaceEPKS5_OSB_(ptr noundef nonnull align 8 dereferenceable(32) %414, ptr noundef %416, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %419 unwind label %420

419:                                              ; preds = %413
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %425

420:                                              ; preds = %413
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %21, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %22, align 4
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %424

424:                                              ; preds = %420, %378, %284
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %1629

425:                                              ; preds = %419, %252
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %426 = load ptr, ptr %10, align 8, !tbaa !5
  %427 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 8
  %428 = load ptr, ptr %427, align 8, !tbaa !48
  %429 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %426, ptr noundef %428)
  %430 = call noundef nonnull align 8 dereferenceable(416) ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %429) #10
  store ptr %430, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %40) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #10
  %431 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %432 = load ptr, ptr %431, align 8, !tbaa !13
  %433 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %432, i32 0, i32 1
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %433) #10
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef %42)
          to label %434 unwind label %453

434:                                              ; preds = %425
  invoke void @_ZNK6Halide4FunccvNS_5StageEEv(ptr dead_on_unwind writable sret(%"class.Halide::Stage") align 8 %40, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %435 unwind label %457

435:                                              ; preds = %434
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #10
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #10
  %436 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 8
  %437 = load ptr, ptr %436, align 8, !tbaa !48
  %438 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %437, i32 0, i32 1
  %439 = load i32, ptr %438, align 8, !tbaa !49
  %440 = icmp sgt i32 %439, 0
  br i1 %440, label %441, label %471

441:                                              ; preds = %435
  call void @llvm.lifetime.start.p0(i64 64, ptr %43) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #10
  %442 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %443 = load ptr, ptr %442, align 8, !tbaa !13
  %444 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %443, i32 0, i32 1
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 8 dereferenceable(24) %444) #10
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef %45)
          to label %445 unwind label %462

445:                                              ; preds = %441
  %446 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 8
  %447 = load ptr, ptr %446, align 8, !tbaa !48
  %448 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %447, i32 0, i32 1
  %449 = load i32, ptr %448, align 8, !tbaa !49
  %450 = sub nsw i32 %449, 1
  invoke void @_ZN6Halide4Func6updateEi(ptr dead_on_unwind writable sret(%"class.Halide::Stage") align 8 %43, ptr noundef nonnull align 8 dereferenceable(32) %44, i32 noundef %450)
          to label %451 unwind label %466

451:                                              ; preds = %445
  %452 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5StageaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %40, ptr noundef nonnull align 8 dereferenceable(64) %43) #10
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %43) #10
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #10
  br label %471

453:                                              ; preds = %425
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %21, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %22, align 4
  br label %461

457:                                              ; preds = %434
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %21, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %22, align 4
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #10
  br label %461

461:                                              ; preds = %457, %453
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #10
  br label %1628

462:                                              ; preds = %441
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %21, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %22, align 4
  br label %470

466:                                              ; preds = %445
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %21, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %22, align 4
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  br label %470

470:                                              ; preds = %466, %462
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #10
  br label %1627

471:                                              ; preds = %451, %435
  %472 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 8
  %473 = load ptr, ptr %472, align 8, !tbaa !48
  %474 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %473, i32 0, i32 1
  %475 = load i32, ptr %474, align 8, !tbaa !49
  %476 = icmp eq i32 %475, 0
  br i1 %476, label %477, label %549

477:                                              ; preds = %471
  %478 = load ptr, ptr %13, align 8, !tbaa !5
  %479 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %478, i32 0, i32 7
  %480 = load ptr, ptr %479, align 8, !tbaa !13
  %481 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %482 = load ptr, ptr %481, align 8, !tbaa !13
  %483 = icmp ne ptr %480, %482
  br i1 %483, label %484, label %549

484:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %485 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %486 = load ptr, ptr %485, align 8, !tbaa !13
  %487 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %486, i32 0, i32 2
  %488 = load double, ptr %487, align 8, !tbaa !120
  store double %488, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  store i32 0, ptr %47, align 4, !tbaa !11
  br label %489

489:                                              ; preds = %510, %484
  %490 = load i32, ptr %47, align 4, !tbaa !11
  %491 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %492 = load ptr, ptr %491, align 8, !tbaa !13
  %493 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %492, i32 0, i32 12
  %494 = load i32, ptr %493, align 4, !tbaa !144
  %495 = icmp slt i32 %490, %494
  br i1 %495, label %497, label %496

496:                                              ; preds = %489
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %517

497:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  %498 = load ptr, ptr %30, align 8, !tbaa !5
  %499 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %498)
          to label %500 unwind label %513

500:                                              ; preds = %497
  %501 = load i32, ptr %47, align 4, !tbaa !11
  %502 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %499, i32 noundef %501)
          to label %503 unwind label %513

503:                                              ; preds = %500
  store ptr %502, ptr %48, align 8, !tbaa !5
  %504 = load ptr, ptr %48, align 8, !tbaa !5
  %505 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %504)
          to label %506 unwind label %513

506:                                              ; preds = %503
  %507 = sitofp i64 %505 to double
  %508 = load double, ptr %46, align 8, !tbaa !9
  %509 = fmul double %508, %507
  store double %509, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  br label %510

510:                                              ; preds = %506
  %511 = load i32, ptr %47, align 4, !tbaa !11
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr %47, align 4, !tbaa !11
  br label %489, !llvm.loop !145

513:                                              ; preds = %503, %500, %497
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %21, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %548

517:                                              ; preds = %496
  %518 = load double, ptr %46, align 8, !tbaa !9
  %519 = fcmp olt double %518, 6.400000e+04
  br i1 %519, label %520, label %547

520:                                              ; preds = %517
  %521 = load i32, ptr %12, align 4, !tbaa !11
  %522 = icmp sgt i32 %521, 2
  br i1 %522, label %523, label %547

523:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 32, ptr %49) #10
  %524 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %525 = load ptr, ptr %524, align 8, !tbaa !13
  %526 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %525, i32 0, i32 1
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 8 dereferenceable(24) %526) #10
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef %50)
          to label %527 unwind label %534

527:                                              ; preds = %523
  %528 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func8store_inENS_10MemoryTypeE(ptr noundef nonnull align 8 dereferenceable(32) %49, i32 noundef 2)
          to label %529 unwind label %538

529:                                              ; preds = %527
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #10
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #10
  %530 = load ptr, ptr %39, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %530, i32 0, i32 4
  %532 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %531, ptr noundef @.str.41)
          to label %533 unwind label %543

533:                                              ; preds = %529
  br label %547

534:                                              ; preds = %523
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %21, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %22, align 4
  br label %542

538:                                              ; preds = %527
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %21, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %22, align 4
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #10
  br label %542

542:                                              ; preds = %538, %534
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %49) #10
  br label %548

543:                                              ; preds = %529
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %21, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %22, align 4
  br label %548

547:                                              ; preds = %533, %520, %517
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %549

548:                                              ; preds = %543, %542, %513
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %1627

549:                                              ; preds = %547, %477, %471
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  store i32 3, ptr %51, align 4, !tbaa !146
  %550 = load ptr, ptr %14, align 8, !tbaa !5
  %551 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest21accesses_input_bufferEv(ptr noundef nonnull align 8 dereferenceable(196) %550)
          to label %552 unwind label %560

552:                                              ; preds = %549
  br i1 %551, label %564, label %553

553:                                              ; preds = %552
  %554 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %555 = load ptr, ptr %554, align 8, !tbaa !13
  %556 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %555, i32 0, i32 15
  %557 = load i8, ptr %556, align 2, !tbaa !148, !range !100, !noundef !101
  %558 = trunc i8 %557 to i1
  br i1 %558, label %564, label %559

559:                                              ; preds = %553
  store i32 0, ptr %51, align 4, !tbaa !146
  br label %573

560:                                              ; preds = %1396, %549
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %21, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %22, align 4
  br label %1626

564:                                              ; preds = %553, %552
  %565 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 8
  %566 = load ptr, ptr %565, align 8, !tbaa !48
  %567 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %566, i32 0, i32 1
  %568 = load i32, ptr %567, align 8, !tbaa !49
  %569 = icmp eq i32 %568, 0
  br i1 %569, label %570, label %571

570:                                              ; preds = %564
  store i32 2, ptr %51, align 4, !tbaa !146
  br label %572

571:                                              ; preds = %564
  store i32 1, ptr %51, align 4, !tbaa !146
  br label %572

572:                                              ; preds = %571, %570
  br label %573

573:                                              ; preds = %572, %559
  %574 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 2
  %575 = call noundef zeroext i1 @_ZNKSt6vectorIlSaIlEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %574) #10
  br i1 %575, label %1277, label %576

576:                                              ; preds = %573
  %577 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 9
  %578 = load i8, ptr %577, align 8, !tbaa !149, !range !100, !noundef !101
  %579 = trunc i8 %578 to i1
  br i1 %579, label %580, label %676

580:                                              ; preds = %576
  %581 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 14
  %582 = load i32, ptr %581, align 8, !tbaa !92
  %583 = icmp sge i32 %582, 0
  br i1 %583, label %584, label %675

584:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  store i64 0, ptr %52, align 8, !tbaa !94
  br label %585

585:                                              ; preds = %594, %584
  %586 = load ptr, ptr %39, align 8, !tbaa !5
  %587 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %586, i32 0, i32 3
  %588 = load i64, ptr %52, align 8, !tbaa !94
  %589 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %587, i64 noundef %588) #10
  %590 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %589, i32 0, i32 5
  %591 = load i8, ptr %590, align 8, !tbaa !116, !range !100, !noundef !101
  %592 = trunc i8 %591 to i1
  %593 = xor i1 %592, true
  br i1 %593, label %594, label %597

594:                                              ; preds = %585
  %595 = load i64, ptr %52, align 8, !tbaa !94
  %596 = add i64 %595, 1
  store i64 %596, ptr %52, align 8, !tbaa !94
  br label %585, !llvm.loop !150

597:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  %598 = load ptr, ptr %39, align 8, !tbaa !5
  %599 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %598, i32 0, i32 3
  %600 = load i64, ptr %52, align 8, !tbaa !94
  %601 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %599, i64 noundef %600) #10
  store ptr %601, ptr %53, align 8, !tbaa !5
  %602 = load ptr, ptr %53, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %602, i32 0, i32 5
  %604 = load i8, ptr %603, align 8, !tbaa !116, !range !100, !noundef !101
  %605 = trunc i8 %604 to i1
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #10
  store i1 false, ptr %56, align 1
  store i1 false, ptr %57, align 1
  br i1 %605, label %606, label %612

606:                                              ; preds = %597
  %607 = load ptr, ptr %53, align 8, !tbaa !5
  %608 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %607, i32 0, i32 8
  %609 = load i8, ptr %608, align 1, !tbaa !113, !range !100, !noundef !101
  %610 = trunc i8 %609 to i1
  br i1 %610, label %611, label %612

611:                                              ; preds = %606
  br label %625

612:                                              ; preds = %606, %597
  call void @llvm.lifetime.start.p0(i64 384, ptr %55) #10
  store i1 true, ptr %56, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %55, ptr noundef @.str.3, i32 noundef 1665, ptr noundef @.str.42, i32 noundef 0)
          to label %613 unwind label %650

613:                                              ; preds = %612
  store i1 true, ptr %57, align 1
  %614 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %55)
          to label %615 unwind label %654

615:                                              ; preds = %613
  %616 = load ptr, ptr %53, align 8, !tbaa !5
  %617 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %616, i32 0, i32 1
  %618 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %617)
          to label %619 unwind label %654

619:                                              ; preds = %615
  %620 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %614, ptr noundef nonnull align 8 dereferenceable(32) %618)
          to label %621 unwind label %654

621:                                              ; preds = %619
  %622 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %620, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %623 unwind label %654

623:                                              ; preds = %621
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %54, ptr noundef nonnull align 8 dereferenceable(380) %622)
          to label %624 unwind label %654

624:                                              ; preds = %623
  br label %625

625:                                              ; preds = %624, %611
  %626 = load i1, ptr %57, align 1
  br i1 %626, label %627, label %629

627:                                              ; preds = %625
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %55)
          to label %628 unwind label %650

628:                                              ; preds = %627
  br label %629

629:                                              ; preds = %628, %625
  %630 = load i1, ptr %56, align 1
  br i1 %630, label %631, label %632

631:                                              ; preds = %629
  call void @llvm.lifetime.end.p0(i64 384, ptr %55) #10
  br label %632

632:                                              ; preds = %631, %629
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #10
  %633 = load ptr, ptr %39, align 8, !tbaa !5
  %634 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %633, i32 0, i32 4
  %635 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %634, ptr noundef @.str.43)
          to label %636 unwind label %666

636:                                              ; preds = %632
  %637 = load ptr, ptr %53, align 8, !tbaa !5
  %638 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %637, i32 0, i32 1
  %639 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %638)
          to label %640 unwind label %666

640:                                              ; preds = %636
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %635, ptr noundef nonnull align 8 dereferenceable(32) %639)
          to label %642 unwind label %666

642:                                              ; preds = %640
  %643 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %641, ptr noundef @.str.31)
          to label %644 unwind label %666

644:                                              ; preds = %642
  %645 = load ptr, ptr %53, align 8, !tbaa !5
  %646 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %645, i32 0, i32 1
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %58, ptr noundef nonnull align 8 dereferenceable(81) %646)
          to label %647 unwind label %666

647:                                              ; preds = %644
  %648 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage9vectorizeENS_9VarOrRVarE(ptr noundef nonnull align 8 dereferenceable(64) %40, ptr noundef %58)
          to label %649 unwind label %670

649:                                              ; preds = %647
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %58) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %675

650:                                              ; preds = %627, %612
  %651 = landingpad { ptr, i32 }
          cleanup
  %652 = extractvalue { ptr, i32 } %651, 0
  store ptr %652, ptr %21, align 8
  %653 = extractvalue { ptr, i32 } %651, 1
  store i32 %653, ptr %22, align 4
  br label %662

654:                                              ; preds = %623, %621, %619, %615, %613
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %21, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %22, align 4
  %658 = load i1, ptr %57, align 1
  br i1 %658, label %659, label %661

659:                                              ; preds = %654
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %55)
          to label %660 unwind label %1636

660:                                              ; preds = %659
  br label %661

661:                                              ; preds = %660, %654
  br label %662

662:                                              ; preds = %661, %650
  %663 = load i1, ptr %56, align 1
  br i1 %663, label %664, label %665

664:                                              ; preds = %662
  call void @llvm.lifetime.end.p0(i64 384, ptr %55) #10
  br label %665

665:                                              ; preds = %664, %662
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #10
  br label %674

666:                                              ; preds = %644, %642, %640, %636, %632
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %21, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %22, align 4
  br label %674

670:                                              ; preds = %647
  %671 = landingpad { ptr, i32 }
          cleanup
  %672 = extractvalue { ptr, i32 } %671, 0
  store ptr %672, ptr %21, align 8
  %673 = extractvalue { ptr, i32 } %671, 1
  store i32 %673, ptr %22, align 4
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %58) #10
  br label %674

674:                                              ; preds = %670, %666, %665
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %1626

675:                                              ; preds = %649, %580
  br label %1276

676:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  store ptr %152, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  store ptr null, ptr %60, align 8, !tbaa !5
  br label %677

677:                                              ; preds = %727, %676
  %678 = load ptr, ptr %59, align 8, !tbaa !5
  %679 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %678, i32 0, i32 9
  %680 = load i8, ptr %679, align 8, !tbaa !149, !range !100, !noundef !101
  %681 = trunc i8 %680 to i1
  %682 = xor i1 %681, true
  br i1 %682, label %683, label %728

683:                                              ; preds = %677
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %684 = load ptr, ptr %59, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %684, i32 0, i32 3
  store ptr %685, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #10
  %686 = load ptr, ptr %61, align 8, !tbaa !5
  %687 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %686) #10
  %688 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %62, i32 0, i32 0
  store ptr %687, ptr %688, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #10
  %689 = load ptr, ptr %61, align 8, !tbaa !5
  %690 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %689) #10
  %691 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %63, i32 0, i32 0
  store ptr %690, ptr %691, align 8
  br label %692

692:                                              ; preds = %724, %683
  %693 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  br i1 %693, label %695, label %694

694:                                              ; preds = %692
  store i32 17, ptr %64, align 4
  br label %726

695:                                              ; preds = %692
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #10
  %696 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #10
  store ptr %696, ptr %65, align 8, !tbaa !5
  %697 = load ptr, ptr %65, align 8, !tbaa !5
  %698 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %697)
          to label %699 unwind label %712

699:                                              ; preds = %695
  %700 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %698, i32 0, i32 7
  %701 = load ptr, ptr %700, align 8, !tbaa !13
  %702 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %703 = load ptr, ptr %702, align 8, !tbaa !13
  %704 = icmp eq ptr %701, %703
  br i1 %704, label %705, label %720

705:                                              ; preds = %699
  %706 = load ptr, ptr %60, align 8, !tbaa !5
  %707 = icmp ne ptr %706, null
  br i1 %707, label %716, label %708

708:                                              ; preds = %705
  %709 = load ptr, ptr %65, align 8, !tbaa !5
  %710 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %709)
          to label %711 unwind label %712

711:                                              ; preds = %708
  store ptr %710, ptr %60, align 8, !tbaa !5
  br label %716

712:                                              ; preds = %716, %708, %695
  %713 = landingpad { ptr, i32 }
          cleanup
  %714 = extractvalue { ptr, i32 } %713, 0
  store ptr %714, ptr %21, align 8
  %715 = extractvalue { ptr, i32 } %713, 1
  store i32 %715, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  br label %1275

716:                                              ; preds = %711, %705
  %717 = load ptr, ptr %65, align 8, !tbaa !5
  %718 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %717)
          to label %719 unwind label %712

719:                                              ; preds = %716
  store ptr %718, ptr %59, align 8, !tbaa !5
  store i32 17, ptr %64, align 4
  br label %721

720:                                              ; preds = %699
  store i32 0, ptr %64, align 4
  br label %721

721:                                              ; preds = %720, %719
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  %722 = load i32, ptr %64, align 4
  switch i32 %722, label %726 [
    i32 0, label %723
  ]

723:                                              ; preds = %721
  br label %724

724:                                              ; preds = %723
  %725 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #10
  br label %692

726:                                              ; preds = %721, %694
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  br label %727

727:                                              ; preds = %726
  br label %677, !llvm.loop !151

728:                                              ; preds = %677
  call void @llvm.lifetime.start.p0(i64 24, ptr %66) #10
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #10
  store i64 0, ptr %67, align 8, !tbaa !94
  br label %729

729:                                              ; preds = %1032, %728
  %730 = load i64, ptr %67, align 8, !tbaa !94
  %731 = load ptr, ptr %29, align 8, !tbaa !5
  %732 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %731) #10
  %733 = icmp ult i64 %730, %732
  br i1 %733, label %735, label %734

734:                                              ; preds = %729
  store i32 19, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  br label %1037

735:                                              ; preds = %729
  call void @llvm.lifetime.start.p0(i64 232, ptr %68) #10
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarC2Ev(ptr noundef nonnull align 8 dereferenceable(230) %68)
          to label %736 unwind label %782

736:                                              ; preds = %735
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %737 = load ptr, ptr %39, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %737, i32 0, i32 3
  %739 = load i64, ptr %67, align 8, !tbaa !94
  %740 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %738, i64 noundef %739) #10
  store ptr %740, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  %741 = load ptr, ptr %69, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %741, i32 0, i32 3
  %743 = load i64, ptr %742, align 8, !tbaa !102
  %744 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 2
  %745 = load ptr, ptr %69, align 8, !tbaa !5
  %746 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %745, i32 0, i32 4
  %747 = load i64, ptr %746, align 8, !tbaa !115
  %748 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %744, i64 noundef %747) #10
  %749 = load i64, ptr %748, align 8, !tbaa !94
  %750 = add nsw i64 %743, %749
  %751 = sub nsw i64 %750, 1
  %752 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 2
  %753 = load ptr, ptr %69, align 8, !tbaa !5
  %754 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %753, i32 0, i32 4
  %755 = load i64, ptr %754, align 8, !tbaa !115
  %756 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %752, i64 noundef %755) #10
  %757 = load i64, ptr %756, align 8, !tbaa !94
  %758 = sdiv i64 %751, %757
  store i64 %758, ptr %70, align 8, !tbaa !94
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  %759 = load ptr, ptr %59, align 8, !tbaa !5
  %760 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %759, i32 0, i32 2
  %761 = load ptr, ptr %69, align 8, !tbaa !5
  %762 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %761, i32 0, i32 4
  %763 = load i64, ptr %762, align 8, !tbaa !115
  %764 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %760, i64 noundef %763) #10
  %765 = load i64, ptr %764, align 8, !tbaa !94
  store i64 %765, ptr %71, align 8, !tbaa !94
  %766 = load ptr, ptr %60, align 8, !tbaa !5
  %767 = icmp ne ptr %766, null
  br i1 %767, label %768, label %786

768:                                              ; preds = %736
  %769 = load ptr, ptr %69, align 8, !tbaa !5
  %770 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %769, i32 0, i32 5
  %771 = load i8, ptr %770, align 8, !tbaa !116, !range !100, !noundef !101
  %772 = trunc i8 %771 to i1
  br i1 %772, label %773, label %786

773:                                              ; preds = %768
  %774 = load i64, ptr %70, align 8, !tbaa !94
  %775 = load i64, ptr %71, align 8, !tbaa !94
  %776 = add nsw i64 %774, %775
  %777 = sub nsw i64 %776, 1
  %778 = load i64, ptr %71, align 8, !tbaa !94
  %779 = sdiv i64 %777, %778
  %780 = load i64, ptr %71, align 8, !tbaa !94
  %781 = mul nsw i64 %779, %780
  store i64 %781, ptr %70, align 8, !tbaa !94
  br label %786

782:                                              ; preds = %735
  %783 = landingpad { ptr, i32 }
          cleanup
  %784 = extractvalue { ptr, i32 } %783, 0
  store ptr %784, ptr %21, align 8
  %785 = extractvalue { ptr, i32 } %783, 1
  store i32 %785, ptr %22, align 4
  br label %1036

786:                                              ; preds = %773, %768, %736
  %787 = load ptr, ptr %60, align 8, !tbaa !5
  %788 = icmp ne ptr %787, null
  br i1 %788, label %789, label %795

789:                                              ; preds = %786
  %790 = load i64, ptr %71, align 8, !tbaa !94
  %791 = load i64, ptr %70, align 8, !tbaa !94
  %792 = icmp sgt i64 %790, %791
  br i1 %792, label %793, label %795

793:                                              ; preds = %789
  %794 = load i64, ptr %71, align 8, !tbaa !94
  store i64 %794, ptr %70, align 8, !tbaa !94
  br label %795

795:                                              ; preds = %793, %789, %786
  %796 = load ptr, ptr %69, align 8, !tbaa !5
  %797 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %796, i32 0, i32 8
  %798 = load i8, ptr %797, align 1, !tbaa !113, !range !100, !noundef !101
  %799 = trunc i8 %798 to i1
  br i1 %799, label %800, label %803

800:                                              ; preds = %795
  %801 = load i64, ptr %70, align 8, !tbaa !94
  %802 = icmp eq i64 %801, 1
  br i1 %802, label %803, label %806

803:                                              ; preds = %800, %795
  %804 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %68, i32 0, i32 8
  store i8 0, ptr %804, align 1, !tbaa !113
  %805 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %68, i32 0, i32 3
  store i64 1, ptr %805, align 8, !tbaa !102
  br label %1030

806:                                              ; preds = %800
  %807 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 2
  %808 = load ptr, ptr %69, align 8, !tbaa !5
  %809 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %808, i32 0, i32 4
  %810 = load i64, ptr %809, align 8, !tbaa !115
  %811 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %807, i64 noundef %810) #10
  %812 = load i64, ptr %811, align 8, !tbaa !94
  %813 = icmp eq i64 %812, 1
  br i1 %813, label %814, label %850

814:                                              ; preds = %806
  %815 = load ptr, ptr %60, align 8, !tbaa !5
  %816 = icmp ne ptr %815, null
  br i1 %816, label %817, label %837

817:                                              ; preds = %814
  %818 = load ptr, ptr %60, align 8, !tbaa !5
  %819 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %818, i32 0, i32 9
  %820 = load i8, ptr %819, align 8, !tbaa !149, !range !100, !noundef !101
  %821 = trunc i8 %820 to i1
  br i1 %821, label %822, label %837

822:                                              ; preds = %817
  %823 = load ptr, ptr %69, align 8, !tbaa !5
  %824 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %823, i32 0, i32 5
  %825 = load i8, ptr %824, align 8, !tbaa !116, !range !100, !noundef !101
  %826 = trunc i8 %825 to i1
  br i1 %826, label %827, label %837

827:                                              ; preds = %822
  %828 = load ptr, ptr %69, align 8, !tbaa !5
  %829 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %828, i32 0, i32 1
  %830 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %829)
          to label %831 unwind label %846

831:                                              ; preds = %827
  %832 = load ptr, ptr %69, align 8, !tbaa !5
  %833 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %832, i32 0, i32 0
  %834 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %833)
          to label %835 unwind label %846

835:                                              ; preds = %831
  %836 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %830, ptr noundef nonnull align 8 dereferenceable(32) %834) #10
  br i1 %836, label %850, label %837

837:                                              ; preds = %835, %822, %817, %814
  %838 = load ptr, ptr %69, align 8, !tbaa !5
  %839 = invoke noundef nonnull align 8 dereferenceable(230) ptr @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVaraSERKS4_(ptr noundef nonnull align 8 dereferenceable(230) %68, ptr noundef nonnull align 8 dereferenceable(230) %838)
          to label %840 unwind label %846

840:                                              ; preds = %837
  %841 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %68, i32 0, i32 7
  store i8 0, ptr %841, align 2, !tbaa !112
  %842 = load ptr, ptr %69, align 8, !tbaa !5
  %843 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %842, i32 0, i32 8
  store i8 0, ptr %843, align 1, !tbaa !113
  %844 = load ptr, ptr %69, align 8, !tbaa !5
  %845 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %844, i32 0, i32 3
  store i64 1, ptr %845, align 8, !tbaa !102
  br label %1029

846:                                              ; preds = %1030, %837, %831, %827
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %21, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %22, align 4
  br label %1035

850:                                              ; preds = %835, %806
  call void @llvm.lifetime.start.p0(i64 88, ptr %72) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %73) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #10
  %851 = load ptr, ptr %69, align 8, !tbaa !5
  %852 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %851, i32 0, i32 1
  %853 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %852)
          to label %854 unwind label %872

854:                                              ; preds = %850
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %74, ptr noundef nonnull align 8 dereferenceable(32) %853, ptr noundef @.str.44)
          to label %855 unwind label %872

855:                                              ; preds = %854
  invoke void @_ZN6Halide3VarC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %856 unwind label %876

856:                                              ; preds = %855
  invoke void @_ZN6Halide9VarOrRVarC2ERKNS_3VarE(ptr noundef nonnull align 8 dereferenceable(81) %72, ptr noundef nonnull align 8 dereferenceable(32) %73)
          to label %857 unwind label %880

857:                                              ; preds = %856
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #10
  %858 = load ptr, ptr %69, align 8, !tbaa !5
  %859 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %858, i32 0, i32 1
  %860 = getelementptr inbounds %"struct.Halide::VarOrRVar", ptr %859, i32 0, i32 2
  %861 = load i8, ptr %860, align 8, !tbaa !152, !range !100, !noundef !101
  %862 = trunc i8 %861 to i1
  br i1 %862, label %863, label %900

863:                                              ; preds = %857
  call void @llvm.lifetime.start.p0(i64 88, ptr %75) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr %76) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #10
  %864 = load ptr, ptr %69, align 8, !tbaa !5
  %865 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %864, i32 0, i32 1
  %866 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %865)
          to label %867 unwind label %886

867:                                              ; preds = %863
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef nonnull align 8 dereferenceable(32) %866, ptr noundef @.str.44)
          to label %868 unwind label %886

868:                                              ; preds = %867
  invoke void @_ZN6Halide4RVarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(44) %76, ptr noundef nonnull align 8 dereferenceable(32) %77)
          to label %869 unwind label %890

869:                                              ; preds = %868
  invoke void @_ZN6Halide9VarOrRVarC2ERKNS_4RVarE(ptr noundef nonnull align 8 dereferenceable(81) %75, ptr noundef nonnull align 8 dereferenceable(44) %76)
          to label %870 unwind label %894

870:                                              ; preds = %869
  %871 = call noundef nonnull align 8 dereferenceable(81) ptr @_ZN6Halide9VarOrRVaraSEOS0_(ptr noundef nonnull align 8 dereferenceable(81) %72, ptr noundef nonnull align 8 dereferenceable(81) %75) #10
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %75) #10
  call void @_ZN6Halide4RVarD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %76) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr %75) #10
  br label %900

872:                                              ; preds = %854, %850
  %873 = landingpad { ptr, i32 }
          cleanup
  %874 = extractvalue { ptr, i32 } %873, 0
  store ptr %874, ptr %21, align 8
  %875 = extractvalue { ptr, i32 } %873, 1
  store i32 %875, ptr %22, align 4
  br label %885

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

880:                                              ; preds = %856
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %21, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %22, align 4
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #10
  br label %884

884:                                              ; preds = %880, %876
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #10
  br label %885

885:                                              ; preds = %884, %872
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #10
  br label %1028

886:                                              ; preds = %867, %863
  %887 = landingpad { ptr, i32 }
          cleanup
  %888 = extractvalue { ptr, i32 } %887, 0
  store ptr %888, ptr %21, align 8
  %889 = extractvalue { ptr, i32 } %887, 1
  store i32 %889, ptr %22, align 4
  br label %899

890:                                              ; preds = %868
  %891 = landingpad { ptr, i32 }
          cleanup
  %892 = extractvalue { ptr, i32 } %891, 0
  store ptr %892, ptr %21, align 8
  %893 = extractvalue { ptr, i32 } %891, 1
  store i32 %893, ptr %22, align 4
  br label %898

894:                                              ; preds = %869
  %895 = landingpad { ptr, i32 }
          cleanup
  %896 = extractvalue { ptr, i32 } %895, 0
  store ptr %896, ptr %21, align 8
  %897 = extractvalue { ptr, i32 } %895, 1
  store i32 %897, ptr %22, align 4
  call void @_ZN6Halide4RVarD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %76) #10
  br label %898

898:                                              ; preds = %894, %890
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  br label %899

899:                                              ; preds = %898, %886
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr %75) #10
  br label %1027

900:                                              ; preds = %870, %857
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #10
  %901 = load i32, ptr %51, align 4, !tbaa !146
  store i32 %901, ptr %78, align 4, !tbaa !146
  %902 = load ptr, ptr %69, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %902, i32 0, i32 1
  %904 = getelementptr inbounds %"struct.Halide::VarOrRVar", ptr %903, i32 0, i32 2
  %905 = load i8, ptr %904, align 8, !tbaa !152, !range !100, !noundef !101
  %906 = trunc i8 %905 to i1
  br i1 %906, label %918, label %907

907:                                              ; preds = %900
  %908 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 8
  %909 = load ptr, ptr %908, align 8, !tbaa !48
  %910 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %909, i32 0, i32 1
  %911 = load i32, ptr %910, align 8, !tbaa !49
  %912 = icmp ne i32 %911, 0
  br i1 %912, label %913, label %919

913:                                              ; preds = %907
  %914 = load ptr, ptr %69, align 8, !tbaa !5
  %915 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %914, i32 0, i32 6
  %916 = load i8, ptr %915, align 1, !tbaa !110, !range !100, !noundef !101
  %917 = trunc i8 %916 to i1
  br i1 %917, label %919, label %918

918:                                              ; preds = %913, %900
  store i32 1, ptr %78, align 4, !tbaa !146
  br label %919

919:                                              ; preds = %918, %913, %907
  %920 = load i64, ptr %70, align 8, !tbaa !94
  %921 = load ptr, ptr %69, align 8, !tbaa !5
  %922 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %921, i32 0, i32 3
  %923 = load i64, ptr %922, align 8, !tbaa !102
  %924 = icmp sgt i64 %920, %923
  br i1 %924, label %925, label %929

925:                                              ; preds = %919
  %926 = load i32, ptr %78, align 4, !tbaa !146
  %927 = icmp eq i32 %926, 2
  br i1 %927, label %928, label %929

928:                                              ; preds = %925
  store i32 1, ptr %78, align 4, !tbaa !146
  br label %929

929:                                              ; preds = %928, %925, %919
  %930 = load ptr, ptr %69, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %930, i32 0, i32 1
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %79, ptr noundef nonnull align 8 dereferenceable(81) %931)
          to label %932 unwind label %1003

932:                                              ; preds = %929
  %933 = load ptr, ptr %69, align 8, !tbaa !5
  %934 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %933, i32 0, i32 1
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %80, ptr noundef nonnull align 8 dereferenceable(81) %934)
          to label %935 unwind label %1007

935:                                              ; preds = %932
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %81, ptr noundef nonnull align 8 dereferenceable(81) %72)
          to label %936 unwind label %1011

936:                                              ; preds = %935
  %937 = load i64, ptr %70, align 8, !tbaa !94
  %938 = trunc i64 %937 to i32
  invoke void @_ZN6Halide4ExprC2Ei(ptr noundef nonnull align 8 dereferenceable(8) %82, i32 noundef %938)
          to label %939 unwind label %1015

939:                                              ; preds = %936
  %940 = load i32, ptr %78, align 4, !tbaa !146
  %941 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage5splitENS_9VarOrRVarES1_S1_NS_4ExprENS_12TailStrategyE(ptr noundef nonnull align 8 dereferenceable(64) %40, ptr noundef %79, ptr noundef %80, ptr noundef %81, ptr noundef %82, i32 noundef %940)
          to label %942 unwind label %1019

942:                                              ; preds = %939
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #10
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %81) #10
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %80) #10
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %79) #10
  %943 = load ptr, ptr %39, align 8, !tbaa !5
  %944 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %943, i32 0, i32 4
  %945 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %944, ptr noundef @.str.45)
          to label %946 unwind label %1003

946:                                              ; preds = %942
  %947 = load ptr, ptr %69, align 8, !tbaa !5
  %948 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %947, i32 0, i32 1
  %949 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %948)
          to label %950 unwind label %1003

950:                                              ; preds = %946
  %951 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %945, ptr noundef nonnull align 8 dereferenceable(32) %949)
          to label %952 unwind label %1003

952:                                              ; preds = %950
  %953 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %951, ptr noundef @.str.30)
          to label %954 unwind label %1003

954:                                              ; preds = %952
  %955 = load ptr, ptr %69, align 8, !tbaa !5
  %956 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %955, i32 0, i32 1
  %957 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %956)
          to label %958 unwind label %1003

958:                                              ; preds = %954
  %959 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %953, ptr noundef nonnull align 8 dereferenceable(32) %957)
          to label %960 unwind label %1003

960:                                              ; preds = %958
  %961 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %959, ptr noundef @.str.30)
          to label %962 unwind label %1003

962:                                              ; preds = %960
  %963 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %72)
          to label %964 unwind label %1003

964:                                              ; preds = %962
  %965 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %961, ptr noundef nonnull align 8 dereferenceable(32) %963)
          to label %966 unwind label %1003

966:                                              ; preds = %964
  %967 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %965, ptr noundef @.str.30)
          to label %968 unwind label %1003

968:                                              ; preds = %966
  %969 = load i64, ptr %70, align 8, !tbaa !94
  %970 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %967, i64 noundef %969)
          to label %971 unwind label %1003

971:                                              ; preds = %968
  %972 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %970, ptr noundef @.str.30)
          to label %973 unwind label %1003

973:                                              ; preds = %971
  %974 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %972, ptr noundef @.str.46)
          to label %975 unwind label %1003

975:                                              ; preds = %973
  %976 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6HalidelsERSoRKNS_12TailStrategyE(ptr noundef nonnull align 8 dereferenceable(8) %974, ptr noundef nonnull align 4 dereferenceable(4) %78)
          to label %977 unwind label %1003

977:                                              ; preds = %975
  %978 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %976, ptr noundef @.str.31)
          to label %979 unwind label %1003

979:                                              ; preds = %977
  %980 = load ptr, ptr %69, align 8, !tbaa !5
  %981 = invoke noundef nonnull align 8 dereferenceable(230) ptr @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVaraSERKS4_(ptr noundef nonnull align 8 dereferenceable(230) %68, ptr noundef nonnull align 8 dereferenceable(230) %980)
          to label %982 unwind label %1003

982:                                              ; preds = %979
  %983 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 2
  %984 = load ptr, ptr %69, align 8, !tbaa !5
  %985 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %984, i32 0, i32 4
  %986 = load i64, ptr %985, align 8, !tbaa !115
  %987 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %983, i64 noundef %986) #10
  %988 = load i64, ptr %987, align 8, !tbaa !94
  %989 = load ptr, ptr %69, align 8, !tbaa !5
  %990 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %989, i32 0, i32 3
  store i64 %988, ptr %990, align 8, !tbaa !102
  %991 = load i32, ptr %78, align 4, !tbaa !146
  %992 = icmp ne i32 %991, 1
  %993 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %68, i32 0, i32 10
  %994 = zext i1 %992 to i8
  store i8 %994, ptr %993, align 1, !tbaa !109
  %995 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %68, i32 0, i32 1
  %996 = invoke noundef nonnull align 8 dereferenceable(81) ptr @_ZN6Halide9VarOrRVaraSERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %995, ptr noundef nonnull align 8 dereferenceable(81) %72)
          to label %997 unwind label %1003

997:                                              ; preds = %982
  %998 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %68, i32 0, i32 2
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %998) #10
  %999 = load i64, ptr %70, align 8, !tbaa !94
  %1000 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %68, i32 0, i32 3
  store i64 %999, ptr %1000, align 8, !tbaa !102
  %1001 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %68, i32 0, i32 7
  store i8 0, ptr %1001, align 2, !tbaa !112
  %1002 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %68, i32 0, i32 6
  store i8 0, ptr %1002, align 1, !tbaa !110
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #10
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %72) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr %72) #10
  br label %1029

1003:                                             ; preds = %982, %979, %977, %975, %973, %971, %968, %966, %964, %962, %960, %958, %954, %952, %950, %946, %942, %929
  %1004 = landingpad { ptr, i32 }
          cleanup
  %1005 = extractvalue { ptr, i32 } %1004, 0
  store ptr %1005, ptr %21, align 8
  %1006 = extractvalue { ptr, i32 } %1004, 1
  store i32 %1006, ptr %22, align 4
  br label %1026

1007:                                             ; preds = %932
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %21, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %22, align 4
  br label %1025

1011:                                             ; preds = %935
  %1012 = landingpad { ptr, i32 }
          cleanup
  %1013 = extractvalue { ptr, i32 } %1012, 0
  store ptr %1013, ptr %21, align 8
  %1014 = extractvalue { ptr, i32 } %1012, 1
  store i32 %1014, ptr %22, align 4
  br label %1024

1015:                                             ; preds = %936
  %1016 = landingpad { ptr, i32 }
          cleanup
  %1017 = extractvalue { ptr, i32 } %1016, 0
  store ptr %1017, ptr %21, align 8
  %1018 = extractvalue { ptr, i32 } %1016, 1
  store i32 %1018, ptr %22, align 4
  br label %1023

1019:                                             ; preds = %939
  %1020 = landingpad { ptr, i32 }
          cleanup
  %1021 = extractvalue { ptr, i32 } %1020, 0
  store ptr %1021, ptr %21, align 8
  %1022 = extractvalue { ptr, i32 } %1020, 1
  store i32 %1022, ptr %22, align 4
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #10
  br label %1023

1023:                                             ; preds = %1019, %1015
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %81) #10
  br label %1024

1024:                                             ; preds = %1023, %1011
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %80) #10
  br label %1025

1025:                                             ; preds = %1024, %1007
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %79) #10
  br label %1026

1026:                                             ; preds = %1025, %1003
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #10
  br label %1027

1027:                                             ; preds = %1026, %899
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %72) #10
  br label %1028

1028:                                             ; preds = %1027, %885
  call void @llvm.lifetime.end.p0(i64 88, ptr %72) #10
  br label %1035

1029:                                             ; preds = %997, %840
  br label %1030

1030:                                             ; preds = %1029, %803
  invoke void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(230) %68)
          to label %1031 unwind label %846

1031:                                             ; preds = %1030
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarD2Ev(ptr noundef nonnull align 8 dereferenceable(230) %68) #10
  call void @llvm.lifetime.end.p0(i64 232, ptr %68) #10
  br label %1032

1032:                                             ; preds = %1031
  %1033 = load i64, ptr %67, align 8, !tbaa !94
  %1034 = add i64 %1033, 1
  store i64 %1034, ptr %67, align 8, !tbaa !94
  br label %729, !llvm.loop !153

1035:                                             ; preds = %1028, %846
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarD2Ev(ptr noundef nonnull align 8 dereferenceable(230) %68) #10
  br label %1036

1036:                                             ; preds = %1035, %782
  call void @llvm.lifetime.end.p0(i64 232, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  br label %1274

1037:                                             ; preds = %734
  %1038 = load ptr, ptr %60, align 8, !tbaa !5
  %1039 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1038, i32 0, i32 9
  %1040 = load i8, ptr %1039, align 8, !tbaa !149, !range !100, !noundef !101
  %1041 = trunc i8 %1040 to i1
  br i1 %1041, label %1042, label %1182

1042:                                             ; preds = %1037
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #10
  store i64 1, ptr %83, align 8, !tbaa !94
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #10
  store i8 1, ptr %84, align 1, !tbaa !154
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #10
  store i64 0, ptr %85, align 8, !tbaa !94
  br label %1043

1043:                                             ; preds = %1081, %1042
  %1044 = load i64, ptr %85, align 8, !tbaa !94
  %1045 = load ptr, ptr %29, align 8, !tbaa !5
  %1046 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1045) #10
  %1047 = icmp ult i64 %1044, %1046
  br i1 %1047, label %1049, label %1048

1048:                                             ; preds = %1043
  store i32 22, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  br label %1084

1049:                                             ; preds = %1043
  %1050 = load ptr, ptr %39, align 8, !tbaa !5
  %1051 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1050, i32 0, i32 3
  %1052 = load i64, ptr %85, align 8, !tbaa !94
  %1053 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1051, i64 noundef %1052) #10
  %1054 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %1053, i32 0, i32 9
  %1055 = load i8, ptr %1054, align 4, !tbaa !114, !range !100, !noundef !101
  %1056 = trunc i8 %1055 to i1
  br i1 %1056, label %1057, label %1080

1057:                                             ; preds = %1049
  %1058 = load ptr, ptr %39, align 8, !tbaa !5
  %1059 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1058, i32 0, i32 3
  %1060 = load i64, ptr %85, align 8, !tbaa !94
  %1061 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1059, i64 noundef %1060) #10
  %1062 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %1061, i32 0, i32 3
  %1063 = load i64, ptr %1062, align 8, !tbaa !102
  %1064 = load i64, ptr %83, align 8, !tbaa !94
  %1065 = mul nsw i64 %1064, %1063
  store i64 %1065, ptr %83, align 8, !tbaa !94
  %1066 = load ptr, ptr %39, align 8, !tbaa !5
  %1067 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1066, i32 0, i32 3
  %1068 = load i64, ptr %85, align 8, !tbaa !94
  %1069 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1067, i64 noundef %1068) #10
  %1070 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %1069, i32 0, i32 10
  %1071 = load i8, ptr %1070, align 1, !tbaa !109, !range !100, !noundef !101
  %1072 = trunc i8 %1071 to i1
  %1073 = zext i1 %1072 to i32
  %1074 = load i8, ptr %84, align 1, !tbaa !154, !range !100, !noundef !101
  %1075 = trunc i8 %1074 to i1
  %1076 = zext i1 %1075 to i32
  %1077 = and i32 %1076, %1073
  %1078 = icmp ne i32 %1077, 0
  %1079 = zext i1 %1078 to i8
  store i8 %1079, ptr %84, align 1, !tbaa !154
  br label %1080

1080:                                             ; preds = %1057, %1049
  br label %1081

1081:                                             ; preds = %1080
  %1082 = load i64, ptr %85, align 8, !tbaa !94
  %1083 = add i64 %1082, 1
  store i64 %1083, ptr %85, align 8, !tbaa !94
  br label %1043, !llvm.loop !155

1084:                                             ; preds = %1048
  %1085 = load i64, ptr %83, align 8, !tbaa !94
  %1086 = icmp sle i64 %1085, 12
  br i1 %1086, label %1087, label %1180

1087:                                             ; preds = %1084
  %1088 = load i8, ptr %84, align 1, !tbaa !154, !range !100, !noundef !101
  %1089 = trunc i8 %1088 to i1
  br i1 %1089, label %1090, label %1180

1090:                                             ; preds = %1087
  %1091 = load ptr, ptr %39, align 8, !tbaa !5
  %1092 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1091, i32 0, i32 3
  %1093 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1092) #10
  %1094 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %86, i32 0, i32 0
  store ptr %1093, ptr %1094, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  %1095 = load ptr, ptr %39, align 8, !tbaa !5
  %1096 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1095, i32 0, i32 3
  %1097 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1096) #10
  %1098 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %88, i32 0, i32 0
  store ptr %1097, ptr %1098, align 8
  %1099 = load ptr, ptr %29, align 8, !tbaa !5
  %1100 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1099) #10
  %1101 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %88, i64 noundef %1100) #10
  %1102 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %87, i32 0, i32 0
  store ptr %1101, ptr %1102, align 8
  %1103 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %86, i32 0, i32 0
  %1104 = load ptr, ptr %1103, align 8
  %1105 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %87, i32 0, i32 0
  %1106 = load ptr, ptr %1105, align 8
  invoke void @"_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS7_SaIS7_EEEEZNKS5_5applyENS2_9LoopLevelER14PerfectHashMapINS4_11FunctionDAG4Node5StageESt10unique_ptrIS6_St14default_deleteIS6_EELi4E22PerfectHashMapAsserterEdiPKS5_SQ_E3$_0EvT_SS_T0_"(ptr %1104, ptr %1106)
          to label %1107 unwind label %1114

1107:                                             ; preds = %1090
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #10
  store i64 0, ptr %90, align 8, !tbaa !94
  br label %1108

1108:                                             ; preds = %1175, %1107
  %1109 = load i64, ptr %90, align 8, !tbaa !94
  %1110 = load ptr, ptr %29, align 8, !tbaa !5
  %1111 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1110) #10
  %1112 = icmp ult i64 %1109, %1111
  br i1 %1112, label %1118, label %1113

1113:                                             ; preds = %1108
  store i32 25, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  br label %1179

1114:                                             ; preds = %1090
  %1115 = landingpad { ptr, i32 }
          cleanup
  %1116 = extractvalue { ptr, i32 } %1115, 0
  store ptr %1116, ptr %21, align 8
  %1117 = extractvalue { ptr, i32 } %1115, 1
  store i32 %1117, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %1181

1118:                                             ; preds = %1108
  %1119 = load ptr, ptr %39, align 8, !tbaa !5
  %1120 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1119, i32 0, i32 3
  %1121 = load i64, ptr %90, align 8, !tbaa !94
  %1122 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1120, i64 noundef %1121) #10
  %1123 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %1122, i32 0, i32 9
  %1124 = load i8, ptr %1123, align 4, !tbaa !114, !range !100, !noundef !101
  %1125 = trunc i8 %1124 to i1
  br i1 %1125, label %1126, label %1174

1126:                                             ; preds = %1118
  %1127 = load ptr, ptr %39, align 8, !tbaa !5
  %1128 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1127, i32 0, i32 3
  %1129 = load i64, ptr %90, align 8, !tbaa !94
  %1130 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1128, i64 noundef %1129) #10
  %1131 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %1130, i32 0, i32 8
  %1132 = load i8, ptr %1131, align 1, !tbaa !113, !range !100, !noundef !101
  %1133 = trunc i8 %1132 to i1
  br i1 %1133, label %1134, label %1174

1134:                                             ; preds = %1126
  %1135 = load ptr, ptr %39, align 8, !tbaa !5
  %1136 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1135, i32 0, i32 3
  %1137 = load i64, ptr %90, align 8, !tbaa !94
  %1138 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1136, i64 noundef %1137) #10
  %1139 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %1138, i32 0, i32 3
  %1140 = load i64, ptr %1139, align 8, !tbaa !102
  %1141 = icmp sgt i64 %1140, 1
  br i1 %1141, label %1142, label %1174

1142:                                             ; preds = %1134
  %1143 = load ptr, ptr %39, align 8, !tbaa !5
  %1144 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1143, i32 0, i32 3
  %1145 = load i64, ptr %90, align 8, !tbaa !94
  %1146 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1144, i64 noundef %1145) #10
  %1147 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %1146, i32 0, i32 1
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %91, ptr noundef nonnull align 8 dereferenceable(81) %1147)
          to label %1148 unwind label %1166

1148:                                             ; preds = %1142
  %1149 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage6unrollENS_9VarOrRVarE(ptr noundef nonnull align 8 dereferenceable(64) %40, ptr noundef %91)
          to label %1150 unwind label %1170

1150:                                             ; preds = %1148
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %91) #10
  %1151 = load ptr, ptr %39, align 8, !tbaa !5
  %1152 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1151, i32 0, i32 4
  %1153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1152, ptr noundef @.str.47)
          to label %1154 unwind label %1166

1154:                                             ; preds = %1150
  %1155 = load ptr, ptr %39, align 8, !tbaa !5
  %1156 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1155, i32 0, i32 3
  %1157 = load i64, ptr %90, align 8, !tbaa !94
  %1158 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1156, i64 noundef %1157) #10
  %1159 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %1158, i32 0, i32 1
  %1160 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %1159)
          to label %1161 unwind label %1166

1161:                                             ; preds = %1154
  %1162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1153, ptr noundef nonnull align 8 dereferenceable(32) %1160)
          to label %1163 unwind label %1166

1163:                                             ; preds = %1161
  %1164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1162, ptr noundef @.str.31)
          to label %1165 unwind label %1166

1165:                                             ; preds = %1163
  br label %1174

1166:                                             ; preds = %1163, %1161, %1154, %1150, %1142
  %1167 = landingpad { ptr, i32 }
          cleanup
  %1168 = extractvalue { ptr, i32 } %1167, 0
  store ptr %1168, ptr %21, align 8
  %1169 = extractvalue { ptr, i32 } %1167, 1
  store i32 %1169, ptr %22, align 4
  br label %1178

1170:                                             ; preds = %1148
  %1171 = landingpad { ptr, i32 }
          cleanup
  %1172 = extractvalue { ptr, i32 } %1171, 0
  store ptr %1172, ptr %21, align 8
  %1173 = extractvalue { ptr, i32 } %1171, 1
  store i32 %1173, ptr %22, align 4
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %91) #10
  br label %1178

1174:                                             ; preds = %1165, %1134, %1126, %1118
  br label %1175

1175:                                             ; preds = %1174
  %1176 = load i64, ptr %90, align 8, !tbaa !94
  %1177 = add i64 %1176, 1
  store i64 %1177, ptr %90, align 8, !tbaa !94
  br label %1108, !llvm.loop !156

1178:                                             ; preds = %1170, %1166
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  br label %1181

1179:                                             ; preds = %1113
  br label %1180

1180:                                             ; preds = %1179, %1087, %1084
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  br label %1182

1181:                                             ; preds = %1178, %1114
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  br label %1274

1182:                                             ; preds = %1180, %1037
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #10
  store i8 0, ptr %92, align 1, !tbaa !154
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #10
  %1183 = load ptr, ptr %39, align 8, !tbaa !5
  %1184 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1183, i32 0, i32 3
  store ptr %1184, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #10
  %1185 = load ptr, ptr %93, align 8, !tbaa !5
  %1186 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1185) #10
  %1187 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %94, i32 0, i32 0
  store ptr %1186, ptr %1187, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #10
  %1188 = load ptr, ptr %93, align 8, !tbaa !5
  %1189 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1188) #10
  %1190 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %95, i32 0, i32 0
  store ptr %1189, ptr %1190, align 8
  br label %1191

1191:                                             ; preds = %1221, %1182
  %1192 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %95) #10
  br i1 %1192, label %1194, label %1193

1193:                                             ; preds = %1191
  store i32 28, ptr %64, align 4
  br label %1223

1194:                                             ; preds = %1191
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #10
  %1195 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #10
  store ptr %1195, ptr %96, align 8, !tbaa !5
  %1196 = load ptr, ptr %96, align 8, !tbaa !5
  %1197 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %1196, i32 0, i32 8
  %1198 = load i8, ptr %1197, align 1, !tbaa !113, !range !100, !noundef !101
  %1199 = trunc i8 %1198 to i1
  br i1 %1199, label %1201, label %1200

1200:                                             ; preds = %1194
  store i32 29, ptr %64, align 4
  br label %1219

1201:                                             ; preds = %1194
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #10
  %1202 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %1203 = load ptr, ptr %1202, align 8, !tbaa !13
  %1204 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1203, i32 0, i32 1
  %1205 = load ptr, ptr %96, align 8, !tbaa !5
  %1206 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", ptr %1205, i32 0, i32 1
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %98, ptr noundef nonnull align 8 dereferenceable(81) %1206)
          to label %1207 unwind label %1210

1207:                                             ; preds = %1201
  invoke void @_ZN6Halide9LoopLevelC1ERKNS_8Internal8FunctionENS_9VarOrRVarEi(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(24) %1204, ptr noundef %98, i32 noundef -1)
          to label %1208 unwind label %1214

1208:                                             ; preds = %1207
  %1209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide9LoopLevelaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %97) #10
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #10
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %98) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #10
  store i8 1, ptr %92, align 1, !tbaa !154
  store i32 28, ptr %64, align 4
  br label %1219

1210:                                             ; preds = %1201
  %1211 = landingpad { ptr, i32 }
          cleanup
  %1212 = extractvalue { ptr, i32 } %1211, 0
  store ptr %1212, ptr %21, align 8
  %1213 = extractvalue { ptr, i32 } %1211, 1
  store i32 %1213, ptr %22, align 4
  br label %1218

1214:                                             ; preds = %1207
  %1215 = landingpad { ptr, i32 }
          cleanup
  %1216 = extractvalue { ptr, i32 } %1215, 0
  store ptr %1216, ptr %21, align 8
  %1217 = extractvalue { ptr, i32 } %1215, 1
  store i32 %1217, ptr %22, align 4
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %98) #10
  br label %1218

1218:                                             ; preds = %1214, %1210
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  br label %1273

1219:                                             ; preds = %1208, %1200
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  %1220 = load i32, ptr %64, align 4
  switch i32 %1220, label %1223 [
    i32 29, label %1221
  ]

1221:                                             ; preds = %1219
  %1222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #10
  br label %1191

1223:                                             ; preds = %1219, %1193
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  br label %1224

1224:                                             ; preds = %1223
  %1225 = load i8, ptr %92, align 1, !tbaa !154, !range !100, !noundef !101
  %1226 = trunc i8 %1225 to i1
  br i1 %1226, label %1249, label %1227

1227:                                             ; preds = %1224
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  %1228 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %1229 = load ptr, ptr %1228, align 8, !tbaa !13
  %1230 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1229, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %101) #10
  invoke void @_ZN6Halide3Var9outermostEv(ptr dead_on_unwind writable sret(%"class.Halide::Var") align 8 %101)
          to label %1231 unwind label %1235

1231:                                             ; preds = %1227
  invoke void @_ZN6Halide9VarOrRVarC2ERKNS_3VarE(ptr noundef nonnull align 8 dereferenceable(81) %100, ptr noundef nonnull align 8 dereferenceable(32) %101)
          to label %1232 unwind label %1239

1232:                                             ; preds = %1231
  invoke void @_ZN6Halide9LoopLevelC1ERKNS_8Internal8FunctionENS_9VarOrRVarEi(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull align 8 dereferenceable(24) %1230, ptr noundef %100, i32 noundef -1)
          to label %1233 unwind label %1243

1233:                                             ; preds = %1232
  %1234 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide9LoopLevelaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %99) #10
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #10
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %100) #10
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  br label %1249

1235:                                             ; preds = %1227
  %1236 = landingpad { ptr, i32 }
          cleanup
  %1237 = extractvalue { ptr, i32 } %1236, 0
  store ptr %1237, ptr %21, align 8
  %1238 = extractvalue { ptr, i32 } %1236, 1
  store i32 %1238, ptr %22, align 4
  br label %1248

1239:                                             ; preds = %1231
  %1240 = landingpad { ptr, i32 }
          cleanup
  %1241 = extractvalue { ptr, i32 } %1240, 0
  store ptr %1241, ptr %21, align 8
  %1242 = extractvalue { ptr, i32 } %1240, 1
  store i32 %1242, ptr %22, align 4
  br label %1247

1243:                                             ; preds = %1232
  %1244 = landingpad { ptr, i32 }
          cleanup
  %1245 = extractvalue { ptr, i32 } %1244, 0
  store ptr %1245, ptr %21, align 8
  %1246 = extractvalue { ptr, i32 } %1244, 1
  store i32 %1246, ptr %22, align 4
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %100) #10
  br label %1247

1247:                                             ; preds = %1243, %1239
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #10
  br label %1248

1248:                                             ; preds = %1247, %1235
  call void @llvm.lifetime.end.p0(i64 32, ptr %101) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  br label %1273

1249:                                             ; preds = %1233, %1224
  %1250 = load ptr, ptr %39, align 8, !tbaa !5
  %1251 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1250, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #10
  %1252 = load ptr, ptr %39, align 8, !tbaa !5
  %1253 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1252, i32 0, i32 3
  %1254 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1253) #10
  %1255 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %103, i32 0, i32 0
  store ptr %1254, ptr %1255, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEC2IPS6_vEERKNS0_IT_SB_EE(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %103) #10
  %1256 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #10
  %1257 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %104, i32 0, i32 0
  store ptr %1256, ptr %1257, align 8
  %1258 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #10
  %1259 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %105, i32 0, i32 0
  store ptr %1258, ptr %1259, align 8
  %1260 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.174", ptr %102, i32 0, i32 0
  %1261 = load ptr, ptr %1260, align 8
  %1262 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %104, i32 0, i32 0
  %1263 = load ptr, ptr %1262, align 8
  %1264 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %105, i32 0, i32 0
  %1265 = load ptr, ptr %1264, align 8
  %1266 = invoke ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE6insertIN9__gnu_cxx17__normal_iteratorIPS5_S7_EEvEESC_NSA_IPKS5_S7_EET_SG_(ptr noundef nonnull align 8 dereferenceable(24) %1251, ptr %1261, ptr %1263, ptr %1265)
          to label %1267 unwind label %1269

1267:                                             ; preds = %1249
  %1268 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.171", ptr %106, i32 0, i32 0
  store ptr %1266, ptr %1268, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #10
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %1276

1269:                                             ; preds = %1249
  %1270 = landingpad { ptr, i32 }
          cleanup
  %1271 = extractvalue { ptr, i32 } %1270, 0
  store ptr %1271, ptr %21, align 8
  %1272 = extractvalue { ptr, i32 } %1270, 1
  store i32 %1272, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #10
  br label %1273

1273:                                             ; preds = %1269, %1248, %1218
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #10
  br label %1274

1274:                                             ; preds = %1273, %1181, %1036
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %66) #10
  br label %1275

1275:                                             ; preds = %1274, %712
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %1626

1276:                                             ; preds = %1267, %675
  br label %1277

1277:                                             ; preds = %1276, %573
  %1278 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 9
  %1279 = load i8, ptr %1278, align 8, !tbaa !149, !range !100, !noundef !101
  %1280 = trunc i8 %1279 to i1
  br i1 %1280, label %1281, label %1346

1281:                                             ; preds = %1277
  %1282 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 5
  %1283 = call noundef zeroext i1 @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %1282) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #10
  store i1 false, ptr %109, align 1
  store i1 false, ptr %110, align 1
  br i1 %1283, label %1284, label %1285

1284:                                             ; preds = %1281
  br label %1290

1285:                                             ; preds = %1281
  call void @llvm.lifetime.start.p0(i64 384, ptr %108) #10
  store i1 true, ptr %109, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %108, ptr noundef @.str.3, i32 noundef 1799, ptr noundef @.str.48, i32 noundef 0)
          to label %1286 unwind label %1314

1286:                                             ; preds = %1285
  store i1 true, ptr %110, align 1
  %1287 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %108)
          to label %1288 unwind label %1318

1288:                                             ; preds = %1286
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %107, ptr noundef nonnull align 8 dereferenceable(380) %1287)
          to label %1289 unwind label %1318

1289:                                             ; preds = %1288
  br label %1290

1290:                                             ; preds = %1289, %1284
  %1291 = load i1, ptr %110, align 1
  br i1 %1291, label %1292, label %1294

1292:                                             ; preds = %1290
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %108)
          to label %1293 unwind label %1314

1293:                                             ; preds = %1292
  br label %1294

1294:                                             ; preds = %1293, %1290
  %1295 = load i1, ptr %109, align 1
  br i1 %1295, label %1296, label %1297

1296:                                             ; preds = %1294
  call void @llvm.lifetime.end.p0(i64 384, ptr %108) #10
  br label %1297

1297:                                             ; preds = %1296, %1294
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #10
  %1298 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 3
  %1299 = call noundef zeroext i1 @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1298) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #10
  store i1 false, ptr %113, align 1
  store i1 false, ptr %114, align 1
  br i1 %1299, label %1300, label %1301

1300:                                             ; preds = %1297
  br label %1306

1301:                                             ; preds = %1297
  call void @llvm.lifetime.start.p0(i64 384, ptr %112) #10
  store i1 true, ptr %113, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %112, ptr noundef @.str.3, i32 noundef 1800, ptr noundef @.str.49, i32 noundef 0)
          to label %1302 unwind label %1330

1302:                                             ; preds = %1301
  store i1 true, ptr %114, align 1
  %1303 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %112)
          to label %1304 unwind label %1334

1304:                                             ; preds = %1302
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %111, ptr noundef nonnull align 8 dereferenceable(380) %1303)
          to label %1305 unwind label %1334

1305:                                             ; preds = %1304
  br label %1306

1306:                                             ; preds = %1305, %1300
  %1307 = load i1, ptr %114, align 1
  br i1 %1307, label %1308, label %1310

1308:                                             ; preds = %1306
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %112)
          to label %1309 unwind label %1330

1309:                                             ; preds = %1308
  br label %1310

1310:                                             ; preds = %1309, %1306
  %1311 = load i1, ptr %113, align 1
  br i1 %1311, label %1312, label %1313

1312:                                             ; preds = %1310
  call void @llvm.lifetime.end.p0(i64 384, ptr %112) #10
  br label %1313

1313:                                             ; preds = %1312, %1310
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #10
  store i32 1, ptr %64, align 4
  br label %1622

1314:                                             ; preds = %1292, %1285
  %1315 = landingpad { ptr, i32 }
          cleanup
  %1316 = extractvalue { ptr, i32 } %1315, 0
  store ptr %1316, ptr %21, align 8
  %1317 = extractvalue { ptr, i32 } %1315, 1
  store i32 %1317, ptr %22, align 4
  br label %1326

1318:                                             ; preds = %1288, %1286
  %1319 = landingpad { ptr, i32 }
          cleanup
  %1320 = extractvalue { ptr, i32 } %1319, 0
  store ptr %1320, ptr %21, align 8
  %1321 = extractvalue { ptr, i32 } %1319, 1
  store i32 %1321, ptr %22, align 4
  %1322 = load i1, ptr %110, align 1
  br i1 %1322, label %1323, label %1325

1323:                                             ; preds = %1318
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %108)
          to label %1324 unwind label %1636

1324:                                             ; preds = %1323
  br label %1325

1325:                                             ; preds = %1324, %1318
  br label %1326

1326:                                             ; preds = %1325, %1314
  %1327 = load i1, ptr %109, align 1
  br i1 %1327, label %1328, label %1329

1328:                                             ; preds = %1326
  call void @llvm.lifetime.end.p0(i64 384, ptr %108) #10
  br label %1329

1329:                                             ; preds = %1328, %1326
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #10
  br label %1626

1330:                                             ; preds = %1308, %1301
  %1331 = landingpad { ptr, i32 }
          cleanup
  %1332 = extractvalue { ptr, i32 } %1331, 0
  store ptr %1332, ptr %21, align 8
  %1333 = extractvalue { ptr, i32 } %1331, 1
  store i32 %1333, ptr %22, align 4
  br label %1342

1334:                                             ; preds = %1304, %1302
  %1335 = landingpad { ptr, i32 }
          cleanup
  %1336 = extractvalue { ptr, i32 } %1335, 0
  store ptr %1336, ptr %21, align 8
  %1337 = extractvalue { ptr, i32 } %1335, 1
  store i32 %1337, ptr %22, align 4
  %1338 = load i1, ptr %114, align 1
  br i1 %1338, label %1339, label %1341

1339:                                             ; preds = %1334
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %112)
          to label %1340 unwind label %1636

1340:                                             ; preds = %1339
  br label %1341

1341:                                             ; preds = %1340, %1334
  br label %1342

1342:                                             ; preds = %1341, %1330
  %1343 = load i1, ptr %113, align 1
  br i1 %1343, label %1344, label %1345

1344:                                             ; preds = %1342
  call void @llvm.lifetime.end.p0(i64 384, ptr %112) #10
  br label %1345

1345:                                             ; preds = %1344, %1342
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #10
  br label %1626

1346:                                             ; preds = %1277
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #10
  %1347 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 5
  store ptr %1347, ptr %115, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #10
  %1348 = load ptr, ptr %115, align 8, !tbaa !5
  %1349 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1348) #10
  %1350 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %116, i32 0, i32 0
  store ptr %1349, ptr %1350, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #10
  %1351 = load ptr, ptr %115, align 8, !tbaa !5
  %1352 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1351) #10
  %1353 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %117, i32 0, i32 0
  store ptr %1352, ptr %1353, align 8
  br label %1354

1354:                                             ; preds = %1365, %1346
  %1355 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull align 8 dereferenceable(8) %117) #10
  br i1 %1355, label %1357, label %1356

1356:                                             ; preds = %1354
  store i32 30, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  br label %1376

1357:                                             ; preds = %1354
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #10
  %1358 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %116) #10
  %1359 = load ptr, ptr %1358, align 8, !tbaa !5
  store ptr %1359, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %119) #10
  %1360 = load ptr, ptr %118, align 8, !tbaa !5
  %1361 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1360, i32 0, i32 1
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %120, ptr noundef nonnull align 8 dereferenceable(24) %1361) #10
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef %120)
          to label %1362 unwind label %1367

1362:                                             ; preds = %1357
  call void @_ZN6Halide9LoopLevelC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(8) %1) #10
  %1363 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func8store_atENS_9LoopLevelE(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef %121)
          to label %1364 unwind label %1371

1364:                                             ; preds = %1362
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #10
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #10
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %120) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  br label %1365

1365:                                             ; preds = %1364
  %1366 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %116) #10
  br label %1354

1367:                                             ; preds = %1357
  %1368 = landingpad { ptr, i32 }
          cleanup
  %1369 = extractvalue { ptr, i32 } %1368, 0
  store ptr %1369, ptr %21, align 8
  %1370 = extractvalue { ptr, i32 } %1368, 1
  store i32 %1370, ptr %22, align 4
  br label %1375

1371:                                             ; preds = %1362
  %1372 = landingpad { ptr, i32 }
          cleanup
  %1373 = extractvalue { ptr, i32 } %1372, 0
  store ptr %1373, ptr %21, align 8
  %1374 = extractvalue { ptr, i32 } %1372, 1
  store i32 %1374, ptr %22, align 4
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #10
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #10
  br label %1375

1375:                                             ; preds = %1371, %1367
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %120) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #10
  br label %1626

1376:                                             ; preds = %1356
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #10
  %1377 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 2
  store ptr %1377, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #10
  %1378 = load ptr, ptr %122, align 8, !tbaa !5
  %1379 = call ptr @_ZNKSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1378) #10
  %1380 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %123, i32 0, i32 0
  store ptr %1379, ptr %1380, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #10
  %1381 = load ptr, ptr %122, align 8, !tbaa !5
  %1382 = call ptr @_ZNKSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1381) #10
  %1383 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.71", ptr %124, i32 0, i32 0
  store ptr %1382, ptr %1383, align 8
  br label %1384

1384:                                             ; preds = %1394, %1376
  %1385 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull align 8 dereferenceable(8) %124) #10
  br i1 %1385, label %1387, label %1386

1386:                                             ; preds = %1384
  store i32 32, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #10
  br label %1396

1387:                                             ; preds = %1384
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #10
  %1388 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %123) #10
  %1389 = load i64, ptr %1388, align 8, !tbaa !94
  store i64 %1389, ptr %125, align 8, !tbaa !94
  %1390 = load i64, ptr %125, align 8, !tbaa !94
  %1391 = sitofp i64 %1390 to double
  %1392 = load double, ptr %11, align 8, !tbaa !9
  %1393 = fdiv double %1392, %1391
  store double %1393, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #10
  br label %1394

1394:                                             ; preds = %1387
  %1395 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %123) #10
  br label %1384

1396:                                             ; preds = %1386
  %1397 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide9LoopLevel4lockEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1398 unwind label %560

1398:                                             ; preds = %1396
  call void @llvm.lifetime.start.p0(i64 32, ptr %126) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #10
  %1399 = invoke noundef zeroext i1 @_ZNK6Halide9LoopLevel7is_rootEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1400 unwind label %1404

1400:                                             ; preds = %1398
  br i1 %1399, label %1401, label %1408

1401:                                             ; preds = %1400
  %1402 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef @.str.50)
          to label %1403 unwind label %1404

1403:                                             ; preds = %1401
  br label %1447

1404:                                             ; preds = %1401, %1398
  %1405 = landingpad { ptr, i32 }
          cleanup
  %1406 = extractvalue { ptr, i32 } %1405, 0
  store ptr %1406, ptr %21, align 8
  %1407 = extractvalue { ptr, i32 } %1405, 1
  store i32 %1407, ptr %22, align 4
  br label %1625

1408:                                             ; preds = %1400
  call void @llvm.lifetime.start.p0(i64 32, ptr %127) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %128) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %129) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %130) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %131) #10
  invoke void @_ZNK6Halide9LoopLevel4funcB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %131, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1409 unwind label %1418

1409:                                             ; preds = %1408
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %130, ptr noundef @.str.51, ptr noundef nonnull align 8 dereferenceable(32) %131)
          to label %1410 unwind label %1422

1410:                                             ; preds = %1409
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %129, ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef @.str.30)
          to label %1411 unwind label %1426

1411:                                             ; preds = %1410
  call void @llvm.lifetime.start.p0(i64 88, ptr %132) #10
  invoke void @_ZNK6Halide9LoopLevel3varEv(ptr dead_on_unwind writable sret(%"struct.Halide::VarOrRVar") align 8 %132, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1412 unwind label %1430

1412:                                             ; preds = %1411
  %1413 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %132)
          to label %1414 unwind label %1434

1414:                                             ; preds = %1412
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %128, ptr noundef nonnull align 8 dereferenceable(32) %129, ptr noundef nonnull align 8 dereferenceable(32) %1413)
          to label %1415 unwind label %1434

1415:                                             ; preds = %1414
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %127, ptr noundef nonnull align 8 dereferenceable(32) %128, ptr noundef @.str.31)
          to label %1416 unwind label %1438

1416:                                             ; preds = %1415
  %1417 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef nonnull align 8 dereferenceable(32) %127) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #10
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %132) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr %132) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #10
  br label %1447

1418:                                             ; preds = %1408
  %1419 = landingpad { ptr, i32 }
          cleanup
  %1420 = extractvalue { ptr, i32 } %1419, 0
  store ptr %1420, ptr %21, align 8
  %1421 = extractvalue { ptr, i32 } %1419, 1
  store i32 %1421, ptr %22, align 4
  br label %1446

1422:                                             ; preds = %1409
  %1423 = landingpad { ptr, i32 }
          cleanup
  %1424 = extractvalue { ptr, i32 } %1423, 0
  store ptr %1424, ptr %21, align 8
  %1425 = extractvalue { ptr, i32 } %1423, 1
  store i32 %1425, ptr %22, align 4
  br label %1445

1426:                                             ; preds = %1410
  %1427 = landingpad { ptr, i32 }
          cleanup
  %1428 = extractvalue { ptr, i32 } %1427, 0
  store ptr %1428, ptr %21, align 8
  %1429 = extractvalue { ptr, i32 } %1427, 1
  store i32 %1429, ptr %22, align 4
  br label %1444

1430:                                             ; preds = %1411
  %1431 = landingpad { ptr, i32 }
          cleanup
  %1432 = extractvalue { ptr, i32 } %1431, 0
  store ptr %1432, ptr %21, align 8
  %1433 = extractvalue { ptr, i32 } %1431, 1
  store i32 %1433, ptr %22, align 4
  br label %1443

1434:                                             ; preds = %1414, %1412
  %1435 = landingpad { ptr, i32 }
          cleanup
  %1436 = extractvalue { ptr, i32 } %1435, 0
  store ptr %1436, ptr %21, align 8
  %1437 = extractvalue { ptr, i32 } %1435, 1
  store i32 %1437, ptr %22, align 4
  br label %1442

1438:                                             ; preds = %1415
  %1439 = landingpad { ptr, i32 }
          cleanup
  %1440 = extractvalue { ptr, i32 } %1439, 0
  store ptr %1440, ptr %21, align 8
  %1441 = extractvalue { ptr, i32 } %1439, 1
  store i32 %1441, ptr %22, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %128) #10
  br label %1442

1442:                                             ; preds = %1438, %1434
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %132) #10
  br label %1443

1443:                                             ; preds = %1442, %1430
  call void @llvm.lifetime.end.p0(i64 88, ptr %132) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %129) #10
  br label %1444

1444:                                             ; preds = %1443, %1426
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #10
  br label %1445

1445:                                             ; preds = %1444, %1422
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #10
  br label %1446

1446:                                             ; preds = %1445, %1418
  call void @llvm.lifetime.end.p0(i64 32, ptr %131) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %129) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %127) #10
  br label %1625

1447:                                             ; preds = %1416, %1403
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #10
  %1448 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 3
  store ptr %1448, ptr %133, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #10
  %1449 = load ptr, ptr %133, align 8, !tbaa !5
  %1450 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1449) #10
  %1451 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %134, i32 0, i32 0
  store ptr %1450, ptr %1451, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #10
  %1452 = load ptr, ptr %133, align 8, !tbaa !5
  %1453 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1452) #10
  %1454 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %135, i32 0, i32 0
  store ptr %1453, ptr %1454, align 8
  br label %1455

1455:                                             ; preds = %1548, %1447
  %1456 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %134, ptr noundef nonnull align 8 dereferenceable(8) %135) #10
  br i1 %1456, label %1458, label %1457

1457:                                             ; preds = %1455
  store i32 34, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #10
  br label %1551

1458:                                             ; preds = %1455
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #10
  %1459 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %134) #10
  store ptr %1459, ptr %136, align 8, !tbaa !5
  %1460 = load ptr, ptr %136, align 8, !tbaa !5
  %1461 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1460)
          to label %1462 unwind label %1478

1462:                                             ; preds = %1458
  %1463 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1461, i32 0, i32 7
  %1464 = load ptr, ptr %1463, align 8, !tbaa !13
  %1465 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %1466 = load ptr, ptr %1465, align 8, !tbaa !13
  %1467 = icmp ne ptr %1464, %1466
  br i1 %1467, label %1468, label %1496

1468:                                             ; preds = %1462
  call void @llvm.lifetime.start.p0(i64 32, ptr %137) #10
  %1469 = load ptr, ptr %136, align 8, !tbaa !5
  %1470 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1469)
          to label %1471 unwind label %1482

1471:                                             ; preds = %1468
  %1472 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1470, i32 0, i32 7
  %1473 = load ptr, ptr %1472, align 8, !tbaa !13
  %1474 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1473, i32 0, i32 1
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %138, ptr noundef nonnull align 8 dereferenceable(24) %1474) #10
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef %138)
          to label %1475 unwind label %1486

1475:                                             ; preds = %1471
  call void @_ZN6Halide9LoopLevelC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull align 8 dereferenceable(8) %1) #10
  %1476 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func10compute_atENS_9LoopLevelE(ptr noundef nonnull align 8 dereferenceable(32) %137, ptr noundef %139)
          to label %1477 unwind label %1490

1477:                                             ; preds = %1475
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #10
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #10
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %138) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #10
  br label %1496

1478:                                             ; preds = %1514, %1505, %1496, %1458
  %1479 = landingpad { ptr, i32 }
          cleanup
  %1480 = extractvalue { ptr, i32 } %1479, 0
  store ptr %1480, ptr %21, align 8
  %1481 = extractvalue { ptr, i32 } %1479, 1
  store i32 %1481, ptr %22, align 4
  br label %1550

1482:                                             ; preds = %1468
  %1483 = landingpad { ptr, i32 }
          cleanup
  %1484 = extractvalue { ptr, i32 } %1483, 0
  store ptr %1484, ptr %21, align 8
  %1485 = extractvalue { ptr, i32 } %1483, 1
  store i32 %1485, ptr %22, align 4
  br label %1495

1486:                                             ; preds = %1471
  %1487 = landingpad { ptr, i32 }
          cleanup
  %1488 = extractvalue { ptr, i32 } %1487, 0
  store ptr %1488, ptr %21, align 8
  %1489 = extractvalue { ptr, i32 } %1487, 1
  store i32 %1489, ptr %22, align 4
  br label %1494

1490:                                             ; preds = %1475
  %1491 = landingpad { ptr, i32 }
          cleanup
  %1492 = extractvalue { ptr, i32 } %1491, 0
  store ptr %1492, ptr %21, align 8
  %1493 = extractvalue { ptr, i32 } %1491, 1
  store i32 %1493, ptr %22, align 4
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #10
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %137) #10
  br label %1494

1494:                                             ; preds = %1490, %1486
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %138) #10
  br label %1495

1495:                                             ; preds = %1494, %1482
  call void @llvm.lifetime.end.p0(i64 32, ptr %137) #10
  br label %1550

1496:                                             ; preds = %1477, %1462
  %1497 = load ptr, ptr %136, align 8, !tbaa !5
  %1498 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1497)
          to label %1499 unwind label %1478

1499:                                             ; preds = %1496
  call void @_ZN6Halide9LoopLevelC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef nonnull align 8 dereferenceable(8) %1) #10
  %1500 = load ptr, ptr %10, align 8, !tbaa !5
  %1501 = load double, ptr %11, align 8, !tbaa !9
  %1502 = load i32, ptr %12, align 4, !tbaa !11
  %1503 = add nsw i32 %1502, 1
  %1504 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZNK6Halide8Internal13Autoscheduler8LoopNest5applyENS_9LoopLevelER14PerfectHashMapINS1_11FunctionDAG4Node5StageESt10unique_ptrINS2_18StageScheduleStateESt14default_deleteIS9_EELi4E22PerfectHashMapAsserterEdiPKS2_SH_(ptr noundef nonnull align 8 dereferenceable(196) %1498, ptr noundef %140, ptr noundef nonnull align 8 dereferenceable(32) %1500, double noundef %1501, i32 noundef %1503, ptr noundef %152, ptr noundef %1504)
          to label %1505 unwind label %1539

1505:                                             ; preds = %1499
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #10
  %1506 = load ptr, ptr %136, align 8, !tbaa !5
  %1507 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1506)
          to label %1508 unwind label %1478

1508:                                             ; preds = %1505
  %1509 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1507, i32 0, i32 7
  %1510 = load ptr, ptr %1509, align 8, !tbaa !13
  %1511 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 7
  %1512 = load ptr, ptr %1511, align 8, !tbaa !13
  %1513 = icmp ne ptr %1510, %1512
  br i1 %1513, label %1514, label %1547

1514:                                             ; preds = %1508
  %1515 = load ptr, ptr %136, align 8, !tbaa !5
  %1516 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1515)
          to label %1517 unwind label %1478

1517:                                             ; preds = %1514
  %1518 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1516, i32 0, i32 8
  %1519 = load ptr, ptr %1518, align 8, !tbaa !48
  %1520 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1519, i32 0, i32 1
  %1521 = load i32, ptr %1520, align 8, !tbaa !49
  %1522 = icmp eq i32 %1521, 0
  br i1 %1522, label %1523, label %1547

1523:                                             ; preds = %1517
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #10
  %1524 = load ptr, ptr %10, align 8, !tbaa !5
  %1525 = load ptr, ptr %136, align 8, !tbaa !5
  %1526 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1525)
          to label %1527 unwind label %1543

1527:                                             ; preds = %1523
  %1528 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1526, i32 0, i32 8
  %1529 = load ptr, ptr %1528, align 8, !tbaa !48
  %1530 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %1524, ptr noundef %1529)
          to label %1531 unwind label %1543

1531:                                             ; preds = %1527
  %1532 = call noundef nonnull align 8 dereferenceable(416) ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1530) #10
  store ptr %1532, ptr %141, align 8, !tbaa !5
  %1533 = load ptr, ptr %141, align 8, !tbaa !5
  %1534 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1533, i32 0, i32 4
  %1535 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1534, ptr noundef @.str.52)
          to label %1536 unwind label %1543

1536:                                             ; preds = %1531
  %1537 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1535, ptr noundef nonnull align 8 dereferenceable(32) %126)
          to label %1538 unwind label %1543

1538:                                             ; preds = %1536
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #10
  br label %1547

1539:                                             ; preds = %1499
  %1540 = landingpad { ptr, i32 }
          cleanup
  %1541 = extractvalue { ptr, i32 } %1540, 0
  store ptr %1541, ptr %21, align 8
  %1542 = extractvalue { ptr, i32 } %1540, 1
  store i32 %1542, ptr %22, align 4
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #10
  br label %1550

1543:                                             ; preds = %1536, %1531, %1527, %1523
  %1544 = landingpad { ptr, i32 }
          cleanup
  %1545 = extractvalue { ptr, i32 } %1544, 0
  store ptr %1545, ptr %21, align 8
  %1546 = extractvalue { ptr, i32 } %1544, 1
  store i32 %1546, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #10
  br label %1550

1547:                                             ; preds = %1538, %1517, %1508
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #10
  br label %1548

1548:                                             ; preds = %1547
  %1549 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %134) #10
  br label %1455

1550:                                             ; preds = %1543, %1539, %1495, %1478
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #10
  br label %1625

1551:                                             ; preds = %1457
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #10
  %1552 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 5
  store ptr %1552, ptr %142, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #10
  %1553 = load ptr, ptr %142, align 8, !tbaa !5
  %1554 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1553) #10
  %1555 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %143, i32 0, i32 0
  store ptr %1554, ptr %1555, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #10
  %1556 = load ptr, ptr %142, align 8, !tbaa !5
  %1557 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1556) #10
  %1558 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %144, i32 0, i32 0
  store ptr %1557, ptr %1558, align 8
  br label %1559

1559:                                             ; preds = %1618, %1551
  %1560 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %144) #10
  br i1 %1560, label %1562, label %1561

1561:                                             ; preds = %1559
  store i32 36, ptr %64, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #10
  br label %1621

1562:                                             ; preds = %1559
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #10
  %1563 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %143) #10
  %1564 = load ptr, ptr %1563, align 8, !tbaa !5
  store ptr %1564, ptr %145, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %146) #10
  store i8 0, ptr %146, align 1, !tbaa !154
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #10
  %1565 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %152, i32 0, i32 3
  store ptr %1565, ptr %147, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #10
  %1566 = load ptr, ptr %147, align 8, !tbaa !5
  %1567 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1566) #10
  %1568 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %148, i32 0, i32 0
  store ptr %1567, ptr %1568, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #10
  %1569 = load ptr, ptr %147, align 8, !tbaa !5
  %1570 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1569) #10
  %1571 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %149, i32 0, i32 0
  store ptr %1570, ptr %1571, align 8
  br label %1572

1572:                                             ; preds = %1593, %1562
  %1573 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %149) #10
  br i1 %1573, label %1575, label %1574

1574:                                             ; preds = %1572
  store i32 38, ptr %64, align 4
  br label %1595

1575:                                             ; preds = %1572
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #10
  %1576 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #10
  store ptr %1576, ptr %150, align 8, !tbaa !5
  %1577 = load ptr, ptr %150, align 8, !tbaa !5
  %1578 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1577)
          to label %1579 unwind label %1585

1579:                                             ; preds = %1575
  %1580 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1578, i32 0, i32 7
  %1581 = load ptr, ptr %1580, align 8, !tbaa !13
  %1582 = load ptr, ptr %145, align 8, !tbaa !5
  %1583 = icmp eq ptr %1581, %1582
  br i1 %1583, label %1584, label %1589

1584:                                             ; preds = %1579
  store i8 1, ptr %146, align 1, !tbaa !154
  store i32 38, ptr %64, align 4
  br label %1590

1585:                                             ; preds = %1575
  %1586 = landingpad { ptr, i32 }
          cleanup
  %1587 = extractvalue { ptr, i32 } %1586, 0
  store ptr %1587, ptr %21, align 8
  %1588 = extractvalue { ptr, i32 } %1586, 1
  store i32 %1588, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #10
  br label %1620

1589:                                             ; preds = %1579
  store i32 0, ptr %64, align 4
  br label %1590

1590:                                             ; preds = %1589, %1584
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #10
  %1591 = load i32, ptr %64, align 4
  switch i32 %1591, label %1595 [
    i32 0, label %1592
  ]

1592:                                             ; preds = %1590
  br label %1593

1593:                                             ; preds = %1592
  %1594 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #10
  br label %1572

1595:                                             ; preds = %1590, %1574
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #10
  br label %1596

1596:                                             ; preds = %1595
  %1597 = load i8, ptr %146, align 1, !tbaa !154, !range !100, !noundef !101
  %1598 = trunc i8 %1597 to i1
  br i1 %1598, label %1617, label %1599

1599:                                             ; preds = %1596
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #10
  %1600 = load ptr, ptr %10, align 8, !tbaa !5
  %1601 = load ptr, ptr %145, align 8, !tbaa !5
  %1602 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1601, i32 0, i32 7
  %1603 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1602, i64 noundef 0) #10
  %1604 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %1600, ptr noundef %1603)
          to label %1605 unwind label %1613

1605:                                             ; preds = %1599
  %1606 = call noundef nonnull align 8 dereferenceable(416) ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1604) #10
  store ptr %1606, ptr %151, align 8, !tbaa !5
  %1607 = load ptr, ptr %151, align 8, !tbaa !5
  %1608 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState", ptr %1607, i32 0, i32 4
  %1609 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1608, ptr noundef @.str.53)
          to label %1610 unwind label %1613

1610:                                             ; preds = %1605
  %1611 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1609, ptr noundef nonnull align 8 dereferenceable(32) %126)
          to label %1612 unwind label %1613

1612:                                             ; preds = %1610
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #10
  br label %1617

1613:                                             ; preds = %1610, %1605, %1599
  %1614 = landingpad { ptr, i32 }
          cleanup
  %1615 = extractvalue { ptr, i32 } %1614, 0
  store ptr %1615, ptr %21, align 8
  %1616 = extractvalue { ptr, i32 } %1614, 1
  store i32 %1616, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #10
  br label %1620

1617:                                             ; preds = %1612, %1596
  call void @llvm.lifetime.end.p0(i64 1, ptr %146) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  br label %1618

1618:                                             ; preds = %1617
  %1619 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %143) #10
  br label %1559

1620:                                             ; preds = %1613, %1585
  call void @llvm.lifetime.end.p0(i64 1, ptr %146) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #10
  br label %1625

1621:                                             ; preds = %1561
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #10
  store i32 0, ptr %64, align 4
  br label %1622

1622:                                             ; preds = %1621, %1313
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %40) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  %1623 = load i32, ptr %64, align 4
  switch i32 %1623, label %1639 [
    i32 0, label %1624
    i32 1, label %1630
  ]

1624:                                             ; preds = %1622
  br label %1630

1625:                                             ; preds = %1620, %1550, %1446, %1404
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %126) #10
  br label %1626

1626:                                             ; preds = %1625, %1375, %1345, %1329, %1275, %674, %560
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %1627

1627:                                             ; preds = %1626, %548, %470
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %40) #10
  br label %1628

1628:                                             ; preds = %1627, %461
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  br label %1629

1629:                                             ; preds = %1628, %424
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %1631

1630:                                             ; preds = %1624, %1622, %218
  ret void

1631:                                             ; preds = %1629, %251, %217
  %1632 = load ptr, ptr %21, align 8
  %1633 = load i32, ptr %22, align 4
  %1634 = insertvalue { ptr, i32 } poison, ptr %1632, 0
  %1635 = insertvalue { ptr, i32 } %1634, i32 %1633, 1
  resume { ptr, i32 } %1635

1636:                                             ; preds = %1339, %1323, %659, %246
  %1637 = landingpad { ptr, i32 }
          catch ptr null
  %1638 = extractvalue { ptr, i32 } %1637, 0
  call void @__clang_call_terminate(ptr %1638) #13
  unreachable

1639:                                             ; preds = %1622
  unreachable
}

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

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func12compute_rootEv(ptr noundef nonnull align 8 dereferenceable(32)) #5

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

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

declare void @_ZN6Halide9LoopLevel4rootEv(ptr dead_on_unwind writable sret(%"class.Halide::LoopLevel") align 8) #5

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

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

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

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

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

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #9

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(81) ptr @_ZN6Halide9VarOrRVaraSERKS0_(ptr noundef nonnull align 8 dereferenceable(81), ptr noundef nonnull align 8 dereferenceable(81)) #8 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZNK6Halide4FunccvNS_5StageEEv(ptr dead_on_unwind writable sret(%"class.Halide::Stage") align 8, ptr noundef nonnull align 8 dereferenceable(32)) #5

declare void @_ZN6Halide4Func6updateEi(ptr dead_on_unwind writable sret(%"class.Halide::Stage") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #5

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage9vectorizeENS_9VarOrRVarE(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef) #5

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(230) ptr @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVaraSERKS4_(ptr noundef nonnull align 8 dereferenceable(230), ptr noundef nonnull align 8 dereferenceable(230)) #8 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #8

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide9VarOrRVarC2ERKNS_4RVarE(ptr noundef nonnull align 8 dereferenceable(81), ptr noundef nonnull align 8 dereferenceable(44)) unnamed_addr #3 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6HalidelsERSoRKNS_12TailStrategyE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #5

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS7_SaIS7_EEEEZNKS5_5applyENS2_9LoopLevelER14PerfectHashMapINS4_11FunctionDAG4Node5StageESt10unique_ptrIS6_St14default_deleteIS6_EELi4E22PerfectHashMapAsserterEdiPKS5_SQ_E3$_0EvT_SS_T0_"(ptr, ptr) #8

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

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

declare noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage6unrollENS_9VarOrRVarE(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef) #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(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(230) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

declare void @_ZN6Halide9LoopLevelC1ERKNS_8Internal8FunctionENS_9VarOrRVarEi(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, i32 noundef) unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide3Var9outermostEv(ptr dead_on_unwind noalias writable sret(%"class.Halide::Var") align 8) #3 align 2

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func8store_atENS_9LoopLevelE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #5

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide9LoopLevel4lockEv(ptr noundef nonnull align 8 dereferenceable(8)) #5

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

declare noundef zeroext i1 @_ZNK6Halide9LoopLevel7is_rootEv(ptr noundef nonnull align 8 dereferenceable(8)) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #8

declare void @_ZNK6Halide9LoopLevel4funcB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #5

declare void @_ZNK6Halide9LoopLevel3varEv(ptr dead_on_unwind writable sret(%"struct.Halide::VarOrRVar") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #5

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func10compute_atENS_9LoopLevelE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !6, i64 168}
!14 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNestE", !15, i64 0, !18, i64 8, !22, i64 32, !26, i64 56, !32, i64 88, !41, i64 136, !6, i64 168, !6, i64 176, !47, i64 184, !47, i64 185, !47, i64 186, !12, i64 188, !12, i64 192}
!15 = !{!"_ZTSN6Halide8Internal8RefCountE", !16, i64 0}
!16 = !{!"_ZTSSt6atomicIiE", !17, i64 0}
!17 = !{!"_ZTSSt13__atomic_baseIiE", !12, i64 0}
!18 = !{!"_ZTSSt6vectorIlSaIlEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE", !27, i64 0, !12, i64 24, !31, i64 28}
!27 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterEUt_E", !7, i64 0}
!32 = !{!"_ZTSSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE", !33, i64 0}
!33 = !{!"_ZTSSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE", !34, i64 0}
!34 = !{!"_ZTSNSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !35, i64 0, !37, i64 8}
!35 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEE", !36, i64 0}
!36 = !{!"_ZTSSt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEE"}
!37 = !{!"_ZTSSt15_Rb_tree_header", !38, i64 0, !40, i64 32}
!38 = !{!"_ZTSSt18_Rb_tree_node_base", !39, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!39 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!40 = !{!"long", !7, i64 0}
!41 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterE", !42, i64 0, !12, i64 24, !46, i64 28}
!42 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterEUt_E", !7, i64 0}
!47 = !{!"bool", !7, i64 0}
!48 = !{!14, !6, i64 176}
!49 = !{!50, !12, i64 8}
!50 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageE", !6, i64 0, !12, i64 8, !51, i64 16, !47, i64 40, !12, i64 44, !55, i64 48, !56, i64 1200, !66, i64 1264, !12, i64 1296, !12, i64 1300, !68, i64 1304, !72, i64 1328}
!51 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"_ZTSN6Halide8Internal16PipelineFeaturesE", !7, i64 0, !7, i64 28, !7, i64 700, !7, i64 812, !7, i64 924, !7, i64 1036}
!56 = !{!"_ZTSN6Halide5StageE", !57, i64 0, !60, i64 24, !40, i64 32, !62, i64 40}
!57 = !{!"_ZTSN6Halide8Internal8FunctionE", !58, i64 0}
!58 = !{!"_ZTSN6Halide8Internal11FunctionPtrE", !59, i64 0, !6, i64 8, !12, i64 16}
!59 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_13FunctionGroupEEE", !6, i64 0}
!60 = !{!"_ZTSN6Halide8Internal10DefinitionE", !61, i64 0}
!61 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_18DefinitionContentsEEE", !6, i64 0}
!62 = !{!"_ZTSSt6vectorIN6Halide3VarESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSSt12_Vector_baseIN6Halide3VarESaIS1_EE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE12_Vector_implE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!66 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !67, i64 0, !40, i64 8, !7, i64 16}
!67 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!68 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!72 = !{!"_ZTSSt6vectorIbSaIbEE", !73, i64 0}
!73 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !74, i64 0}
!74 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !76, i64 0, !76, i64 16, !6, i64 32}
!76 = !{!"_ZTSSt13_Bit_iterator", !77, i64 0}
!77 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !12, i64 8}
!78 = !{!79, !10, i64 0}
!79 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateE", !10, i64 0, !12, i64 8, !12, i64 12, !80, i64 16, !84, i64 40}
!80 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE", !81, i64 0}
!81 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE12_Vector_implE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!84 = !{!"_ZTSNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE", !85, i64 0, !86, i64 8}
!85 = !{!"_ZTSSo"}
!86 = !{!"_ZTSNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE", !87, i64 0, !89, i64 64, !66, i64 72}
!87 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !88, i64 56}
!88 = !{!"_ZTSSt6locale", !6, i64 0}
!89 = !{!"_ZTSSt13_Ios_Openmode", !7, i64 0}
!90 = !{!14, !12, i64 188}
!91 = !{!79, !12, i64 8}
!92 = !{!14, !12, i64 192}
!93 = !{!79, !12, i64 12}
!94 = !{!40, !40, i64 0}
!95 = !{!96, !47, i64 32}
!96 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopE", !66, i64 0, !47, i64 32, !47, i64 33, !97, i64 40, !97, i64 48, !12, i64 56, !47, i64 60, !12, i64 64, !47, i64 68, !40, i64 72, !40, i64 80, !66, i64 88}
!97 = !{!"_ZTSN6Halide4ExprE", !98, i64 0}
!98 = !{!"_ZTSN6Halide8Internal8IRHandleE", !99, i64 0}
!99 = !{!"_ZTSN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEEE", !6, i64 0}
!100 = !{i8 0, i8 2}
!101 = !{}
!102 = !{!103, !40, i64 208}
!103 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarE", !104, i64 0, !104, i64 88, !66, i64 176, !40, i64 208, !40, i64 216, !47, i64 224, !47, i64 225, !47, i64 226, !47, i64 227, !47, i64 228, !47, i64 229}
!104 = !{!"_ZTSN6Halide9VarOrRVarE", !105, i64 0, !106, i64 32, !47, i64 80}
!105 = !{!"_ZTSN6Halide3VarE", !66, i64 0}
!106 = !{!"_ZTSN6Halide4RVarE", !66, i64 0, !107, i64 32, !12, i64 40}
!107 = !{!"_ZTSN6Halide8Internal15ReductionDomainE", !108, i64 0}
!108 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_23ReductionDomainContentsEEE", !6, i64 0}
!109 = !{!103, !47, i64 229}
!110 = !{!103, !47, i64 225}
!111 = !{!14, !47, i64 186}
!112 = !{!103, !47, i64 226}
!113 = !{!103, !47, i64 227}
!114 = !{!103, !47, i64 228}
!115 = !{!103, !40, i64 216}
!116 = !{!103, !47, i64 224}
!117 = distinct !{!117, !118}
!118 = !{!"llvm.loop.mustprogress"}
!119 = distinct !{!119, !118}
!120 = !{!121, !10, i64 32}
!121 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4NodeE", !6, i64 0, !57, i64 8, !10, i64 32, !122, i64 40, !126, i64 64, !130, i64 88, !47, i64 112, !134, i64 120, !68, i64 144, !12, i64 168, !12, i64 172, !12, i64 176, !12, i64 180, !47, i64 184, !47, i64 185, !47, i64 186, !47, i64 187, !47, i64 188, !138, i64 192}
!122 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !123, i64 0}
!123 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !124, i64 0}
!124 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12_Vector_implE", !125, i64 0}
!125 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!126 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !127, i64 0}
!127 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !128, i64 0}
!128 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE12_Vector_implE", !129, i64 0}
!129 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!130 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !131, i64 0}
!131 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !132, i64 0}
!132 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE12_Vector_implE", !133, i64 0}
!133 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!134 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !135, i64 0}
!135 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !136, i64 0}
!136 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12_Vector_implE", !137, i64 0}
!137 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!138 = !{!"_ZTSSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !139, i64 0}
!139 = !{!"_ZTSSt15__uniq_ptr_dataIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_ELb1ELb1EE", !140, i64 0}
!140 = !{!"_ZTSSt15__uniq_ptr_implIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !141, i64 0}
!141 = !{!"_ZTSSt5tupleIJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !142, i64 0}
!142 = !{!"_ZTSSt11_Tuple_implILm0EJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !143, i64 0}
!143 = !{!"_ZTSSt10_Head_baseILm0EPN6Halide8Internal13Autoscheduler13BoundContents6LayoutELb0EE", !6, i64 0}
!144 = !{!121, !12, i64 180}
!145 = distinct !{!145, !118}
!146 = !{!147, !147, i64 0}
!147 = !{!"_ZTSN6Halide12TailStrategyE", !7, i64 0}
!148 = !{!121, !47, i64 186}
!149 = !{!14, !47, i64 184}
!150 = distinct !{!150, !118}
!151 = distinct !{!151, !118}
!152 = !{!103, !47, i64 168}
!153 = distinct !{!153, !118}
!154 = !{!47, !47, i64 0}
!155 = distinct !{!155, !118}
!156 = distinct !{!156, !118}


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

%"class.__gnu_cxx::__normal_iterator.54" = type { ptr }
%"class.Halide::Func" = type { %"class.Halide::Internal::Function", %"class.Halide::Pipeline" }
%"class.Halide::Internal::Function" = type { %"struct.Halide::Internal::FunctionPtr" }
%"struct.Halide::Internal::FunctionPtr" = type <{ %"struct.Halide::Internal::IntrusivePtr", ptr, i32, [4 x i8] }>
%"struct.Halide::Internal::IntrusivePtr" = type { ptr }
%"class.Halide::Pipeline" = type { %"struct.Halide::Internal::IntrusivePtr.150" }
%"struct.Halide::Internal::IntrusivePtr.150" = type { ptr }
%"class.Halide::LoopLevel" = type { %"struct.Halide::Internal::IntrusivePtr.149" }
%"struct.Halide::Internal::IntrusivePtr.149" = type { ptr }
%"class.Halide::Internal::Voidifier" = type { i8 }
%"struct.Halide::Internal::ErrorReport" = type <{ %"class.std::__cxx11::basic_ostringstream", i32, [4 x i8] }>
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar" = type <{ %"struct.Halide::VarOrRVar", %"struct.Halide::VarOrRVar", %"class.std::__cxx11::basic_string", i64, i64, i8, i8, i8, i8, i8, i8, [2 x i8] }>
%"struct.Halide::VarOrRVar" = type <{ %"class.Halide::Var", %"class.Halide::RVar", i8, [7 x i8] }>
%"class.Halide::Var" = type { %"class.std::__cxx11::basic_string" }
%"class.Halide::RVar" = type <{ %"class.std::__cxx11::basic_string", %"class.Halide::Internal::ReductionDomain", i32, [4 x i8] }>
%"class.Halide::Internal::ReductionDomain" = type { %"struct.Halide::Internal::IntrusivePtr.170" }
%"struct.Halide::Internal::IntrusivePtr.170" = type { ptr }
%"class.std::unique_ptr.157" = type { %"struct.std::__uniq_ptr_data.158" }
%"struct.std::__uniq_ptr_data.158" = type { %"class.std::__uniq_ptr_impl.159" }
%"class.std::__uniq_ptr_impl.159" = type { %"class.std::tuple.160" }
%"class.std::tuple.160" = type { %"struct.std::_Tuple_impl.161" }
%"struct.std::_Tuple_impl.161" = type { %"struct.std::_Head_base.164" }
%"struct.std::_Head_base.164" = type { ptr }
%"class.Halide::Stage" = type { %"class.Halide::Internal::Function", %"class.Halide::Internal::Definition", i64, %"class.std::vector.62" }
%"class.Halide::Internal::Definition" = type { %"struct.Halide::Internal::IntrusivePtr.61" }
%"struct.Halide::Internal::IntrusivePtr.61" = type { ptr }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.165" = type { %"struct.std::_Vector_base.166" }
%"struct.std::_Vector_base.166" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar, std::allocator<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar, std::allocator<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar, std::allocator<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar, std::allocator<Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Halide::Expr" = type { %"struct.Halide::Internal::IRHandle" }
%"struct.Halide::Internal::IRHandle" = type { %"struct.Halide::Internal::IntrusivePtr.79" }
%"struct.Halide::Internal::IntrusivePtr.79" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.171" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.174" = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.71" = type { ptr }

@.str.3 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [12 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(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(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(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(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(380)) local_unnamed_addr #4 align 2

declare void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #5

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

declare void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380)) unnamed_addr #5

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i32 noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest21accesses_input_bufferEv(ptr noundef nonnull align 8 dereferenceable(196)) local_unnamed_addr #3 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK6Halide8Internal13Autoscheduler8LoopNest5applyENS_9LoopLevelER14PerfectHashMapINS1_11FunctionDAG4Node5StageESt10unique_ptrINS2_18StageScheduleStateESt14default_deleteIS9_EELi4E22PerfectHashMapAsserterEdiPKS2_SH_(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(32) %2, double noundef %3, i32 noundef %4, ptr noundef %5, ptr noundef %6) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %10 = alloca %"class.Halide::Func", align 8
  %11 = alloca %"class.Halide::Internal::Function", align 8
  %12 = alloca %"class.Halide::LoopLevel", align 8
  %13 = alloca %"class.Halide::Internal::Voidifier", align 1
  %14 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %15 = alloca %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", align 8
  %16 = alloca %"struct.Halide::VarOrRVar", align 8
  %17 = alloca %"class.std::unique_ptr.157", align 8
  %18 = alloca %"class.Halide::Stage", align 8
  %19 = alloca %"class.Halide::Func", align 8
  %20 = alloca %"class.Halide::Internal::Function", align 8
  %21 = alloca %"class.Halide::Stage", align 8
  %22 = alloca %"class.Halide::Func", align 8
  %23 = alloca %"class.Halide::Internal::Function", align 8
  %24 = alloca %"class.Halide::Func", align 8
  %25 = alloca %"class.Halide::Internal::Function", align 8
  %26 = alloca %"class.Halide::Internal::Voidifier", align 1
  %27 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %28 = alloca %"struct.Halide::VarOrRVar", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %31 = alloca %"class.std::vector.165", align 8
  %32 = alloca %"struct.Halide::Internal::Autoscheduler::LoopNest::StageScheduleState::FuncVar", align 8
  %33 = alloca %"struct.Halide::VarOrRVar", align 8
  %34 = alloca %"class.Halide::Var", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"struct.Halide::VarOrRVar", align 8
  %37 = alloca %"class.Halide::RVar", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca i32, align 4
  %40 = alloca %"struct.Halide::VarOrRVar", align 8
  %41 = alloca %"struct.Halide::VarOrRVar", align 8
  %42 = alloca %"struct.Halide::VarOrRVar", align 8
  %43 = alloca %"struct.Halide::Expr", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %45 = alloca %"struct.Halide::VarOrRVar", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %48 = alloca %"class.Halide::LoopLevel", align 8
  %49 = alloca %"struct.Halide::VarOrRVar", align 8
  %50 = alloca %"class.Halide::LoopLevel", align 8
  %51 = alloca %"struct.Halide::VarOrRVar", align 8
  %52 = alloca %"class.Halide::Var", align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.174", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.171", align 8
  %55 = alloca %"class.Halide::Internal::Voidifier", align 1
  %56 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %57 = alloca %"class.Halide::Internal::Voidifier", align 1
  %58 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %59 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %60 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %61 = alloca %"class.Halide::Func", align 8
  %62 = alloca %"class.Halide::Internal::Function", align 8
  %63 = alloca %"class.Halide::LoopLevel", align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %65 = alloca %"class.__gnu_cxx::__normal_iterator.71", align 8
  %66 = alloca %"class.std::__cxx11::basic_string", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.std::__cxx11::basic_string", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::__cxx11::basic_string", align 8
  %72 = alloca %"struct.Halide::VarOrRVar", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %74 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %75 = alloca %"class.Halide::Func", align 8
  %76 = alloca %"class.Halide::Internal::Function", align 8
  %77 = alloca %"class.Halide::LoopLevel", align 8
  %78 = alloca %"class.Halide::LoopLevel", align 8
  %79 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %80 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %81 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %82 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %83 = tail call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %0)
  br i1 %83, label %84, label %125

84:                                               ; preds = %7
  %85 = getelementptr inbounds i8, ptr %0, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #11
  %86 = tail call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #11
  store ptr %86, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #11
  %87 = tail call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #11
  store ptr %87, ptr %9, align 8
  %88 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #11
  br i1 %88, label %.lr.ph478, label %._crit_edge479

._crit_edge479:                                   ; preds = %121, %84
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #11
  br label %869

.lr.ph478:                                        ; preds = %84, %121
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #11
  %90 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %89)
  %91 = getelementptr inbounds i8, ptr %90, i64 168
  %92 = load ptr, ptr %91, align 8, !tbaa !5
  %93 = getelementptr inbounds i8, ptr %92, i64 8
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %93) #11
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %11)
          to label %94 unwind label %114

94:                                               ; preds = %.lr.ph478
  %95 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func12compute_rootEv(ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %96 unwind label %116

96:                                               ; preds = %94
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #11
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #11
  %97 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %89)
  call void @_ZN6Halide9LoopLevel4rootEv(ptr dead_on_unwind nonnull writable sret(%"class.Halide::LoopLevel") align 8 %12)
  %98 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %89)
  invoke void @_ZNK6Halide8Internal13Autoscheduler8LoopNest5applyENS_9LoopLevelER14PerfectHashMapINS1_11FunctionDAG4Node5StageESt10unique_ptrINS2_18StageScheduleStateESt14default_deleteIS9_EELi4E22PerfectHashMapAsserterEdiPKS2_SH_(ptr noundef nonnull align 8 dereferenceable(196) %97, ptr noundef nonnull %12, ptr noundef nonnull align 8 dereferenceable(32) %2, double noundef %3, i32 noundef 1, ptr noundef nonnull %0, ptr noundef %98)
          to label %99 unwind label %119

99:                                               ; preds = %96
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  %100 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %89)
  %101 = getelementptr inbounds i8, ptr %100, i64 176
  %102 = load ptr, ptr %101, align 8, !tbaa !44
  %103 = getelementptr inbounds i8, ptr %102, i64 8
  %104 = load i32, ptr %103, align 8, !tbaa !45
  %105 = icmp eq i32 %104, 0
  br i1 %105, label %106, label %121

106:                                              ; preds = %99
  %107 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %89)
  %108 = getelementptr inbounds i8, ptr %107, i64 176
  %109 = load ptr, ptr %108, align 8, !tbaa !44
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %109)
  %111 = call noundef ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %110) #11
  %112 = getelementptr inbounds i8, ptr %111, i64 40
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull @.str.40)
  br label %121

114:                                              ; preds = %.lr.ph478
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %118

116:                                              ; preds = %94
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #11
  br label %118

118:                                              ; preds = %116, %114
  %.pn388 = phi { ptr, i32 } [ %117, %116 ], [ %115, %114 ]
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #11
  br label %124

119:                                              ; preds = %96
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  br label %124

121:                                              ; preds = %106, %99
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  %123 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #11
  br i1 %123, label %.lr.ph478, label %._crit_edge479

124:                                              ; preds = %119, %118
  %.pn390 = phi { ptr, i32 } [ %120, %119 ], [ %.pn388, %118 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #11
  br label %870

125:                                              ; preds = %7
  %.not317 = icmp eq ptr %5, null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #11
  br i1 %.not317, label %.critedge394, label %.critedge395

.critedge394:                                     ; preds = %125
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %14) #11
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %14, ptr noundef nonnull @.str.3, i32 noundef 1577, ptr noundef nonnull @.str.26, i32 noundef 0)
  %126 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %14)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %13, ptr noundef nonnull align 8 dereferenceable(380) %126)
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %14)
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %14) #11
  br label %.critedge395

.critedge395:                                     ; preds = %125, %.critedge394
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #11
  %127 = getelementptr inbounds i8, ptr %5, i64 168
  %128 = load ptr, ptr %127, align 8, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %0, i64 168
  %130 = load ptr, ptr %129, align 8, !tbaa !5
  %.not318 = icmp eq ptr %128, %130
  %spec.select = select i1 %.not318, ptr %6, ptr %0
  %131 = getelementptr inbounds i8, ptr %0, i64 176
  %132 = load ptr, ptr %131, align 8, !tbaa !44
  %133 = getelementptr inbounds i8, ptr %132, i64 16
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %5, ptr noundef %130)
  %135 = load ptr, ptr %131, align 8, !tbaa !44
  %136 = call noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE8containsEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %135)
  br i1 %136, label %219, label %137

137:                                              ; preds = %.critedge395
  %138 = call noalias noundef nonnull dereferenceable(416) ptr @_Znwm(i64 noundef 416) #12
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateC2Ev(ptr noundef nonnull align 8 dereferenceable(416) %138)
          to label %139 unwind label %161

139:                                              ; preds = %137
  store double %3, ptr %138, align 8, !tbaa !74
  %140 = getelementptr inbounds i8, ptr %0, i64 188
  %141 = getelementptr inbounds i8, ptr %138, i64 8
  %142 = getelementptr inbounds i8, ptr %0, i64 192
  %143 = load <2 x i32>, ptr %140, align 4, !tbaa !87
  store <2 x i32> %143, ptr %141, align 8, !tbaa !87
  %144 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #11
  %.not480 = icmp eq i64 %144, 0
  br i1 %.not480, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %139
  %145 = getelementptr inbounds i8, ptr %15, i64 88
  %146 = getelementptr inbounds i8, ptr %15, i64 176
  %147 = getelementptr inbounds i8, ptr %15, i64 208
  %148 = getelementptr inbounds i8, ptr %15, i64 229
  %149 = getelementptr inbounds i8, ptr %15, i64 225
  %150 = getelementptr inbounds i8, ptr %0, i64 186
  %151 = getelementptr inbounds i8, ptr %15, i64 226
  %152 = getelementptr inbounds i8, ptr %15, i64 227
  %153 = getelementptr inbounds i8, ptr %15, i64 228
  %154 = getelementptr inbounds i8, ptr %15, i64 216
  %155 = getelementptr inbounds i8, ptr %15, i64 224
  %156 = getelementptr inbounds i8, ptr %138, i64 16
  br label %163

._crit_edge:                                      ; preds = %194, %139
  %157 = load i32, ptr %142, align 8, !tbaa !88
  %158 = icmp sgt i32 %157, 0
  br i1 %158, label %.lr.ph428, label %.critedge

.lr.ph428:                                        ; preds = %._crit_edge
  %159 = getelementptr inbounds i8, ptr %138, i64 16
  %160 = zext nneg i32 %157 to i64
  br label %205

161:                                              ; preds = %137
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %138, i64 noundef 416) #13
  br label %870

163:                                              ; preds = %.lr.ph, %194
  %.0275423 = phi i64 [ 0, %.lr.ph ], [ %195, %194 ]
  call void @llvm.lifetime.start.p0(i64 232, ptr nonnull %15) #11
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarC2Ev(ptr noundef nonnull align 8 dereferenceable(230) %15)
  %164 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %133, i64 noundef %.0275423) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %16) #11
  %165 = getelementptr inbounds i8, ptr %164, i64 32
  %166 = load i8, ptr %165, align 8, !tbaa !89, !range !94, !noundef !95
  %167 = trunc nuw i8 %166 to i1
  %168 = xor i1 %167, true
  invoke void @_ZN6Halide9VarOrRVarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(81) %16, ptr noundef nonnull align 8 dereferenceable(32) %164, i1 noundef zeroext %168)
          to label %169 unwind label %198

169:                                              ; preds = %163
  %170 = call noundef nonnull align 8 dereferenceable(81) ptr @_ZN6Halide9VarOrRVaraSEOS0_(ptr noundef nonnull align 8 dereferenceable(81) %145, ptr noundef nonnull align 8 dereferenceable(81) %16) #11
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %16) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %16) #11
  %171 = invoke noundef nonnull align 8 dereferenceable(81) ptr @_ZN6Halide9VarOrRVaraSERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %15, ptr noundef nonnull align 8 dereferenceable(81) %145)
          to label %172 unwind label %200

172:                                              ; preds = %169
  %173 = getelementptr inbounds i8, ptr %164, i64 88
  %174 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 8 dereferenceable(32) %173)
          to label %175 unwind label %200

175:                                              ; preds = %172
  %176 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %134)
  %177 = load ptr, ptr %131, align 8, !tbaa !44
  %178 = getelementptr inbounds i8, ptr %177, i64 8
  %179 = load i32, ptr %178, align 8, !tbaa !45
  %180 = trunc i64 %.0275423 to i32
  %181 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %176, i32 noundef %179, i32 noundef %180)
          to label %182 unwind label %202

182:                                              ; preds = %175
  %183 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %181)
  store i64 %183, ptr %147, align 8, !tbaa !96
  %184 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler4Span15constant_extentEv(ptr noundef nonnull align 8 dereferenceable(17) %181)
  %185 = zext i1 %184 to i8
  store i8 %185, ptr %148, align 1, !tbaa !103
  store i8 1, ptr %149, align 1, !tbaa !104
  %186 = load i8, ptr %165, align 8, !tbaa !89, !range !94, !noundef !95
  %187 = trunc nuw i8 %186 to i1
  %188 = load i8, ptr %150, align 2, !range !94
  %189 = select i1 %187, i8 %188, i8 0
  store i8 %189, ptr %151, align 2, !tbaa !105
  store i8 1, ptr %152, align 1, !tbaa !106
  store i8 %186, ptr %153, align 4, !tbaa !107
  store i64 %.0275423, ptr %154, align 8, !tbaa !108
  %190 = load i32, ptr %142, align 8, !tbaa !88
  %191 = sext i32 %190 to i64
  %192 = icmp eq i64 %.0275423, %191
  %193 = zext i1 %192 to i8
  store i8 %193, ptr %155, align 8, !tbaa !109
  invoke void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %156, ptr noundef nonnull align 8 dereferenceable(230) %15)
          to label %194 unwind label %202

194:                                              ; preds = %182
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarD2Ev(ptr noundef nonnull align 8 dereferenceable(230) %15) #11
  call void @llvm.lifetime.end.p0(i64 232, ptr nonnull %15) #11
  %195 = add nuw i64 %.0275423, 1
  %196 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #11
  %197 = icmp ult i64 %195, %196
  br i1 %197, label %163, label %._crit_edge, !llvm.loop !110

198:                                              ; preds = %163
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %16) #11
  br label %204

200:                                              ; preds = %172, %169
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %204

202:                                              ; preds = %182, %175
  %203 = landingpad { ptr, i32 }
          cleanup
  br label %204

204:                                              ; preds = %202, %200, %198
  %.pn = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ], [ %199, %198 ]
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarD2Ev(ptr noundef nonnull align 8 dereferenceable(230) %15) #11
  call void @llvm.lifetime.end.p0(i64 232, ptr nonnull %15) #11
  br label %870

205:                                              ; preds = %.lr.ph428, %212
  %indvars.iv = phi i64 [ %160, %.lr.ph428 ], [ %indvars.iv.next, %212 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %206 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %159, i64 noundef %indvars.iv.next) #11
  %207 = getelementptr inbounds i8, ptr %206, i64 228
  %208 = load i8, ptr %207, align 4, !tbaa !107, !range !94, !noundef !95
  %209 = trunc nuw i8 %208 to i1
  br i1 %209, label %212, label %.critedge

.critedge:                                        ; preds = %205, %212, %._crit_edge
  %210 = load ptr, ptr %131, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EEC2IS6_vEEPS4_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull %138) #11
  %211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE7emplaceEPKS5_OSB_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %210, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %216 unwind label %217

212:                                              ; preds = %205
  %213 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %159, i64 noundef %indvars.iv.next) #11
  %214 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %159, i64 noundef %indvars.iv) #11
  call void @_ZSt4swapIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS9_ESt18is_move_assignableIS9_EEE5valueEvE4typeERS9_SI_(ptr noundef nonnull align 8 dereferenceable(230) %213, ptr noundef nonnull align 8 dereferenceable(230) %214) #11
  %215 = icmp ugt i64 %indvars.iv, 1
  br i1 %215, label %205, label %.critedge, !llvm.loop !112

216:                                              ; preds = %.critedge
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  br label %219

217:                                              ; preds = %.critedge
  %218 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  br label %870

219:                                              ; preds = %216, %.critedge395
  %220 = load ptr, ptr %131, align 8, !tbaa !44
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %220)
  %222 = call noundef nonnull align 8 dereferenceable(416) ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %221) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %18) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #11
  %223 = load ptr, ptr %129, align 8, !tbaa !5
  %224 = getelementptr inbounds i8, ptr %223, i64 8
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %224) #11
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull %20)
          to label %225 unwind label %241

225:                                              ; preds = %219
  invoke void @_ZNK6Halide4FunccvNS_5StageEEv(ptr dead_on_unwind nonnull writable sret(%"class.Halide::Stage") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %226 unwind label %243

226:                                              ; preds = %225
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #11
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #11
  %227 = load ptr, ptr %131, align 8, !tbaa !44
  %228 = getelementptr inbounds i8, ptr %227, i64 8
  %229 = load i32, ptr %228, align 8, !tbaa !45
  %230 = icmp sgt i32 %229, 0
  br i1 %230, label %231, label %251

231:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #11
  %232 = load ptr, ptr %129, align 8, !tbaa !5
  %233 = getelementptr inbounds i8, ptr %232, i64 8
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %233) #11
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull %23)
          to label %234 unwind label %246

234:                                              ; preds = %231
  %235 = load ptr, ptr %131, align 8, !tbaa !44
  %236 = getelementptr inbounds i8, ptr %235, i64 8
  %237 = load i32, ptr %236, align 8, !tbaa !45
  %238 = add nsw i32 %237, -1
  invoke void @_ZN6Halide4Func6updateEi(ptr dead_on_unwind nonnull writable sret(%"class.Halide::Stage") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %22, i32 noundef %238)
          to label %239 unwind label %248

239:                                              ; preds = %234
  %240 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5StageaSEOS0_(ptr noundef nonnull align 8 dereferenceable(64) %18, ptr noundef nonnull align 8 dereferenceable(64) %21) #11
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %21) #11
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #11
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #11
  %.pre = load ptr, ptr %131, align 8, !tbaa !44
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre, i64 8
  %.pre493 = load i32, ptr %.phi.trans.insert, align 8, !tbaa !45
  br label %251

241:                                              ; preds = %219
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %245

243:                                              ; preds = %225
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #11
  br label %245

245:                                              ; preds = %243, %241
  %.pn321 = phi { ptr, i32 } [ %244, %243 ], [ %242, %241 ]
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #11
  br label %868

246:                                              ; preds = %231
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %250

248:                                              ; preds = %234
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #11
  br label %250

250:                                              ; preds = %248, %246
  %.pn323 = phi { ptr, i32 } [ %249, %248 ], [ %247, %246 ]
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #11
  br label %867

251:                                              ; preds = %239, %226
  %252 = phi i32 [ %.pre493, %239 ], [ %229, %226 ]
  %253 = icmp eq i32 %252, 0
  br i1 %253, label %254, label %289

254:                                              ; preds = %251
  %255 = load ptr, ptr %127, align 8, !tbaa !5
  %256 = load ptr, ptr %129, align 8, !tbaa !5
  %.not325 = icmp eq ptr %255, %256
  br i1 %.not325, label %289, label %257

257:                                              ; preds = %254
  %258 = getelementptr inbounds i8, ptr %256, i64 32
  %259 = load double, ptr %258, align 8, !tbaa !113
  %260 = getelementptr inbounds i8, ptr %256, i64 180
  %261 = load i32, ptr %260, align 4, !tbaa !137
  %262 = icmp sgt i32 %261, 0
  br i1 %262, label %.lr.ph433, label %._crit_edge434

._crit_edge434:                                   ; preds = %.lr.ph433, %257
  %.0277.lcssa = phi double [ %259, %257 ], [ %269, %.lr.ph433 ]
  %.lcssa422 = phi ptr [ %256, %257 ], [ %271, %.lr.ph433 ]
  %263 = fcmp olt double %.0277.lcssa, 6.400000e+04
  %264 = icmp sgt i32 %4, 2
  %or.cond = and i1 %264, %263
  br i1 %or.cond, label %275, label %289

.lr.ph433:                                        ; preds = %257, %.lr.ph433
  %.0277431 = phi double [ %269, %.lr.ph433 ], [ %259, %257 ]
  %.0278430 = phi i32 [ %270, %.lr.ph433 ], [ 0, %257 ]
  %265 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %134)
  %266 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %265, i32 noundef %.0278430)
  %267 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %266)
  %268 = sitofp i64 %267 to double
  %269 = fmul double %.0277431, %268
  %270 = add nuw nsw i32 %.0278430, 1
  %271 = load ptr, ptr %129, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i64 180
  %273 = load i32, ptr %272, align 4, !tbaa !137
  %274 = icmp slt i32 %270, %273
  br i1 %274, label %.lr.ph433, label %._crit_edge434, !llvm.loop !138

275:                                              ; preds = %._crit_edge434
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #11
  %276 = getelementptr inbounds i8, ptr %.lcssa422, i64 8
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %276) #11
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull %25)
          to label %277 unwind label %282

277:                                              ; preds = %275
  %278 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func8store_inENS_10MemoryTypeE(ptr noundef nonnull align 8 dereferenceable(32) %24, i32 noundef 2)
          to label %279 unwind label %284

279:                                              ; preds = %277
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #11
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #11
  %280 = getelementptr inbounds i8, ptr %222, i64 40
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %280, ptr noundef nonnull @.str.41)
          to label %289 unwind label %287

282:                                              ; preds = %275
  %283 = landingpad { ptr, i32 }
          cleanup
  br label %286

284:                                              ; preds = %277
  %285 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #11
  br label %286

286:                                              ; preds = %284, %282
  %.pn326 = phi { ptr, i32 } [ %285, %284 ], [ %283, %282 ]
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #11
  br label %867

287:                                              ; preds = %279
  %288 = landingpad { ptr, i32 }
          cleanup
  br label %867

289:                                              ; preds = %._crit_edge434, %279, %254, %251
  %290 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest21accesses_input_bufferEv(ptr noundef nonnull align 8 dereferenceable(196) %spec.select)
          to label %291 unwind label %297

291:                                              ; preds = %289
  br i1 %290, label %299, label %292

292:                                              ; preds = %291
  %293 = load ptr, ptr %129, align 8, !tbaa !5
  %294 = getelementptr inbounds i8, ptr %293, i64 186
  %295 = load i8, ptr %294, align 2, !tbaa !139, !range !94, !noundef !95
  %296 = trunc nuw i8 %295 to i1
  br i1 %296, label %299, label %304

297:                                              ; preds = %._crit_edge467, %289
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %867

299:                                              ; preds = %292, %291
  %300 = load ptr, ptr %131, align 8, !tbaa !44
  %301 = getelementptr inbounds i8, ptr %300, i64 8
  %302 = load i32, ptr %301, align 8, !tbaa !45
  %303 = icmp eq i32 %302, 0
  %. = select i1 %303, i32 2, i32 1
  br label %304

304:                                              ; preds = %299, %292
  %.0279 = phi i32 [ 0, %292 ], [ %., %299 ]
  %305 = getelementptr inbounds i8, ptr %0, i64 8
  %306 = call noundef zeroext i1 @_ZNKSt6vectorIlSaIlEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %305) #11
  br i1 %306, label %697, label %307

307:                                              ; preds = %304
  %308 = getelementptr inbounds i8, ptr %0, i64 184
  %309 = load i8, ptr %308, align 8, !tbaa !140, !range !94, !noundef !95
  %310 = trunc nuw i8 %309 to i1
  br i1 %310, label %311, label %.lr.ph440

311:                                              ; preds = %307
  %312 = getelementptr inbounds i8, ptr %0, i64 192
  %313 = load i32, ptr %312, align 8, !tbaa !88
  %314 = icmp sgt i32 %313, -1
  br i1 %314, label %.preheader, label %697

.preheader:                                       ; preds = %311
  %315 = getelementptr inbounds i8, ptr %222, i64 16
  br label %316

316:                                              ; preds = %316, %.preheader
  %.0280 = phi i64 [ %321, %316 ], [ 0, %.preheader ]
  %317 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %315, i64 noundef %.0280) #11
  %318 = getelementptr inbounds i8, ptr %317, i64 224
  %319 = load i8, ptr %318, align 8, !tbaa !109, !range !94, !noundef !95
  %320 = trunc nuw i8 %319 to i1
  %321 = add i64 %.0280, 1
  br i1 %320, label %322, label %316, !llvm.loop !141

322:                                              ; preds = %316
  %323 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %315, i64 noundef %.0280) #11
  %324 = getelementptr inbounds i8, ptr %323, i64 224
  %325 = load i8, ptr %324, align 8, !tbaa !109, !range !94, !noundef !95
  %326 = trunc nuw i8 %325 to i1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #11
  br i1 %326, label %327, label %331

327:                                              ; preds = %322
  %328 = getelementptr inbounds i8, ptr %323, i64 227
  %329 = load i8, ptr %328, align 1, !tbaa !106, !range !94, !noundef !95
  %330 = trunc nuw i8 %329 to i1
  br i1 %330, label %.critedge397, label %331

331:                                              ; preds = %327, %322
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %27) #11
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %27, ptr noundef nonnull @.str.3, i32 noundef 1665, ptr noundef nonnull @.str.42, i32 noundef 0)
          to label %332 unwind label %355

332:                                              ; preds = %331
  %333 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %27)
  %334 = getelementptr inbounds i8, ptr %323, i64 88
  %335 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %334)
          to label %336 unwind label %357

336:                                              ; preds = %332
  %337 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %333, ptr noundef nonnull align 8 dereferenceable(32) %335)
          to label %338 unwind label %357

338:                                              ; preds = %336
  %339 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %337, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %340 unwind label %357

340:                                              ; preds = %338
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %26, ptr noundef nonnull align 8 dereferenceable(380) %339)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %27)
          to label %341 unwind label %355

341:                                              ; preds = %340
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %27) #11
  br label %.critedge397

.critedge397:                                     ; preds = %327, %341
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #11
  %342 = getelementptr inbounds i8, ptr %222, i64 40
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %342, ptr noundef nonnull @.str.43)
          to label %344 unwind label %360

344:                                              ; preds = %.critedge397
  %345 = getelementptr inbounds i8, ptr %323, i64 88
  %346 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %345)
          to label %347 unwind label %360

347:                                              ; preds = %344
  %348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef nonnull align 8 dereferenceable(32) %346)
          to label %349 unwind label %360

349:                                              ; preds = %347
  %350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef nonnull @.str.31)
          to label %351 unwind label %360

351:                                              ; preds = %349
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %28, ptr noundef nonnull align 8 dereferenceable(81) %345)
          to label %352 unwind label %360

352:                                              ; preds = %351
  %353 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage9vectorizeENS_9VarOrRVarE(ptr noundef nonnull align 8 dereferenceable(64) %18, ptr noundef nonnull %28)
          to label %354 unwind label %362

354:                                              ; preds = %352
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %28) #11
  br label %697

355:                                              ; preds = %340, %331
  %356 = landingpad { ptr, i32 }
          cleanup
  br label %359

357:                                              ; preds = %338, %336, %332
  %358 = landingpad { ptr, i32 }
          cleanup
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %27)
          to label %359 unwind label %871

359:                                              ; preds = %357, %355
  %.pn363 = phi { ptr, i32 } [ %356, %355 ], [ %358, %357 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #11
  br label %867

360:                                              ; preds = %351, %349, %347, %344, %.critedge397
  %361 = landingpad { ptr, i32 }
          cleanup
  br label %867

362:                                              ; preds = %352
  %363 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %28) #11
  br label %867

.lr.ph440:                                        ; preds = %307, %.loopexit417
  %.0291439 = phi ptr [ %.3294, %.loopexit417 ], [ %0, %307 ]
  %.0295438 = phi ptr [ %.4299, %.loopexit417 ], [ null, %307 ]
  %364 = getelementptr inbounds i8, ptr %.0291439, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #11
  %365 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %364) #11
  store ptr %365, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #11
  %366 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %364) #11
  store ptr %366, ptr %30, align 8
  %367 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #11
  br i1 %367, label %.lr.ph437, label %.loopexit417

.lr.ph437:                                        ; preds = %.lr.ph440, %377
  %368 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #11
  %369 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %368)
  %370 = getelementptr inbounds i8, ptr %369, i64 168
  %371 = load ptr, ptr %370, align 8, !tbaa !5
  %372 = load ptr, ptr %129, align 8, !tbaa !5
  %.not362 = icmp eq ptr %371, %372
  br i1 %.not362, label %373, label %377

373:                                              ; preds = %.lr.ph437
  %.not361 = icmp eq ptr %.0295438, null
  br i1 %.not361, label %374, label %.thread407

374:                                              ; preds = %373
  %375 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %368)
  br label %.thread407

.thread407:                                       ; preds = %373, %374
  %.2297 = phi ptr [ %.0295438, %373 ], [ %375, %374 ]
  %376 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %368)
  br label %.loopexit417

377:                                              ; preds = %.lr.ph437
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #11
  %379 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #11
  br i1 %379, label %.lr.ph437, label %.loopexit417

.loopexit417:                                     ; preds = %377, %.lr.ph440, %.thread407
  %.4299 = phi ptr [ %.2297, %.thread407 ], [ %.0295438, %.lr.ph440 ], [ %.0295438, %377 ]
  %.3294 = phi ptr [ %376, %.thread407 ], [ %.0291439, %.lr.ph440 ], [ %.0291439, %377 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #11
  %380 = getelementptr inbounds i8, ptr %.3294, i64 184
  %381 = load i8, ptr %380, align 8, !tbaa !140, !range !94, !noundef !95
  %382 = trunc nuw i8 %381 to i1
  br i1 %382, label %._crit_edge441, label %.lr.ph440, !llvm.loop !142

._crit_edge441:                                   ; preds = %.loopexit417
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #11
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  %383 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #11
  %.not481 = icmp eq i64 %383, 0
  br i1 %.not481, label %._crit_edge447, label %.lr.ph446

.lr.ph446:                                        ; preds = %._crit_edge441
  %384 = getelementptr inbounds i8, ptr %222, i64 16
  %385 = getelementptr inbounds i8, ptr %.3294, i64 8
  %.not340.not = icmp eq ptr %.4299, null
  %386 = getelementptr inbounds i8, ptr %32, i64 227
  %387 = getelementptr inbounds i8, ptr %32, i64 208
  %388 = getelementptr inbounds i8, ptr %.4299, i64 184
  %389 = getelementptr inbounds i8, ptr %222, i64 40
  %390 = getelementptr inbounds i8, ptr %32, i64 229
  %391 = getelementptr inbounds i8, ptr %32, i64 88
  %392 = getelementptr inbounds i8, ptr %32, i64 176
  %393 = getelementptr inbounds i8, ptr %32, i64 226
  %394 = getelementptr inbounds i8, ptr %32, i64 225
  %395 = icmp eq i32 %.0279, 2
  br label %401

._crit_edge447:                                   ; preds = %576, %._crit_edge441
  %396 = getelementptr inbounds i8, ptr %.4299, i64 184
  %397 = load i8, ptr %396, align 8, !tbaa !140, !range !94, !noundef !95
  %398 = trunc nuw i8 %397 to i1
  br i1 %398, label %.preheader416, label %.loopexit

.preheader416:                                    ; preds = %._crit_edge447
  %399 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #11
  %.not482 = icmp eq i64 %399, 0
  br i1 %.not482, label %.thread500, label %.lr.ph451

.lr.ph451:                                        ; preds = %.preheader416
  %400 = getelementptr inbounds i8, ptr %222, i64 16
  br label %583

401:                                              ; preds = %.lr.ph446, %576
  %.0307444 = phi i64 [ 0, %.lr.ph446 ], [ %577, %576 ]
  call void @llvm.lifetime.start.p0(i64 232, ptr nonnull %32) #11
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarC2Ev(ptr noundef nonnull align 8 dereferenceable(230) %32)
          to label %402 unwind label %428

402:                                              ; preds = %401
  %403 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %384, i64 noundef %.0307444) #11
  %404 = getelementptr inbounds i8, ptr %403, i64 208
  %405 = load i64, ptr %404, align 8, !tbaa !96
  %406 = getelementptr inbounds i8, ptr %403, i64 216
  %407 = load i64, ptr %406, align 8, !tbaa !108
  %408 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %305, i64 noundef %407) #11
  %409 = load i64, ptr %408, align 8, !tbaa !143
  %410 = add i64 %405, -1
  %411 = add i64 %410, %409
  %412 = load i64, ptr %406, align 8, !tbaa !108
  %413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %305, i64 noundef %412) #11
  %414 = load i64, ptr %413, align 8, !tbaa !143
  %415 = sdiv i64 %411, %414
  %416 = load i64, ptr %406, align 8, !tbaa !108
  %417 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %385, i64 noundef %416) #11
  %418 = load i64, ptr %417, align 8, !tbaa !143
  br i1 %.not340.not, label %430, label %419

419:                                              ; preds = %402
  %420 = getelementptr inbounds i8, ptr %403, i64 224
  %421 = load i8, ptr %420, align 8, !tbaa !109, !range !94, !noundef !95
  %422 = trunc nuw i8 %421 to i1
  br i1 %422, label %423, label %430

423:                                              ; preds = %419
  %424 = add nsw i64 %418, %415
  %.fr341 = freeze i64 %424
  %425 = add i64 %.fr341, -1
  %426 = srem i64 %425, %418
  %427 = sub nsw i64 %425, %426
  br label %430

428:                                              ; preds = %401
  %429 = landingpad { ptr, i32 }
          cleanup
  br label %581

430:                                              ; preds = %423, %419, %402
  %.0308 = phi i64 [ %427, %423 ], [ %415, %419 ], [ %415, %402 ]
  %431 = call i64 @llvm.smax.i64(i64 %418, i64 %.0308)
  %.1309 = select i1 %.not340.not, i64 %.0308, i64 %431
  %432 = getelementptr inbounds i8, ptr %403, i64 227
  %433 = load i8, ptr %432, align 1, !tbaa !106, !range !94, !noundef !95
  %434 = trunc nuw i8 %433 to i1
  %435 = icmp ne i64 %.1309, 1
  %or.cond5.not = select i1 %434, i1 %435, i1 false
  br i1 %or.cond5.not, label %437, label %436

436:                                              ; preds = %430
  store i8 0, ptr %386, align 1, !tbaa !106
  store i64 1, ptr %387, align 8, !tbaa !96
  br label %575

437:                                              ; preds = %430
  %438 = load i64, ptr %406, align 8, !tbaa !108
  %439 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %305, i64 noundef %438) #11
  %440 = load i64, ptr %439, align 8, !tbaa !143
  %441 = icmp eq i64 %440, 1
  br i1 %441, label %442, label %462

442:                                              ; preds = %437
  br i1 %.not340.not, label %457, label %443

443:                                              ; preds = %442
  %444 = load i8, ptr %388, align 8, !tbaa !140, !range !94, !noundef !95
  %445 = trunc nuw i8 %444 to i1
  br i1 %445, label %446, label %457

446:                                              ; preds = %443
  %447 = getelementptr inbounds i8, ptr %403, i64 224
  %448 = load i8, ptr %447, align 8, !tbaa !109, !range !94, !noundef !95
  %449 = trunc nuw i8 %448 to i1
  br i1 %449, label %450, label %457

450:                                              ; preds = %446
  %451 = getelementptr inbounds i8, ptr %403, i64 88
  %452 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %451)
          to label %453 unwind label %460

453:                                              ; preds = %450
  %454 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %403)
          to label %455 unwind label %460

455:                                              ; preds = %453
  %456 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %452, ptr noundef nonnull align 8 dereferenceable(32) %454) #11
  br i1 %456, label %462, label %457

457:                                              ; preds = %455, %446, %443, %442
  %458 = invoke noundef nonnull align 8 dereferenceable(230) ptr @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVaraSERKS4_(ptr noundef nonnull align 8 dereferenceable(230) %32, ptr noundef nonnull align 8 dereferenceable(230) %403)
          to label %459 unwind label %460

459:                                              ; preds = %457
  store i8 0, ptr %393, align 2, !tbaa !105
  store i8 0, ptr %432, align 1, !tbaa !106
  store i64 1, ptr %404, align 8, !tbaa !96
  br label %575

460:                                              ; preds = %575, %457, %453, %450
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %580

462:                                              ; preds = %455, %437
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %33) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #11
  %463 = getelementptr inbounds i8, ptr %403, i64 88
  %464 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %463)
          to label %465 unwind label %479

465:                                              ; preds = %462
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %464, ptr noundef nonnull @.str.44)
          to label %466 unwind label %479

466:                                              ; preds = %465
  invoke void @_ZN6Halide3VarC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %467 unwind label %481

467:                                              ; preds = %466
  invoke void @_ZN6Halide9VarOrRVarC2ERKNS_3VarE(ptr noundef nonnull align 8 dereferenceable(81) %33, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %468 unwind label %483

468:                                              ; preds = %467
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #11
  %469 = getelementptr inbounds i8, ptr %403, i64 168
  %470 = load i8, ptr %469, align 8, !tbaa !144, !range !94, !noundef !95
  %471 = trunc nuw i8 %470 to i1
  br i1 %471, label %472, label %495

472:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %36) #11
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %37) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #11
  %473 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %463)
          to label %474 unwind label %487

474:                                              ; preds = %472
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(32) %473, ptr noundef nonnull @.str.44)
          to label %475 unwind label %487

475:                                              ; preds = %474
  invoke void @_ZN6Halide4RVarC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(44) %37, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %476 unwind label %489

476:                                              ; preds = %475
  invoke void @_ZN6Halide9VarOrRVarC2ERKNS_4RVarE(ptr noundef nonnull align 8 dereferenceable(81) %36, ptr noundef nonnull align 8 dereferenceable(44) %37)
          to label %477 unwind label %491

477:                                              ; preds = %476
  %478 = call noundef nonnull align 8 dereferenceable(81) ptr @_ZN6Halide9VarOrRVaraSEOS0_(ptr noundef nonnull align 8 dereferenceable(81) %33, ptr noundef nonnull align 8 dereferenceable(81) %36) #11
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %36) #11
  call void @_ZN6Halide4RVarD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %37) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %37) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %36) #11
  %.pre494 = load i8, ptr %469, align 8, !tbaa !144, !range !94
  br label %495

479:                                              ; preds = %465, %462
  %480 = landingpad { ptr, i32 }
          cleanup
  br label %486

481:                                              ; preds = %466
  %482 = landingpad { ptr, i32 }
          cleanup
  br label %485

483:                                              ; preds = %467
  %484 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #11
  br label %485

485:                                              ; preds = %483, %481
  %.pn343 = phi { ptr, i32 } [ %484, %483 ], [ %482, %481 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #11
  br label %486

486:                                              ; preds = %485, %479
  %.pn343.pn = phi { ptr, i32 } [ %.pn343, %485 ], [ %480, %479 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #11
  br label %574

487:                                              ; preds = %474, %472
  %488 = landingpad { ptr, i32 }
          cleanup
  br label %494

489:                                              ; preds = %475
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %493

491:                                              ; preds = %476
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide4RVarD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %37) #11
  br label %493

493:                                              ; preds = %491, %489
  %.pn346 = phi { ptr, i32 } [ %492, %491 ], [ %490, %489 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #11
  br label %494

494:                                              ; preds = %493, %487
  %.pn346.pn = phi { ptr, i32 } [ %.pn346, %493 ], [ %488, %487 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %37) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %36) #11
  br label %573

495:                                              ; preds = %477, %468
  %496 = phi i8 [ %.pre494, %477 ], [ %470, %468 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #11
  store i32 %.0279, ptr %39, align 4, !tbaa !145
  %497 = trunc nuw i8 %496 to i1
  br i1 %497, label %.thread, label %498

498:                                              ; preds = %495
  %499 = load ptr, ptr %131, align 8, !tbaa !44
  %500 = getelementptr inbounds i8, ptr %499, i64 8
  %501 = load i32, ptr %500, align 8, !tbaa !45
  %.not = icmp eq i32 %501, 0
  br i1 %.not, label %506, label %502

502:                                              ; preds = %498
  %503 = getelementptr inbounds i8, ptr %403, i64 225
  %504 = load i8, ptr %503, align 1, !tbaa !104, !range !94, !noundef !95
  %505 = trunc nuw i8 %504 to i1
  br i1 %505, label %506, label %.thread

.thread:                                          ; preds = %495, %502
  store i32 1, ptr %39, align 4, !tbaa !145
  br label %510

506:                                              ; preds = %502, %498
  %507 = load i64, ptr %404, align 8, !tbaa !96
  %508 = icmp sgt i64 %.1309, %507
  %or.cond7 = select i1 %508, i1 %395, i1 false
  br i1 %or.cond7, label %509, label %510

509:                                              ; preds = %506
  store i32 1, ptr %39, align 4, !tbaa !145
  br label %510

510:                                              ; preds = %.thread, %509, %506
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %40, ptr noundef nonnull align 8 dereferenceable(81) %463)
          to label %511 unwind label %559

511:                                              ; preds = %510
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %41, ptr noundef nonnull align 8 dereferenceable(81) %463)
          to label %512 unwind label %561

512:                                              ; preds = %511
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %42, ptr noundef nonnull align 8 dereferenceable(81) %33)
          to label %513 unwind label %563

513:                                              ; preds = %512
  %514 = trunc i64 %.1309 to i32
  invoke void @_ZN6Halide4ExprC2Ei(ptr noundef nonnull align 8 dereferenceable(8) %43, i32 noundef %514)
          to label %515 unwind label %565

515:                                              ; preds = %513
  %516 = load i32, ptr %39, align 4, !tbaa !145
  %517 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage5splitENS_9VarOrRVarES1_S1_NS_4ExprENS_12TailStrategyE(ptr noundef nonnull align 8 dereferenceable(64) %18, ptr noundef nonnull %40, ptr noundef nonnull %41, ptr noundef nonnull %42, ptr noundef nonnull %43, i32 noundef %516)
          to label %518 unwind label %567

518:                                              ; preds = %515
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #11
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %42) #11
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %41) #11
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %40) #11
  %519 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %389, ptr noundef nonnull @.str.45)
          to label %520 unwind label %559

520:                                              ; preds = %518
  %521 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %463)
          to label %522 unwind label %559

522:                                              ; preds = %520
  %523 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %519, ptr noundef nonnull align 8 dereferenceable(32) %521)
          to label %524 unwind label %559

524:                                              ; preds = %522
  %525 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %523, ptr noundef nonnull @.str.30)
          to label %526 unwind label %559

526:                                              ; preds = %524
  %527 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %463)
          to label %528 unwind label %559

528:                                              ; preds = %526
  %529 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %525, ptr noundef nonnull align 8 dereferenceable(32) %527)
          to label %530 unwind label %559

530:                                              ; preds = %528
  %531 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %529, ptr noundef nonnull @.str.30)
          to label %532 unwind label %559

532:                                              ; preds = %530
  %533 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %33)
          to label %534 unwind label %559

534:                                              ; preds = %532
  %535 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %531, ptr noundef nonnull align 8 dereferenceable(32) %533)
          to label %536 unwind label %559

536:                                              ; preds = %534
  %537 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %535, ptr noundef nonnull @.str.30)
          to label %538 unwind label %559

538:                                              ; preds = %536
  %539 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEl(ptr noundef nonnull align 8 dereferenceable(8) %537, i64 noundef %.1309)
          to label %540 unwind label %559

540:                                              ; preds = %538
  %541 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %539, ptr noundef nonnull @.str.30)
          to label %542 unwind label %559

542:                                              ; preds = %540
  %543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %541, ptr noundef nonnull @.str.46)
          to label %544 unwind label %559

544:                                              ; preds = %542
  %545 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6HalidelsERSoRKNS_12TailStrategyE(ptr noundef nonnull align 8 dereferenceable(8) %543, ptr noundef nonnull align 4 dereferenceable(4) %39)
          to label %546 unwind label %559

546:                                              ; preds = %544
  %547 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %545, ptr noundef nonnull @.str.31)
          to label %548 unwind label %559

548:                                              ; preds = %546
  %549 = invoke noundef nonnull align 8 dereferenceable(230) ptr @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVaraSERKS4_(ptr noundef nonnull align 8 dereferenceable(230) %32, ptr noundef nonnull align 8 dereferenceable(230) %403)
          to label %550 unwind label %559

550:                                              ; preds = %548
  %551 = load i64, ptr %406, align 8, !tbaa !108
  %552 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %305, i64 noundef %551) #11
  %553 = load i64, ptr %552, align 8, !tbaa !143
  store i64 %553, ptr %404, align 8, !tbaa !96
  %554 = load i32, ptr %39, align 4, !tbaa !145
  %555 = icmp ne i32 %554, 1
  %556 = zext i1 %555 to i8
  store i8 %556, ptr %390, align 1, !tbaa !103
  %557 = invoke noundef nonnull align 8 dereferenceable(81) ptr @_ZN6Halide9VarOrRVaraSERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %391, ptr noundef nonnull align 8 dereferenceable(81) %33)
          to label %558 unwind label %559

558:                                              ; preds = %550
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %392) #11
  store i64 %.1309, ptr %387, align 8, !tbaa !96
  store i8 0, ptr %393, align 2, !tbaa !105
  store i8 0, ptr %394, align 1, !tbaa !104
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #11
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %33) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %33) #11
  br label %575

559:                                              ; preds = %550, %548, %546, %544, %542, %540, %538, %536, %534, %532, %530, %528, %526, %524, %522, %520, %518, %510
  %560 = landingpad { ptr, i32 }
          cleanup
  br label %572

561:                                              ; preds = %511
  %562 = landingpad { ptr, i32 }
          cleanup
  br label %571

563:                                              ; preds = %512
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %570

565:                                              ; preds = %513
  %566 = landingpad { ptr, i32 }
          cleanup
  br label %569

567:                                              ; preds = %515
  %568 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #11
  br label %569

569:                                              ; preds = %567, %565
  %.pn349 = phi { ptr, i32 } [ %568, %567 ], [ %566, %565 ]
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %42) #11
  br label %570

570:                                              ; preds = %569, %563
  %.pn349.pn = phi { ptr, i32 } [ %.pn349, %569 ], [ %564, %563 ]
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %41) #11
  br label %571

571:                                              ; preds = %570, %561
  %.pn349.pn.pn = phi { ptr, i32 } [ %.pn349.pn, %570 ], [ %562, %561 ]
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %40) #11
  br label %572

572:                                              ; preds = %571, %559
  %.pn353 = phi { ptr, i32 } [ %560, %559 ], [ %.pn349.pn.pn, %571 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #11
  br label %573

573:                                              ; preds = %572, %494
  %.pn353.pn = phi { ptr, i32 } [ %.pn353, %572 ], [ %.pn346.pn, %494 ]
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %33) #11
  br label %574

574:                                              ; preds = %573, %486
  %.pn353.pn.pn = phi { ptr, i32 } [ %.pn353.pn, %573 ], [ %.pn343.pn, %486 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %33) #11
  br label %580

575:                                              ; preds = %459, %558, %436
  invoke void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(230) %32)
          to label %576 unwind label %460

576:                                              ; preds = %575
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarD2Ev(ptr noundef nonnull align 8 dereferenceable(230) %32) #11
  call void @llvm.lifetime.end.p0(i64 232, ptr nonnull %32) #11
  %577 = add nuw i64 %.0307444, 1
  %578 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #11
  %579 = icmp ult i64 %577, %578
  br i1 %579, label %401, label %._crit_edge447, !llvm.loop !147

580:                                              ; preds = %574, %460
  %.pn357 = phi { ptr, i32 } [ %461, %460 ], [ %.pn353.pn.pn, %574 ]
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarD2Ev(ptr noundef nonnull align 8 dereferenceable(230) %32) #11
  br label %581

581:                                              ; preds = %580, %428
  %.pn357.pn = phi { ptr, i32 } [ %.pn357, %580 ], [ %429, %428 ]
  call void @llvm.lifetime.end.p0(i64 232, ptr nonnull %32) #11
  br label %696

._crit_edge452:                                   ; preds = %597
  %582 = icmp slt i64 %.1314, 13
  br i1 %582, label %601, label %.loopexit

583:                                              ; preds = %.lr.ph451, %597
  %.0310450 = phi i64 [ 0, %.lr.ph451 ], [ %598, %597 ]
  %.0311449 = phi i8 [ 1, %.lr.ph451 ], [ %.1312, %597 ]
  %.0313448 = phi i64 [ 1, %.lr.ph451 ], [ %.1314, %597 ]
  %584 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %400, i64 noundef %.0310450) #11
  %585 = getelementptr inbounds i8, ptr %584, i64 228
  %586 = load i8, ptr %585, align 4, !tbaa !107, !range !94, !noundef !95
  %587 = trunc nuw i8 %586 to i1
  br i1 %587, label %588, label %597

588:                                              ; preds = %583
  %589 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %400, i64 noundef %.0310450) #11
  %590 = getelementptr inbounds i8, ptr %589, i64 208
  %591 = load i64, ptr %590, align 8, !tbaa !96
  %592 = mul nsw i64 %591, %.0313448
  %593 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %400, i64 noundef %.0310450) #11
  %594 = getelementptr inbounds i8, ptr %593, i64 229
  %595 = load i8, ptr %594, align 1, !tbaa !103, !range !94, !noundef !95
  %596 = and i8 %595, %.0311449
  br label %597

597:                                              ; preds = %583, %588
  %.1314 = phi i64 [ %592, %588 ], [ %.0313448, %583 ]
  %.1312 = phi i8 [ %596, %588 ], [ %.0311449, %583 ]
  %598 = add nuw i64 %.0310450, 1
  %599 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #11
  %600 = icmp ult i64 %598, %599
  br i1 %600, label %583, label %._crit_edge452, !llvm.loop !148

601:                                              ; preds = %._crit_edge452
  %602 = trunc nuw i8 %.1312 to i1
  br i1 %602, label %.thread500, label %.loopexit

.thread500:                                       ; preds = %.preheader416, %601
  %603 = getelementptr inbounds i8, ptr %222, i64 16
  %604 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %603) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #11
  %605 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %603) #11
  store ptr %605, ptr %44, align 8
  %606 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #11
  %607 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %44, i64 noundef %606) #11
  invoke void @"_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS7_SaIS7_EEEEZNKS5_5applyENS2_9LoopLevelER14PerfectHashMapINS4_11FunctionDAG4Node5StageESt10unique_ptrIS6_St14default_deleteIS6_EELi4E22PerfectHashMapAsserterEdiPKS5_SQ_E3$_0EvT_SS_T0_"(ptr %604, ptr %607)
          to label %608 unwind label %611

608:                                              ; preds = %.thread500
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #11
  %609 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #11
  %.not483 = icmp eq i64 %609, 0
  br i1 %.not483, label %.loopexit, label %.lr.ph457

.lr.ph457:                                        ; preds = %608
  %610 = getelementptr inbounds i8, ptr %222, i64 40
  br label %613

611:                                              ; preds = %.thread500
  %612 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #11
  br label %696

613:                                              ; preds = %.lr.ph457, %647
  %.0306455 = phi i64 [ 0, %.lr.ph457 ], [ %648, %647 ]
  %614 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %603, i64 noundef %.0306455) #11
  %615 = getelementptr inbounds i8, ptr %614, i64 228
  %616 = load i8, ptr %615, align 4, !tbaa !107, !range !94, !noundef !95
  %617 = trunc nuw i8 %616 to i1
  br i1 %617, label %618, label %647

618:                                              ; preds = %613
  %619 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %603, i64 noundef %.0306455) #11
  %620 = getelementptr inbounds i8, ptr %619, i64 227
  %621 = load i8, ptr %620, align 1, !tbaa !106, !range !94, !noundef !95
  %622 = trunc nuw i8 %621 to i1
  br i1 %622, label %623, label %647

623:                                              ; preds = %618
  %624 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %603, i64 noundef %.0306455) #11
  %625 = getelementptr inbounds i8, ptr %624, i64 208
  %626 = load i64, ptr %625, align 8, !tbaa !96
  %627 = icmp sgt i64 %626, 1
  br i1 %627, label %628, label %647

628:                                              ; preds = %623
  %629 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %603, i64 noundef %.0306455) #11
  %630 = getelementptr inbounds i8, ptr %629, i64 88
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %45, ptr noundef nonnull align 8 dereferenceable(81) %630)
          to label %631 unwind label %643

631:                                              ; preds = %628
  %632 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage6unrollENS_9VarOrRVarE(ptr noundef nonnull align 8 dereferenceable(64) %18, ptr noundef nonnull %45)
          to label %633 unwind label %645

633:                                              ; preds = %631
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %45) #11
  %634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %610, ptr noundef nonnull @.str.47)
          to label %635 unwind label %643

635:                                              ; preds = %633
  %636 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %603, i64 noundef %.0306455) #11
  %637 = getelementptr inbounds i8, ptr %636, i64 88
  %638 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %637)
          to label %639 unwind label %643

639:                                              ; preds = %635
  %640 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %634, ptr noundef nonnull align 8 dereferenceable(32) %638)
          to label %641 unwind label %643

641:                                              ; preds = %639
  %642 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %640, ptr noundef nonnull @.str.31)
          to label %647 unwind label %643

643:                                              ; preds = %641, %639, %635, %633, %628
  %644 = landingpad { ptr, i32 }
          cleanup
  br label %696

645:                                              ; preds = %631
  %646 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %45) #11
  br label %696

647:                                              ; preds = %613, %618, %623, %641
  %648 = add nuw i64 %.0306455, 1
  %649 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %133) #11
  %650 = icmp ult i64 %648, %649
  br i1 %650, label %613, label %.loopexit, !llvm.loop !149

.loopexit:                                        ; preds = %647, %608, %._crit_edge452, %601, %._crit_edge447
  %651 = getelementptr inbounds i8, ptr %222, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #11
  %652 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %651) #11
  store ptr %652, ptr %46, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #11
  %653 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %651) #11
  store ptr %653, ptr %47, align 8
  %654 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #11
  br i1 %654, label %.lr.ph459, label %._crit_edge460

.lr.ph459:                                        ; preds = %.loopexit, %670
  %655 = call noundef nonnull align 8 dereferenceable(230) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #11
  %656 = getelementptr inbounds i8, ptr %655, i64 227
  %657 = load i8, ptr %656, align 1, !tbaa !106, !range !94, !noundef !95
  %658 = trunc nuw i8 %657 to i1
  br i1 %658, label %659, label %670

659:                                              ; preds = %.lr.ph459
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #11
  %660 = load ptr, ptr %129, align 8, !tbaa !5
  %661 = getelementptr inbounds i8, ptr %655, i64 88
  invoke void @_ZN6Halide9VarOrRVarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(81) %49, ptr noundef nonnull align 8 dereferenceable(81) %661)
          to label %662 unwind label %665

662:                                              ; preds = %659
  %663 = getelementptr inbounds i8, ptr %660, i64 8
  invoke void @_ZN6Halide9LoopLevelC1ERKNS_8Internal8FunctionENS_9VarOrRVarEi(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(24) %663, ptr noundef nonnull %49, i32 noundef -1)
          to label %.thread412 unwind label %667

.thread412:                                       ; preds = %662
  %664 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide9LoopLevelaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #11
  br label %687

665:                                              ; preds = %659
  %666 = landingpad { ptr, i32 }
          cleanup
  br label %669

667:                                              ; preds = %662
  %668 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %49) #11
  br label %669

669:                                              ; preds = %667, %665
  %.pn330 = phi { ptr, i32 } [ %668, %667 ], [ %666, %665 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #11
  br label %696

670:                                              ; preds = %.lr.ph459
  %671 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #11
  %672 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #11
  br i1 %672, label %.lr.ph459, label %._crit_edge460

._crit_edge460:                                   ; preds = %670, %.loopexit
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #11
  %673 = load ptr, ptr %129, align 8, !tbaa !5
  %674 = getelementptr inbounds i8, ptr %673, i64 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #11
  invoke void @_ZN6Halide3Var9outermostEv(ptr dead_on_unwind nonnull writable sret(%"class.Halide::Var") align 8 %52)
          to label %675 unwind label %679

675:                                              ; preds = %._crit_edge460
  invoke void @_ZN6Halide9VarOrRVarC2ERKNS_3VarE(ptr noundef nonnull align 8 dereferenceable(81) %51, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %676 unwind label %681

676:                                              ; preds = %675
  invoke void @_ZN6Halide9LoopLevelC1ERKNS_8Internal8FunctionENS_9VarOrRVarEi(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(24) %674, ptr noundef nonnull %51, i32 noundef -1)
          to label %677 unwind label %683

677:                                              ; preds = %676
  %678 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide9LoopLevelaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %50) #11
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #11
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %51) #11
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #11
  br label %687

679:                                              ; preds = %._crit_edge460
  %680 = landingpad { ptr, i32 }
          cleanup
  br label %686

681:                                              ; preds = %675
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %685

683:                                              ; preds = %676
  %684 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %51) #11
  br label %685

685:                                              ; preds = %683, %681
  %.pn332 = phi { ptr, i32 } [ %684, %683 ], [ %682, %681 ]
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #11
  br label %686

686:                                              ; preds = %685, %679
  %.pn332.pn = phi { ptr, i32 } [ %.pn332, %685 ], [ %680, %679 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #11
  br label %696

687:                                              ; preds = %.thread412, %677
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #11
  %688 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %651) #11
  store ptr %688, ptr %54, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEC2IPS6_vEERKNS0_IT_SB_EE(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #11
  %689 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  %690 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  %691 = load ptr, ptr %53, align 8
  %692 = invoke ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE6insertIN9__gnu_cxx17__normal_iteratorIPS5_S7_EEvEESC_NSA_IPKS5_S7_EET_SG_(ptr noundef nonnull align 8 dereferenceable(24) %651, ptr %691, ptr %689, ptr %690)
          to label %693 unwind label %694

693:                                              ; preds = %687
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #11
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #11
  br label %697

694:                                              ; preds = %687
  %695 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #11
  br label %696

696:                                              ; preds = %669, %686, %694, %611, %645, %643, %581
  %.pn357.pn.pn = phi { ptr, i32 } [ %.pn357.pn, %581 ], [ %612, %611 ], [ %644, %643 ], [ %646, %645 ], [ %695, %694 ], [ %.pn332.pn, %686 ], [ %.pn330, %669 ]
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #11
  br label %867

697:                                              ; preds = %693, %354, %311, %304
  %698 = getelementptr inbounds i8, ptr %0, i64 184
  %699 = load i8, ptr %698, align 8, !tbaa !140, !range !94, !noundef !95
  %700 = trunc nuw i8 %699 to i1
  %701 = getelementptr inbounds i8, ptr %0, i64 88
  br i1 %700, label %702, label %716

702:                                              ; preds = %697
  %703 = call noundef zeroext i1 @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %701) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #11
  br i1 %703, label %.critedge401, label %704

704:                                              ; preds = %702
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %56) #11
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %56, ptr noundef nonnull @.str.3, i32 noundef 1799, ptr noundef nonnull @.str.48, i32 noundef 0)
          to label %705 unwind label %712

705:                                              ; preds = %704
  %706 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %56)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %55, ptr noundef nonnull align 8 dereferenceable(380) %706)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %56)
          to label %.critedge400 unwind label %712

.critedge400:                                     ; preds = %705
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %56) #11
  br label %.critedge401

.critedge401:                                     ; preds = %702, %.critedge400
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #11
  %707 = getelementptr inbounds i8, ptr %0, i64 32
  %708 = call noundef zeroext i1 @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %707) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #11
  br i1 %708, label %.critedge404, label %709

709:                                              ; preds = %.critedge401
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %58) #11
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %58, ptr noundef nonnull @.str.3, i32 noundef 1800, ptr noundef nonnull @.str.49, i32 noundef 0)
          to label %710 unwind label %714

710:                                              ; preds = %709
  %711 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %58)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %57, ptr noundef nonnull align 8 dereferenceable(380) %711)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %58)
          to label %.critedge403 unwind label %714

.critedge403:                                     ; preds = %710
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %58) #11
  br label %.critedge404

.critedge404:                                     ; preds = %.critedge401, %.critedge403
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #11
  br label %865

712:                                              ; preds = %705, %704
  %713 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %56) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #11
  br label %867

714:                                              ; preds = %710, %709
  %715 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %58) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #11
  br label %867

716:                                              ; preds = %697
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #11
  %717 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %701) #11
  store ptr %717, ptr %59, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #11
  %718 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %701) #11
  store ptr %718, ptr %60, align 8
  %719 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60) #11
  br i1 %719, label %.lr.ph462, label %._crit_edge463

._crit_edge463:                                   ; preds = %728, %716
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #11
  %720 = call ptr @_ZNKSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %305) #11
  store ptr %720, ptr %64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #11
  %721 = call ptr @_ZNKSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %305) #11
  store ptr %721, ptr %65, align 8
  %722 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #11
  br i1 %722, label %.lr.ph466, label %._crit_edge467

.lr.ph462:                                        ; preds = %716, %728
  %723 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #11
  %724 = load ptr, ptr %723, align 8, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #11
  %725 = getelementptr inbounds i8, ptr %724, i64 8
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull align 8 dereferenceable(24) %725) #11
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull %62)
          to label %726 unwind label %731

726:                                              ; preds = %.lr.ph462
  call void @_ZN6Halide9LoopLevelC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %1) #11
  %727 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func8store_atENS_9LoopLevelE(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull %63)
          to label %728 unwind label %733

728:                                              ; preds = %726
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #11
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #11
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #11
  %729 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #11
  %730 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60) #11
  br i1 %730, label %.lr.ph462, label %._crit_edge463

731:                                              ; preds = %.lr.ph462
  %732 = landingpad { ptr, i32 }
          cleanup
  br label %735

733:                                              ; preds = %726
  %734 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #11
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #11
  br label %735

735:                                              ; preds = %733, %731
  %.pn381 = phi { ptr, i32 } [ %734, %733 ], [ %732, %731 ]
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #11
  br label %867

._crit_edge467:                                   ; preds = %.lr.ph466, %._crit_edge463
  %.0.lcssa = phi double [ %3, %._crit_edge463 ], [ %740, %.lr.ph466 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #11
  %736 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide9LoopLevel4lockEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %743 unwind label %297

.lr.ph466:                                        ; preds = %._crit_edge463, %.lr.ph466
  %.0464 = phi double [ %740, %.lr.ph466 ], [ %3, %._crit_edge463 ]
  %737 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #11
  %738 = load i64, ptr %737, align 8, !tbaa !143
  %739 = sitofp i64 %738 to double
  %740 = fdiv double %.0464, %739
  %741 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #11
  %742 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #11
  br i1 %742, label %.lr.ph466, label %._crit_edge467

743:                                              ; preds = %._crit_edge467
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #11
  %744 = invoke noundef zeroext i1 @_ZNK6Halide9LoopLevel7is_rootEv(ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %745 unwind label %748

745:                                              ; preds = %743
  br i1 %744, label %746, label %750

746:                                              ; preds = %745
  %747 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull @.str.50)
          to label %777 unwind label %748

748:                                              ; preds = %746, %743
  %749 = landingpad { ptr, i32 }
          cleanup
  br label %866

750:                                              ; preds = %745
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %69) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %71) #11
  invoke void @_ZNK6Halide9LoopLevel4funcB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %71, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %751 unwind label %760

751:                                              ; preds = %750
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %70, ptr noundef nonnull @.str.51, ptr noundef nonnull align 8 dereferenceable(32) %71)
          to label %752 unwind label %762

752:                                              ; preds = %751
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %69, ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.30)
          to label %753 unwind label %764

753:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %72) #11
  invoke void @_ZNK6Halide9LoopLevel3varEv(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::VarOrRVar") align 8 %72, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %754 unwind label %766

754:                                              ; preds = %753
  %755 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81) %72)
          to label %756 unwind label %768

756:                                              ; preds = %754
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %68, ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(32) %755)
          to label %757 unwind label %768

757:                                              ; preds = %756
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %67, ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull @.str.31)
          to label %758 unwind label %770

758:                                              ; preds = %757
  %759 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 8 dereferenceable(32) %67) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #11
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %72) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %72) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #11
  br label %777

760:                                              ; preds = %750
  %761 = landingpad { ptr, i32 }
          cleanup
  br label %776

762:                                              ; preds = %751
  %763 = landingpad { ptr, i32 }
          cleanup
  br label %775

764:                                              ; preds = %752
  %765 = landingpad { ptr, i32 }
          cleanup
  br label %774

766:                                              ; preds = %753
  %767 = landingpad { ptr, i32 }
          cleanup
  br label %773

768:                                              ; preds = %756, %754
  %769 = landingpad { ptr, i32 }
          cleanup
  br label %772

770:                                              ; preds = %757
  %771 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #11
  br label %772

772:                                              ; preds = %770, %768
  %.pn367 = phi { ptr, i32 } [ %771, %770 ], [ %769, %768 ]
  call void @_ZN6Halide9VarOrRVarD2Ev(ptr noundef nonnull align 8 dereferenceable(81) %72) #11
  br label %773

773:                                              ; preds = %772, %766
  %.pn367.pn = phi { ptr, i32 } [ %.pn367, %772 ], [ %767, %766 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %72) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #11
  br label %774

774:                                              ; preds = %773, %764
  %.pn367.pn.pn = phi { ptr, i32 } [ %.pn367.pn, %773 ], [ %765, %764 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #11
  br label %775

775:                                              ; preds = %774, %762
  %.pn367.pn.pn.pn = phi { ptr, i32 } [ %.pn367.pn.pn, %774 ], [ %763, %762 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #11
  br label %776

776:                                              ; preds = %775, %760
  %.pn367.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn367.pn.pn.pn, %775 ], [ %761, %760 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %71) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %69) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #11
  br label %866

777:                                              ; preds = %746, %758
  %778 = getelementptr inbounds i8, ptr %0, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #11
  %779 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %778) #11
  store ptr %779, ptr %73, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #11
  %780 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %778) #11
  store ptr %780, ptr %74, align 8
  %781 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74) #11
  br i1 %781, label %.lr.ph470, label %._crit_edge471

.lr.ph470:                                        ; preds = %777
  %782 = add nsw i32 %4, 1
  br label %786

._crit_edge471:                                   ; preds = %834, %777
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #11
  %783 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %701) #11
  store ptr %783, ptr %79, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #11
  %784 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %701) #11
  store ptr %784, ptr %80, align 8
  %785 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %80) #11
  br i1 %785, label %.lr.ph475, label %._crit_edge476

786:                                              ; preds = %.lr.ph470, %834
  %787 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #11
  %788 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %787)
  %789 = getelementptr inbounds i8, ptr %788, i64 168
  %790 = load ptr, ptr %789, align 8, !tbaa !5
  %791 = load ptr, ptr %129, align 8, !tbaa !5
  %.not374 = icmp eq ptr %790, %791
  br i1 %.not374, label %805, label %792

792:                                              ; preds = %786
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #11
  %793 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %787)
  %794 = getelementptr inbounds i8, ptr %793, i64 168
  %795 = load ptr, ptr %794, align 8, !tbaa !5
  %796 = getelementptr inbounds i8, ptr %795, i64 8
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %76, ptr noundef nonnull align 8 dereferenceable(24) %796) #11
  invoke void @_ZN6Halide4FuncC1ENS_8Internal8FunctionE(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull %76)
          to label %797 unwind label %800

797:                                              ; preds = %792
  call void @_ZN6Halide9LoopLevelC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %1) #11
  %798 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func10compute_atENS_9LoopLevelE(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull %77)
          to label %799 unwind label %802

799:                                              ; preds = %797
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #11
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #11
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #11
  br label %805

800:                                              ; preds = %792
  %801 = landingpad { ptr, i32 }
          cleanup
  br label %804

802:                                              ; preds = %797
  %803 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #11
  call void @_ZN6Halide4FuncD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #11
  br label %804

804:                                              ; preds = %802, %800
  %.pn375 = phi { ptr, i32 } [ %803, %802 ], [ %801, %800 ]
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #11
  br label %837

805:                                              ; preds = %799, %786
  %806 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %787)
  call void @_ZN6Halide9LoopLevelC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %1) #11
  invoke void @_ZNK6Halide8Internal13Autoscheduler8LoopNest5applyENS_9LoopLevelER14PerfectHashMapINS1_11FunctionDAG4Node5StageESt10unique_ptrINS2_18StageScheduleStateESt14default_deleteIS9_EELi4E22PerfectHashMapAsserterEdiPKS2_SH_(ptr noundef nonnull align 8 dereferenceable(196) %806, ptr noundef nonnull %78, ptr noundef nonnull align 8 dereferenceable(32) %2, double noundef %.0.lcssa, i32 noundef %782, ptr noundef nonnull %0, ptr noundef nonnull %spec.select)
          to label %807 unwind label %830

807:                                              ; preds = %805
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #11
  %808 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %787)
  %809 = getelementptr inbounds i8, ptr %808, i64 168
  %810 = load ptr, ptr %809, align 8, !tbaa !5
  %811 = load ptr, ptr %129, align 8, !tbaa !5
  %.not377 = icmp eq ptr %810, %811
  br i1 %.not377, label %834, label %812

812:                                              ; preds = %807
  %813 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %787)
  %814 = getelementptr inbounds i8, ptr %813, i64 176
  %815 = load ptr, ptr %814, align 8, !tbaa !44
  %816 = getelementptr inbounds i8, ptr %815, i64 8
  %817 = load i32, ptr %816, align 8, !tbaa !45
  %818 = icmp eq i32 %817, 0
  br i1 %818, label %819, label %834

819:                                              ; preds = %812
  %820 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %787)
  %821 = getelementptr inbounds i8, ptr %820, i64 176
  %822 = load ptr, ptr %821, align 8, !tbaa !44
  %823 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef %822)
          to label %824 unwind label %832

824:                                              ; preds = %819
  %825 = call noundef nonnull align 8 dereferenceable(416) ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %823) #11
  %826 = getelementptr inbounds i8, ptr %825, i64 40
  %827 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %826, ptr noundef nonnull @.str.52)
          to label %828 unwind label %832

828:                                              ; preds = %824
  %829 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %827, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %834 unwind label %832

830:                                              ; preds = %805
  %831 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide9LoopLevelD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #11
  br label %837

832:                                              ; preds = %828, %824, %819
  %833 = landingpad { ptr, i32 }
          cleanup
  br label %837

834:                                              ; preds = %828, %812, %807
  %835 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #11
  %836 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74) #11
  br i1 %836, label %786, label %._crit_edge471

837:                                              ; preds = %832, %830, %804
  %.pn378 = phi { ptr, i32 } [ %833, %832 ], [ %831, %830 ], [ %.pn375, %804 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #11
  br label %866

._crit_edge476:                                   ; preds = %862, %._crit_edge471
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #11
  br label %865

.lr.ph475:                                        ; preds = %._crit_edge471, %862
  %838 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %79) #11
  %839 = load ptr, ptr %838, align 8, !tbaa !150
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #11
  %840 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %778) #11
  store ptr %840, ptr %81, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #11
  %841 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %778) #11
  store ptr %841, ptr %82, align 8
  %842 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #11
  br i1 %842, label %.lr.ph473, label %.loopexit502

.lr.ph473:                                        ; preds = %.lr.ph475, %847
  %843 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #11
  %844 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %843)
  %845 = getelementptr inbounds i8, ptr %844, i64 168
  %846 = load ptr, ptr %845, align 8, !tbaa !5
  %.not373 = icmp eq ptr %846, %839
  br i1 %.not373, label %850, label %847

847:                                              ; preds = %.lr.ph473
  %848 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #11
  %849 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #11
  br i1 %849, label %.lr.ph473, label %.loopexit502

850:                                              ; preds = %.lr.ph473
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #11
  br label %862

.loopexit502:                                     ; preds = %847, %.lr.ph475
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #11
  %851 = getelementptr inbounds i8, ptr %839, i64 120
  %852 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %851, i64 noundef 0) #11
  %853 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull %852)
          to label %854 unwind label %860

854:                                              ; preds = %.loopexit502
  %855 = call noundef nonnull align 8 dereferenceable(416) ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateESt14default_deleteIS4_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %853) #11
  %856 = getelementptr inbounds i8, ptr %855, i64 40
  %857 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %856, ptr noundef nonnull @.str.53)
          to label %858 unwind label %860

858:                                              ; preds = %854
  %859 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %857, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %862 unwind label %860

860:                                              ; preds = %858, %854, %.loopexit502
  %861 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #11
  br label %866

862:                                              ; preds = %850, %858
  %863 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %79) #11
  %864 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %80) #11
  br i1 %864, label %.lr.ph475, label %._crit_edge476

865:                                              ; preds = %._crit_edge476, %.critedge404
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %18) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %18) #11
  br label %869

866:                                              ; preds = %860, %837, %776, %748
  %.pn378.pn = phi { ptr, i32 } [ %.pn378, %837 ], [ %861, %860 ], [ %749, %748 ], [ %.pn367.pn.pn.pn.pn, %776 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #11
  br label %867

867:                                              ; preds = %297, %696, %712, %714, %735, %866, %362, %360, %359, %286, %287, %250
  %.pn383.pn = phi { ptr, i32 } [ %.pn323, %250 ], [ %288, %287 ], [ %.pn326, %286 ], [ %715, %714 ], [ %713, %712 ], [ %.pn381, %735 ], [ %.pn378.pn, %866 ], [ %298, %297 ], [ %.pn357.pn.pn, %696 ], [ %363, %362 ], [ %361, %360 ], [ %.pn363, %359 ]
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %18) #11
  br label %868

868:                                              ; preds = %867, %245
  %.pn383.pn.pn = phi { ptr, i32 } [ %.pn383.pn, %867 ], [ %.pn321, %245 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %18) #11
  br label %870

869:                                              ; preds = %865, %._crit_edge479
  ret void

870:                                              ; preds = %868, %217, %204, %161, %124
  %.pn390.pn = phi { ptr, i32 } [ %.pn390, %124 ], [ %.pn383.pn.pn, %868 ], [ %.pn, %204 ], [ %218, %217 ], [ %162, %161 ]
  resume { ptr, i32 } %.pn390.pn

871:                                              ; preds = %357
  %872 = landingpad { ptr, i32 }
          catch ptr null
  %873 = extractvalue { ptr, i32 } %872, 0
  call void @__clang_call_terminate(ptr %873) #14
  unreachable
}

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

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func12compute_rootEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

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

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

declare void @_ZN6Halide9LoopLevel4rootEv(ptr dead_on_unwind writable sret(%"class.Halide::LoopLevel") align 8) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt10unique_ptrINS2_8LoopNest18StageScheduleStateESt14default_deleteIS8_EELi4E22PerfectHashMapAsserterE8containsEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #9

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(81) ptr @_ZN6Halide9VarOrRVaraSERKS0_(ptr noundef nonnull align 8 dereferenceable(81), ptr noundef nonnull align 8 dereferenceable(81)) local_unnamed_addr #8 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZSt4swapIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarEENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS9_ESt18is_move_assignableIS9_EEE5valueEvE4typeERS9_SI_(ptr noundef nonnull align 8 dereferenceable(230), ptr noundef nonnull align 8 dereferenceable(230)) local_unnamed_addr #2

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

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

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

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

declare void @_ZNK6Halide4FunccvNS_5StageEEv(ptr dead_on_unwind writable sret(%"class.Halide::Stage") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

declare void @_ZN6Halide4Func6updateEi(ptr dead_on_unwind writable sret(%"class.Halide::Stage") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #5

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

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func8store_inENS_10MemoryTypeE(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide9VarOrRVar4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(81)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #8

declare noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage9vectorizeENS_9VarOrRVarE(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef) local_unnamed_addr #5

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(230) ptr @_ZN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVaraSERKS4_(ptr noundef nonnull align 8 dereferenceable(230), ptr noundef nonnull align 8 dereferenceable(230)) local_unnamed_addr #8 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #8

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide9VarOrRVarC2ERKNS_4RVarE(ptr noundef nonnull align 8 dereferenceable(81), ptr noundef nonnull align 8 dereferenceable(44)) unnamed_addr #3 align 2

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

declare noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage5splitENS_9VarOrRVarES1_S1_NS_4ExprENS_12TailStrategyE(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #5

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6HalidelsERSoRKNS_12TailStrategyE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt11stable_sortIN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS7_SaIS7_EEEEZNKS5_5applyENS2_9LoopLevelER14PerfectHashMapINS4_11FunctionDAG4Node5StageESt10unique_ptrIS6_St14default_deleteIS6_EELi4E22PerfectHashMapAsserterEdiPKS5_SQ_E3$_0EvT_SS_T0_"(ptr, ptr) local_unnamed_addr #8

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

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

declare noundef nonnull align 8 dereferenceable(64) ptr @_ZN6Halide5Stage6unrollENS_9VarOrRVarE(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(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(230) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

declare void @_ZN6Halide9LoopLevelC1ERKNS_8Internal8FunctionENS_9VarOrRVarEi(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef, i32 noundef) unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide3Var9outermostEv(ptr dead_on_unwind noalias writable sret(%"class.Halide::Var") align 8) local_unnamed_addr #3 align 2

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func8store_atENS_9LoopLevelE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #5

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide9LoopLevel4lockEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

declare noundef zeroext i1 @_ZNK6Halide9LoopLevel7is_rootEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #8

declare void @_ZNK6Halide9LoopLevel4funcB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

declare void @_ZNK6Halide9LoopLevel3varEv(ptr dead_on_unwind writable sret(%"struct.Halide::VarOrRVar") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZN6Halide4Func10compute_atENS_9LoopLevelE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #10

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !17, i64 168}
!6 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNestE", !7, i64 0, !13, i64 8, !18, i64 32, !22, i64 56, !28, i64 88, !37, i64 136, !17, i64 168, !17, i64 176, !43, i64 184, !43, i64 185, !43, i64 186, !10, i64 188, !10, i64 192}
!7 = !{!"_ZTSN6Halide8Internal8RefCountE", !8, i64 0}
!8 = !{!"_ZTSSt6atomicIiE", !9, i64 0}
!9 = !{!"_ZTSSt13__atomic_baseIiE", !10, i64 0}
!10 = !{!"int", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"_ZTSSt6vectorIlSaIlEE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!17 = !{!"any pointer", !11, i64 0}
!18 = !{!"_ZTSSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!22 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE", !23, i64 0, !10, i64 24, !27, i64 28}
!23 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!27 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterEUt_E", !11, i64 0}
!28 = !{!"_ZTSSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE", !29, i64 0}
!29 = !{!"_ZTSSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE", !30, i64 0}
!30 = !{!"_ZTSNSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !31, i64 0, !33, i64 8}
!31 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEE", !32, i64 0}
!32 = !{!"_ZTSSt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEE"}
!33 = !{!"_ZTSSt15_Rb_tree_header", !34, i64 0, !36, i64 32}
!34 = !{!"_ZTSSt18_Rb_tree_node_base", !35, i64 0, !17, i64 8, !17, i64 16, !17, i64 24}
!35 = !{!"_ZTSSt14_Rb_tree_color", !11, i64 0}
!36 = !{!"long", !11, i64 0}
!37 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterE", !38, i64 0, !10, i64 24, !42, i64 28}
!38 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!42 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterEUt_E", !11, i64 0}
!43 = !{!"bool", !11, i64 0}
!44 = !{!6, !17, i64 176}
!45 = !{!46, !10, i64 8}
!46 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageE", !17, i64 0, !10, i64 8, !47, i64 16, !43, i64 40, !10, i64 44, !51, i64 48, !52, i64 1200, !62, i64 1264, !10, i64 1296, !10, i64 1300, !64, i64 1304, !68, i64 1328}
!47 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!51 = !{!"_ZTSN6Halide8Internal16PipelineFeaturesE", !11, i64 0, !11, i64 28, !11, i64 700, !11, i64 812, !11, i64 924, !11, i64 1036}
!52 = !{!"_ZTSN6Halide5StageE", !53, i64 0, !56, i64 24, !36, i64 32, !58, i64 40}
!53 = !{!"_ZTSN6Halide8Internal8FunctionE", !54, i64 0}
!54 = !{!"_ZTSN6Halide8Internal11FunctionPtrE", !55, i64 0, !17, i64 8, !10, i64 16}
!55 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_13FunctionGroupEEE", !17, i64 0}
!56 = !{!"_ZTSN6Halide8Internal10DefinitionE", !57, i64 0}
!57 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_18DefinitionContentsEEE", !17, i64 0}
!58 = !{!"_ZTSSt6vectorIN6Halide3VarESaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseIN6Halide3VarESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!62 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !63, i64 0, !36, i64 8, !11, i64 16}
!63 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !17, i64 0}
!64 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !65, i64 0}
!65 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !66, i64 0}
!66 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE12_Vector_implE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!68 = !{!"_ZTSSt6vectorIbSaIbEE", !69, i64 0}
!69 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !70, i64 0}
!70 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !72, i64 0, !72, i64 16, !17, i64 32}
!72 = !{!"_ZTSSt13_Bit_iterator", !73, i64 0}
!73 = !{!"_ZTSSt18_Bit_iterator_base", !17, i64 0, !10, i64 8}
!74 = !{!75, !76, i64 0}
!75 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleStateE", !76, i64 0, !10, i64 8, !10, i64 12, !77, i64 16, !81, i64 40}
!76 = !{!"double", !11, i64 0}
!77 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarESaIS5_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!81 = !{!"_ZTSNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE", !82, i64 0, !83, i64 8}
!82 = !{!"_ZTSSo"}
!83 = !{!"_ZTSNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE", !84, i64 0, !86, i64 64, !62, i64 72}
!84 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !17, i64 8, !17, i64 16, !17, i64 24, !17, i64 32, !17, i64 40, !17, i64 48, !85, i64 56}
!85 = !{!"_ZTSSt6locale", !17, i64 0}
!86 = !{!"_ZTSSt13_Ios_Openmode", !11, i64 0}
!87 = !{!10, !10, i64 0}
!88 = !{!6, !10, i64 192}
!89 = !{!90, !43, i64 32}
!90 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopE", !62, i64 0, !43, i64 32, !43, i64 33, !91, i64 40, !91, i64 48, !10, i64 56, !43, i64 60, !10, i64 64, !43, i64 68, !36, i64 72, !36, i64 80, !62, i64 88}
!91 = !{!"_ZTSN6Halide4ExprE", !92, i64 0}
!92 = !{!"_ZTSN6Halide8Internal8IRHandleE", !93, i64 0}
!93 = !{!"_ZTSN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEEE", !17, i64 0}
!94 = !{i8 0, i8 2}
!95 = !{}
!96 = !{!97, !36, i64 208}
!97 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNest18StageScheduleState7FuncVarE", !98, i64 0, !98, i64 88, !62, i64 176, !36, i64 208, !36, i64 216, !43, i64 224, !43, i64 225, !43, i64 226, !43, i64 227, !43, i64 228, !43, i64 229}
!98 = !{!"_ZTSN6Halide9VarOrRVarE", !99, i64 0, !100, i64 32, !43, i64 80}
!99 = !{!"_ZTSN6Halide3VarE", !62, i64 0}
!100 = !{!"_ZTSN6Halide4RVarE", !62, i64 0, !101, i64 32, !10, i64 40}
!101 = !{!"_ZTSN6Halide8Internal15ReductionDomainE", !102, i64 0}
!102 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_23ReductionDomainContentsEEE", !17, i64 0}
!103 = !{!97, !43, i64 229}
!104 = !{!97, !43, i64 225}
!105 = !{!97, !43, i64 226}
!106 = !{!97, !43, i64 227}
!107 = !{!97, !43, i64 228}
!108 = !{!97, !36, i64 216}
!109 = !{!97, !43, i64 224}
!110 = distinct !{!110, !111}
!111 = !{!"llvm.loop.mustprogress"}
!112 = distinct !{!112, !111}
!113 = !{!114, !76, i64 32}
!114 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4NodeE", !17, i64 0, !53, i64 8, !76, i64 32, !115, i64 40, !119, i64 64, !123, i64 88, !43, i64 112, !127, i64 120, !64, i64 144, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !43, i64 184, !43, i64 185, !43, i64 186, !43, i64 187, !43, i64 188, !131, i64 192}
!115 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !116, i64 0}
!116 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !117, i64 0}
!117 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12_Vector_implE", !118, i64 0}
!118 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!119 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !120, i64 0}
!120 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !121, i64 0}
!121 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE12_Vector_implE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!123 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !124, i64 0}
!124 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !125, i64 0}
!125 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE12_Vector_implE", !126, i64 0}
!126 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!127 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !128, i64 0}
!128 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !129, i64 0}
!129 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12_Vector_implE", !130, i64 0}
!130 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!131 = !{!"_ZTSSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !132, i64 0}
!132 = !{!"_ZTSSt15__uniq_ptr_dataIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_ELb1ELb1EE", !133, i64 0}
!133 = !{!"_ZTSSt15__uniq_ptr_implIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !134, i64 0}
!134 = !{!"_ZTSSt5tupleIJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !135, i64 0}
!135 = !{!"_ZTSSt11_Tuple_implILm0EJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !136, i64 0}
!136 = !{!"_ZTSSt10_Head_baseILm0EPN6Halide8Internal13Autoscheduler13BoundContents6LayoutELb0EE", !17, i64 0}
!137 = !{!114, !10, i64 180}
!138 = distinct !{!138, !111}
!139 = !{!114, !43, i64 186}
!140 = !{!6, !43, i64 184}
!141 = distinct !{!141, !111}
!142 = distinct !{!142, !111}
!143 = !{!36, !36, i64 0}
!144 = !{!97, !43, i64 168}
!145 = !{!146, !146, i64 0}
!146 = !{!"_ZTSN6Halide12TailStrategyE", !11, i64 0}
!147 = distinct !{!147, !111}
!148 = distinct !{!148, !111}
!149 = distinct !{!149, !111}
!150 = !{!17, !17, i64 0}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass