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

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

%"struct.Halide::Expr" = type { %"struct.Halide::Internal::IRHandle" }
%"struct.Halide::Internal::IRHandle" = type { %"struct.Halide::Internal::IntrusivePtr.64" }
%"struct.Halide::Internal::IntrusivePtr.64" = 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::map.103" = type { %"class.std::_Rb_tree.104" }
%"class.std::_Rb_tree.104" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Function>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Function>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Function>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Function>>, std::less<std::__cxx11::basic_string<char>>>::_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.__gnu_cxx::__normal_iterator.113" = type { ptr }
%"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.ApplyParamEstimates = type { %"class.Halide::Internal::IRMutator" }
%"class.Halide::Internal::IRMutator" = type { ptr }
%"class.std::vector.114" = type { %"struct.std::_Vector_base.115" }
%"struct.std::_Vector_base.115" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.119" = type { %"class.std::_Rb_tree.120" }
%"class.std::_Rb_tree.120" = type { %"struct.std::_Rb_tree<Halide::Internal::Function, std::pair<const Halide::Internal::Function, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::_Select1st<std::pair<const Halide::Internal::Function, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>, Halide::Internal::Function::Compare>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Halide::Internal::Function, std::pair<const Halide::Internal::Function, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::_Select1st<std::pair<const Halide::Internal::Function, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>, Halide::Internal::Function::Compare>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.Halide::Internal::Scope" = type { %"class.std::map.65", ptr }
%"class.std::map.65" = type { %"class.std::_Rb_tree.66" }
%"class.std::_Rb_tree.66" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::SmallStack<Halide::Internal::Interval>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::SmallStack<Halide::Internal::Interval>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::SmallStack<Halide::Internal::Interval>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::SmallStack<Halide::Internal::Interval>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.Halide::Var" = type { %"class.std::__cxx11::basic_string" }
%"struct.Halide::Internal::Interval" = type { %"struct.Halide::Expr", %"struct.Halide::Expr" }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval" = type { %"class.Halide::Var", %"class.Halide::Var" }
%"class.Halide::Stage" = type { %"class.Halide::Internal::Function", %"class.Halide::Internal::Definition", i64, %"class.std::vector.52" }
%"class.Halide::Internal::Definition" = type { %"struct.Halide::Internal::IntrusivePtr.51" }
%"struct.Halide::Internal::IntrusivePtr.51" = type { ptr }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = 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.__gnu_cxx::__normal_iterator.136" = type { ptr }
%"struct.Halide::Type" = type { %struct.halide_type_t, ptr }
%struct.halide_type_t = type { i8, i8, i16 }
%"class.std::map.137" = type { %"class.std::_Rb_tree.138" }
%"class.std::_Rb_tree.138" = type { %"struct.std::_Rb_tree<std::pair<std::__cxx11::basic_string<char>, int>, std::pair<const std::pair<std::__cxx11::basic_string<char>, int>, Halide::Internal::Interval>, std::_Select1st<std::pair<const std::pair<std::__cxx11::basic_string<char>, int>, Halide::Internal::Interval>>, std::less<std::pair<std::__cxx11::basic_string<char>, int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<std::__cxx11::basic_string<char>, int>, std::pair<const std::pair<std::__cxx11::basic_string<char>, int>, Halide::Internal::Interval>, std::_Select1st<std::pair<const std::pair<std::__cxx11::basic_string<char>, int>, Halide::Internal::Interval>>, std::less<std::pair<std::__cxx11::basic_string<char>, int>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"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::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::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" }
%"class.std::vector.143" = type { %"struct.std::_Vector_base.144" }
%"struct.std::_Vector_base.144" = type { %"struct.std::_Vector_base<Halide::Expr, std::allocator<Halide::Expr>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Expr, std::allocator<Halide::Expr>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Expr, std::allocator<Halide::Expr>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Expr, std::allocator<Halide::Expr>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.161" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.160" = type { ptr }
%"class.std::allocator.15" = type { i8 }
%"class.Halide::Buffer" = type { ptr, %"struct.Halide::Internal::IntrusivePtr.80" }
%"struct.Halide::Internal::IntrusivePtr.80" = type { ptr }
%"class.Halide::Internal::Parameter" = type { ptr, %"struct.Halide::Internal::IntrusivePtr.79" }
%"struct.Halide::Internal::IntrusivePtr.79" = type { ptr }
%class.CheckTypes = type { %"class.Halide::Internal::IRVisitor", %"class.Halide::Internal::Function", i8, i32, %"struct.Halide::Type", %"class.std::map.162" }
%"class.Halide::Internal::IRVisitor" = type { ptr }
%"class.std::map.162" = type { %"class.std::_Rb_tree.163" }
%"class.std::_Rb_tree.163" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.167" = type { %"class.std::_Rb_tree.168" }
%"class.std::_Rb_tree.168" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Autoscheduler::Span>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Autoscheduler::Span>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Autoscheduler::Span>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Autoscheduler::Span>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.__gnu_cxx::__normal_iterator.178" = type { ptr }
%"struct.Halide::Internal::Bound" = type { %"class.std::__cxx11::basic_string", %"struct.Halide::Expr", %"struct.Halide::Expr", %"struct.Halide::Expr", %"struct.Halide::Expr" }
%"class.Halide::Internal::Autoscheduler::Span" = type <{ i64, i64, i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator.181" = type { ptr }
%"class.std::map.186" = type { %"class.std::_Rb_tree.187" }
%"class.std::_Rb_tree.187" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Box>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Box>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Box>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Box>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_iterator.191" = type { ptr }
%"struct.std::_Rb_tree_iterator.199" = type { ptr }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge" = type { %"class.std::vector.82", ptr, ptr, i32, i8, %"class.std::vector.87" }
%"class.std::vector.82" = type { %"struct.std::_Vector_base.83" }
%"struct.std::_Vector_base.83" = type { %"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.87" = type { %"struct.std::_Vector_base.88" }
%"struct.std::_Vector_base.88" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.200" = type { ptr }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo" = type <{ %"struct.Halide::Expr", i64, i64, i64, i8, i8, [6 x i8] }>
%"class.__gnu_cxx::__normal_iterator.201" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.202" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.203" = type { ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG" = type { %"class.std::vector.93", %"class.std::vector.98" }
%"class.std::vector.93" = type { %"struct.std::_Vector_base.94" }
%"struct.std::_Vector_base.94" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.98" = type { %"struct.std::_Vector_base.99" }
%"struct.std::_Vector_base.99" = 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 }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node" = type { ptr, %"class.Halide::Internal::Function", double, %"class.std::vector.19", %"class.std::vector.24", %"class.std::vector.29", i8, %"class.std::vector.34", %"class.std::vector.39", i32, i32, i32, i32, i8, i8, i8, i8, i8, %"class.std::unique_ptr" }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = 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.24" = type { %"struct.std::_Vector_base.25" }
%"struct.std::_Vector_base.25" = 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.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = 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.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = 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.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = 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.45" }
%"struct.std::_Head_base.45" = type { ptr }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage" = type { ptr, i32, %"class.std::vector.46", i8, i32, %"struct.Halide::Internal::PipelineFeatures", %"class.Halide::Stage", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.39", %"class.std::vector.57" }
%"class.std::vector.46" = type { %"struct.std::_Vector_base.47" }
%"struct.std::_Vector_base.47" = 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.57" = 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::ReductionVariable" = type { %"class.std::__cxx11::basic_string", %"struct.Halide::Expr", %"struct.Halide::Expr" }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo" = type { %"struct.Halide::Internal::Interval", i8, i8, i64, i64 }
%"struct.Halide::Internal::Min" = type { %"struct.Halide::Internal::ExprNode.148", %"struct.Halide::Expr", %"struct.Halide::Expr" }
%"struct.Halide::Internal::ExprNode.148" = type { %"struct.Halide::Internal::BaseExprNode" }
%"struct.Halide::Internal::BaseExprNode" = type { %"struct.Halide::Internal::IRNode", %"struct.Halide::Type" }
%"struct.Halide::Internal::IRNode" = type { ptr, %"class.Halide::Internal::RefCount", i32 }
%"class.Halide::Internal::RefCount" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"struct.Halide::Internal::Max" = type { %"struct.Halide::Internal::ExprNode.149", %"struct.Halide::Expr", %"struct.Halide::Expr" }
%"struct.Halide::Internal::ExprNode.149" = type { %"struct.Halide::Internal::BaseExprNode" }
%"struct.Halide::Internal::Dim" = type <{ %"class.std::__cxx11::basic_string", i32, i32, i32, [4 x i8] }>
%"struct.std::pair.179" = type { %"class.std::__cxx11::basic_string", %"class.Halide::Internal::Autoscheduler::Span" }
%"struct.std::pair.182" = type { %"struct.std::pair.184", %"struct.Halide::Internal::Interval" }
%"struct.std::pair.184" = type <{ %"class.std::__cxx11::basic_string", i32, [4 x i8] }>
%"struct.std::pair.192" = type { %"class.std::__cxx11::basic_string", %"struct.Halide::Internal::Box" }
%"struct.Halide::Internal::Box" = type { %"struct.Halide::Expr", %"class.std::vector.194" }
%"class.std::vector.194" = type { %"struct.std::_Vector_base.195" }
%"struct.std::_Vector_base.195" = type { %"struct.std::_Vector_base<Halide::Internal::Interval, std::allocator<Halide::Internal::Interval>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Interval, std::allocator<Halide::Internal::Interval>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Interval, std::allocator<Halide::Internal::Interval>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Interval, std::allocator<Halide::Internal::Interval>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo" }
%"class.Halide::Internal::Autoscheduler::BoundContents::Layout" = type { %"class.std::vector", %"class.std::vector.0", i64, i32, i32, %"class.std::vector.5" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::BoundContents *, std::allocator<Halide::Internal::Autoscheduler::BoundContents *>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::BoundContents *, std::allocator<Halide::Internal::Autoscheduler::BoundContents *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::BoundContents *, std::allocator<Halide::Internal::Autoscheduler::BoundContents *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::BoundContents *, std::allocator<Halide::Internal::Autoscheduler::BoundContents *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl" }
%"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl" = type { %"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<void *, std::allocator<void *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [5 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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

; 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

; 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

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

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

declare noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24)) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler4SpanC2Ellb(ptr noundef nonnull align 8 dereferenceable(17), i64 noundef, i64 noundef, i1 noundef zeroext) unnamed_addr #7 align 2

declare void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8, ptr noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) #2

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

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

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

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

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

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

; 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_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 noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local 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)) #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Halide8Internal13Autoscheduler11FunctionDAGC2ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(20) %2, ptr noundef nonnull align 8 dereferenceable(32) %3) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %"class.std::map.103", align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %13 = alloca %"class.Halide::Internal::Function", align 8
  %14 = alloca %"class.Halide::Internal::Function", align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %class.ApplyParamEstimates, align 8
  %18 = alloca %"class.std::vector.114", align 8
  %19 = alloca %"class.std::map.119", align 8
  %20 = alloca i64, align 8
  %21 = alloca %"class.Halide::Internal::Function", align 8
  %22 = alloca i32, align 4
  %23 = alloca i64, align 8
  %24 = alloca i32, align 4
  %25 = alloca ptr, align 8
  %26 = alloca %"class.Halide::Internal::Function", align 8
  %27 = alloca %"class.Halide::Internal::Scope", align 8
  %28 = alloca i32, align 4
  %29 = alloca %"class.Halide::Var", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.Halide::Var", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"struct.Halide::Internal::Interval", align 8
  %38 = alloca %"struct.Halide::Expr", align 8
  %39 = alloca %"struct.Halide::Expr", align 8
  %40 = alloca %"struct.Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval", align 8
  %41 = alloca %"class.std::vector.114", align 8
  %42 = alloca i32, align 4
  %43 = alloca %"class.Halide::Stage", align 8
  %44 = alloca %"class.Halide::Internal::Function", align 8
  %45 = alloca %"class.Halide::Internal::Definition", align 8
  %46 = alloca %"class.Halide::Stage", align 8
  %47 = alloca %"class.Halide::Internal::Function", align 8
  %48 = alloca %"class.Halide::Internal::Definition", align 8
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca %"class.Halide::Internal::Scope", align 8
  %57 = alloca %"class.Halide::Internal::Scope", align 8
  %58 = alloca ptr, align 8
  %59 = alloca %"class.__gnu_cxx::__normal_iterator.136", align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.136", align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"struct.Halide::Expr", align 8
  %63 = alloca %"struct.Halide::Expr", align 8
  %64 = alloca %"struct.Halide::Expr", align 8
  %65 = alloca %"struct.Halide::Expr", align 8
  %66 = alloca %"struct.Halide::Expr", align 8
  %67 = alloca %"struct.Halide::Expr", align 8
  %68 = alloca %"struct.Halide::Expr", align 8
  %69 = alloca %"struct.Halide::Expr", align 8
  %70 = alloca %"struct.Halide::Internal::Interval", align 8
  %71 = alloca %"struct.Halide::Expr", align 8
  %72 = alloca %"struct.Halide::Expr", align 8
  %73 = alloca %"struct.Halide::Expr", align 8
  %74 = alloca %"struct.Halide::Type", align 8
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"struct.Halide::Expr", align 8
  %79 = alloca %"struct.Halide::Type", align 8
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"struct.Halide::Internal::Interval", align 8
  %84 = alloca %"struct.Halide::Expr", align 8
  %85 = alloca %"struct.Halide::Expr", align 8
  %86 = alloca %"class.std::map.137", align 8
  %87 = alloca i32, align 4
  %88 = alloca %"struct.Halide::Internal::Interval", align 8
  %89 = alloca %"struct.Halide::Expr", align 8
  %90 = alloca %"class.Halide::Internal::Voidifier", align 1
  %91 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %92 = alloca i1, align 1
  %93 = alloca i1, align 1
  %94 = alloca i32, align 4
  %95 = alloca ptr, align 8
  %96 = alloca ptr, align 8
  %97 = alloca %"struct.Halide::Expr", align 8
  %98 = alloca %"struct.Halide::Expr", align 8
  %99 = alloca %"struct.Halide::Expr", align 8
  %100 = alloca %"struct.Halide::Expr", align 8
  %101 = alloca %"struct.Halide::Expr", align 8
  %102 = alloca %"struct.Halide::Expr", align 8
  %103 = alloca i1, align 1
  %104 = alloca i1, align 1
  %105 = alloca ptr, align 8
  %106 = alloca ptr, align 8
  %107 = alloca ptr, align 8
  %108 = alloca ptr, align 8
  %109 = alloca %"struct.Halide::Expr", align 8
  %110 = alloca i1, align 1
  %111 = alloca i1, align 1
  %112 = alloca %"struct.Halide::Expr", align 8
  %113 = alloca i1, align 1
  %114 = alloca i1, align 1
  %115 = alloca %"class.Halide::Internal::Voidifier", align 1
  %116 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %117 = alloca i1, align 1
  %118 = alloca i1, align 1
  %119 = alloca i64, align 8
  %120 = alloca ptr, align 8
  %121 = alloca %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::__cxx11::basic_string", align 8
  %124 = alloca %"class.std::__cxx11::basic_string", align 8
  %125 = alloca %"class.std::__cxx11::basic_string", align 8
  %126 = alloca %"struct.Halide::Internal::Interval", align 8
  %127 = alloca i32, align 4
  %128 = alloca ptr, align 8
  %129 = alloca ptr, align 8
  %130 = alloca %"class.std::vector.143", align 8
  %131 = alloca %"class.__gnu_cxx::__normal_iterator.161", align 8
  %132 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %133 = alloca %"class.__gnu_cxx::__normal_iterator.161", align 8
  %134 = alloca %"class.__gnu_cxx::__normal_iterator.161", align 8
  %135 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %136 = alloca %"struct.Halide::Expr", align 8
  %137 = alloca %"struct.Halide::Type", align 8
  %138 = alloca %"class.std::__cxx11::basic_string", align 8
  %139 = alloca %"class.std::allocator.15", align 1
  %140 = alloca %"struct.Halide::Internal::FunctionPtr", align 8
  %141 = alloca %"class.Halide::Buffer", align 8
  %142 = alloca %"class.Halide::Internal::Parameter", align 8
  %143 = alloca %class.CheckTypes, align 8
  %144 = alloca %"class.Halide::Internal::Function", align 8
  %145 = alloca %"struct.Halide::Type", align 8
  %146 = alloca i32, align 4
  %147 = alloca ptr, align 8
  %148 = alloca %"class.__gnu_cxx::__normal_iterator.161", align 8
  %149 = alloca %"class.__gnu_cxx::__normal_iterator.161", align 8
  %150 = alloca ptr, align 8
  %151 = alloca %"struct.Halide::Type", align 8
  %152 = alloca %"struct.Halide::Type", align 8
  %153 = alloca %"struct.Halide::Type", align 8
  %154 = alloca ptr, align 8
  %155 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %156 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %157 = alloca ptr, align 8
  %158 = alloca %"class.std::map.167", align 8
  %159 = alloca ptr, align 8
  %160 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %161 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %162 = alloca %"struct.Halide::Internal::Bound", align 8
  %163 = alloca i64, align 8
  %164 = alloca i64, align 8
  %165 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %166 = alloca ptr, align 8
  %167 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %168 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %169 = alloca %"struct.Halide::Internal::Bound", align 8
  %170 = alloca ptr, align 8
  %171 = alloca ptr, align 8
  %172 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %173 = alloca i32, align 4
  %174 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %175 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %176 = alloca %"class.Halide::Internal::Voidifier", align 1
  %177 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %178 = alloca i1, align 1
  %179 = alloca i1, align 1
  %180 = alloca %"struct.Halide::Expr", align 8
  %181 = alloca ptr, align 8
  %182 = alloca %"struct.std::_Rb_tree_iterator.181", align 8
  %183 = alloca %"struct.std::_Rb_tree_iterator.181", align 8
  %184 = alloca ptr, align 8
  %185 = alloca %"struct.Halide::Expr", align 8
  %186 = alloca %"struct.Halide::Expr", align 8
  %187 = alloca i8, align 1
  %188 = alloca %"class.std::__cxx11::basic_string", align 8
  %189 = alloca i1, align 1
  %190 = alloca %"class.std::allocator.15", align 1
  %191 = alloca i1, align 1
  %192 = alloca i1, align 1
  %193 = alloca i1, align 1
  %194 = alloca %"class.std::map.186", align 8
  %195 = alloca %"struct.Halide::Expr", align 8
  %196 = alloca ptr, align 8
  %197 = alloca %"struct.std::_Rb_tree_iterator.191", align 8
  %198 = alloca %"struct.std::_Rb_tree_iterator.191", align 8
  %199 = alloca ptr, align 8
  %200 = alloca %"struct.std::_Rb_tree_iterator.199", align 8
  %201 = alloca %"struct.std::_Rb_tree_iterator.199", align 8
  %202 = alloca %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", align 8
  %203 = alloca ptr, align 8
  %204 = alloca %"class.__gnu_cxx::__normal_iterator.200", align 8
  %205 = alloca %"class.__gnu_cxx::__normal_iterator.200", align 8
  %206 = alloca ptr, align 8
  %207 = alloca %"class.Halide::Internal::Voidifier", align 1
  %208 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %209 = alloca i1, align 1
  %210 = alloca i1, align 1
  %211 = alloca %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", align 8
  %212 = alloca %"struct.Halide::Expr", align 8
  %213 = alloca %"struct.Halide::Expr", align 8
  %214 = alloca %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", align 8
  %215 = alloca %"struct.Halide::Expr", align 8
  %216 = alloca %"struct.Halide::Expr", align 8
  %217 = alloca ptr, align 8
  %218 = alloca %"class.__gnu_cxx::__normal_iterator.201", align 8
  %219 = alloca %"class.__gnu_cxx::__normal_iterator.201", align 8
  %220 = alloca ptr, align 8
  %221 = alloca ptr, align 8
  %222 = alloca ptr, align 8
  %223 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %224 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %225 = alloca ptr, align 8
  %226 = alloca i32, align 4
  %227 = alloca ptr, align 8
  %228 = alloca %"class.__gnu_cxx::__normal_iterator.201", align 8
  %229 = alloca %"class.__gnu_cxx::__normal_iterator.201", align 8
  %230 = alloca ptr, align 8
  %231 = alloca ptr, align 8
  %232 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %233 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %234 = alloca ptr, align 8
  %235 = alloca i64, align 8
  %236 = alloca ptr, align 8
  %237 = alloca ptr, align 8
  %238 = alloca i64, align 8
  %239 = alloca ptr, align 8
  %240 = alloca ptr, align 8
  %241 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %242 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %243 = alloca ptr, align 8
  %244 = alloca ptr, align 8
  %245 = alloca %"class.__gnu_cxx::__normal_iterator.203", align 8
  %246 = alloca %"class.__gnu_cxx::__normal_iterator.203", align 8
  %247 = alloca ptr, align 8
  %248 = alloca %"struct.std::_Bit_reference", align 8
  %249 = alloca ptr, align 8
  %250 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %251 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %252 = alloca ptr, align 8
  %253 = alloca i64, align 8
  %254 = alloca %"struct.std::_Bit_reference", align 8
  %255 = alloca %"struct.std::_Bit_reference", align 8
  %256 = alloca %"struct.std::_Bit_reference", align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %257 = load ptr, ptr %5, align 8
  %258 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %258) #13
  %259 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 1
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %259) #13
  call void @llvm.lifetime.start.p0(i64 48, ptr %9) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #13
  %260 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %260, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #13
  %261 = load ptr, ptr %10, align 8, !tbaa !5
  %262 = call ptr @_ZNKSt6vectorIN6Halide8Internal8FunctionESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %261) #13
  %263 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.113", ptr %11, i32 0, i32 0
  store ptr %262, ptr %263, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #13
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  %265 = call ptr @_ZNKSt6vectorIN6Halide8Internal8FunctionESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #13
  %266 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.113", ptr %12, i32 0, i32 0
  store ptr %265, ptr %266, align 8
  br label %267

267:                                              ; preds = %273, %4
  %268 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  br i1 %268, label %270, label %269

269:                                              ; preds = %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #13
  br label %279

270:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #13
  %271 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #13
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %271) #13
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(24) %13) #13
  invoke void @_ZN6Halide8Internal20populate_environmentENS0_8FunctionERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_St4lessIS8_ESaISt4pairIKS8_S1_EEE(ptr noundef %14, ptr noundef nonnull align 8 dereferenceable(48) %9)
          to label %272 unwind label %275

272:                                              ; preds = %270
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #13
  br label %273

273:                                              ; preds = %272
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #13
  br label %267

275:                                              ; preds = %270
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %15, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %16, align 4
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #13
  br label %2699

279:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #13
  invoke void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN19ApplyParamEstimatesC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %280 unwind label %291

280:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #13
  %281 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN6Halide8Internal17topological_orderERKSt6vectorINS0_8FunctionESaIS2_EERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES2_St4lessISD_ESaISt4pairIKSD_S2_EEE(ptr dead_on_unwind writable sret(%"class.std::vector.114") align 8 %18, ptr noundef nonnull align 8 dereferenceable(24) %281, ptr noundef nonnull align 8 dereferenceable(48) %9)
          to label %282 unwind label %295

282:                                              ; preds = %280
  %283 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %284 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #13
  invoke void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %283, i64 noundef %284)
          to label %285 unwind label %299

285:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 48, ptr %19) #13
  call void @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #13
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %286

286:                                              ; preds = %338, %285
  %287 = load i64, ptr %20, align 8, !tbaa !9
  %288 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #13
  %289 = icmp ult i64 %287, %288
  br i1 %289, label %303, label %290

290:                                              ; preds = %286
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %350

291:                                              ; preds = %279
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %15, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %16, align 4
  br label %2698

295:                                              ; preds = %280
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %15, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %16, align 4
  br label %2697

299:                                              ; preds = %282
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %15, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %16, align 4
  br label %2696

303:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #13
  %304 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #13
  %305 = load i64, ptr %20, align 8, !tbaa !9
  %306 = sub i64 %304, %305
  %307 = sub i64 %306, 1
  %308 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %307) #13
  %309 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEEixERSC_(ptr noundef nonnull align 8 dereferenceable(48) %9, ptr noundef nonnull align 8 dereferenceable(32) %308)
          to label %310 unwind label %341

310:                                              ; preds = %303
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(24) %309) #13
  %311 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %312 = load i64, ptr %20, align 8, !tbaa !9
  %313 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef %312) #13
  %314 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %313, i32 0, i32 1
  %315 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Halide8Internal8FunctionaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %314, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %316 unwind label %345

316:                                              ; preds = %310
  %317 = load i64, ptr %20, align 8, !tbaa !9
  %318 = trunc i64 %317 to i32
  %319 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %320 = load i64, ptr %20, align 8, !tbaa !9
  %321 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %319, i64 noundef %320) #13
  %322 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %321, i32 0, i32 10
  store i32 %318, ptr %322, align 4, !tbaa !11
  %323 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #13
  %324 = trunc i64 %323 to i32
  %325 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %326 = load i64, ptr %20, align 8, !tbaa !9
  %327 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %325, i64 noundef %326) #13
  %328 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %327, i32 0, i32 11
  store i32 %324, ptr %328, align 8, !tbaa !45
  %329 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %330 = load i64, ptr %20, align 8, !tbaa !9
  %331 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %329, i64 noundef %330) #13
  %332 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %331, i32 0, i32 0
  store ptr %257, ptr %332, align 8, !tbaa !46
  %333 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %334 = load i64, ptr %20, align 8, !tbaa !9
  %335 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %333, i64 noundef %334) #13
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48) %19, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %337 unwind label %345

337:                                              ; preds = %316
  store ptr %335, ptr %336, align 8, !tbaa !5
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #13
  br label %338

338:                                              ; preds = %337
  %339 = load i64, ptr %20, align 8, !tbaa !9
  %340 = add i64 %339, 1
  store i64 %340, ptr %20, align 8, !tbaa !9
  br label %286, !llvm.loop !47

341:                                              ; preds = %303
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %15, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %16, align 4
  br label %349

345:                                              ; preds = %316, %310
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %15, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %16, align 4
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #13
  br label %349

349:                                              ; preds = %345, %341
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #13
  br label %2695

350:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #13
  store i32 0, ptr %22, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #13
  %351 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #13
  store i64 %351, ptr %23, align 8, !tbaa !9
  br label %352

352:                                              ; preds = %2367, %350
  %353 = load i64, ptr %23, align 8, !tbaa !9
  %354 = icmp ugt i64 %353, 0
  br i1 %354, label %356, label %355

355:                                              ; preds = %352
  store i32 7, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #13
  br label %2374

356:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #13
  %357 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %358 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #13
  %359 = load i64, ptr %23, align 8, !tbaa !9
  %360 = sub i64 %358, %359
  %361 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %357, i64 noundef %360) #13
  store ptr %361, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #13
  %362 = load ptr, ptr %25, align 8, !tbaa !5
  %363 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %362, i32 0, i32 1
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %363) #13
  call void @llvm.lifetime.start.p0(i64 56, ptr %27) #13
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27)
          to label %364 unwind label %371

364:                                              ; preds = %356
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #13
  store i32 0, ptr %28, align 4, !tbaa !49
  br label %365

365:                                              ; preds = %419, %364
  %366 = load i32, ptr %28, align 4, !tbaa !49
  %367 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %368 unwind label %375

368:                                              ; preds = %365
  %369 = icmp slt i32 %366, %367
  br i1 %369, label %379, label %370

370:                                              ; preds = %368
  store i32 10, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #13
  br label %495

371:                                              ; preds = %356
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %15, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %16, align 4
  br label %2373

375:                                              ; preds = %365
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %15, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %16, align 4
  br label %494

379:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #13
  %380 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %381 unwind label %422

381:                                              ; preds = %379
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, ptr noundef nonnull align 8 dereferenceable(32) %380, ptr noundef @.str.23)
          to label %382 unwind label %422

382:                                              ; preds = %381
  %383 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %384 unwind label %426

384:                                              ; preds = %382
  %385 = load i32, ptr %28, align 4, !tbaa !49
  %386 = sext i32 %385 to i64
  %387 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %383, i64 noundef %386) #13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %387)
          to label %388 unwind label %426

388:                                              ; preds = %384
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.24)
          to label %389 unwind label %430

389:                                              ; preds = %388
  invoke void @_ZN6Halide3VarC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %390 unwind label %434

390:                                              ; preds = %389
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #13
  %391 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %392 unwind label %441

392:                                              ; preds = %390
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull align 8 dereferenceable(32) %391, ptr noundef @.str.23)
          to label %393 unwind label %441

393:                                              ; preds = %392
  %394 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %395 unwind label %445

395:                                              ; preds = %393
  %396 = load i32, ptr %28, align 4, !tbaa !49
  %397 = sext i32 %396 to i64
  %398 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef %397) #13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(32) %398)
          to label %399 unwind label %445

399:                                              ; preds = %395
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.25)
          to label %400 unwind label %449

400:                                              ; preds = %399
  invoke void @_ZN6Halide3VarC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %401 unwind label %453

401:                                              ; preds = %400
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #13
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %38, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %402 unwind label %460

402:                                              ; preds = %401
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %403 unwind label %464

403:                                              ; preds = %402
  invoke void @_ZN6Halide8Internal8IntervalC2ENS_4ExprES2_(ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef %38, ptr noundef %39)
          to label %404 unwind label %468

404:                                              ; preds = %403
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #13
  %405 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %406 unwind label %473

406:                                              ; preds = %404
  %407 = load i32, ptr %28, align 4, !tbaa !49
  %408 = sext i32 %407 to i64
  %409 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %405, i64 noundef %408) #13
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE4pushIS2_vEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef nonnull align 8 dereferenceable(32) %409, ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %410 unwind label %473

410:                                              ; preds = %406
  %411 = load ptr, ptr %25, align 8, !tbaa !5
  %412 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %411, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 64, ptr %40) #13
  %413 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval", ptr %40, i32 0, i32 0
  invoke void @_ZN6Halide3VarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %413, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %414 unwind label %477

414:                                              ; preds = %410
  %415 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval", ptr %40, i32 0, i32 1
  invoke void @_ZN6Halide3VarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %415, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %416 unwind label %481

416:                                              ; preds = %414
  %417 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12emplace_backIJS4_EEERS4_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %412, ptr noundef nonnull align 8 dereferenceable(64) %40)
          to label %418 unwind label %485

418:                                              ; preds = %416
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %40) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #13
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #13
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #13
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #13
  br label %419

419:                                              ; preds = %418
  %420 = load i32, ptr %28, align 4, !tbaa !49
  %421 = add nsw i32 %420, 1
  store i32 %421, ptr %28, align 4, !tbaa !49
  br label %365, !llvm.loop !50

422:                                              ; preds = %381, %379
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %15, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %16, align 4
  br label %440

426:                                              ; preds = %384, %382
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %15, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %16, align 4
  br label %439

430:                                              ; preds = %388
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %15, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %16, align 4
  br label %438

434:                                              ; preds = %389
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %15, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #13
  br label %438

438:                                              ; preds = %434, %430
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #13
  br label %439

439:                                              ; preds = %438, %426
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #13
  br label %440

440:                                              ; preds = %439, %422
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #13
  br label %493

441:                                              ; preds = %392, %390
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %15, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %16, align 4
  br label %459

445:                                              ; preds = %395, %393
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %15, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %16, align 4
  br label %458

449:                                              ; preds = %399
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %15, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %16, align 4
  br label %457

453:                                              ; preds = %400
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %15, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #13
  br label %457

457:                                              ; preds = %453, %449
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #13
  br label %458

458:                                              ; preds = %457, %445
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #13
  br label %459

459:                                              ; preds = %458, %441
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #13
  br label %492

460:                                              ; preds = %401
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %15, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %16, align 4
  br label %491

464:                                              ; preds = %402
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %15, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %16, align 4
  br label %472

468:                                              ; preds = %403
  %469 = landingpad { ptr, i32 }
          cleanup
  %470 = extractvalue { ptr, i32 } %469, 0
  store ptr %470, ptr %15, align 8
  %471 = extractvalue { ptr, i32 } %469, 1
  store i32 %471, ptr %16, align 4
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #13
  br label %472

472:                                              ; preds = %468, %464
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #13
  br label %491

473:                                              ; preds = %406, %404
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %15, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %16, align 4
  br label %490

477:                                              ; preds = %410
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %15, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %16, align 4
  br label %489

481:                                              ; preds = %414
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %15, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %16, align 4
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %413) #13
  br label %489

485:                                              ; preds = %416
  %486 = landingpad { ptr, i32 }
          cleanup
  %487 = extractvalue { ptr, i32 } %486, 0
  store ptr %487, ptr %15, align 8
  %488 = extractvalue { ptr, i32 } %486, 1
  store i32 %488, ptr %16, align 4
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %40) #13
  br label %489

489:                                              ; preds = %485, %481, %477
  call void @llvm.lifetime.end.p0(i64 64, ptr %40) #13
  br label %490

490:                                              ; preds = %489, %473
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #13
  br label %491

491:                                              ; preds = %490, %472, %460
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #13
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #13
  br label %492

492:                                              ; preds = %491, %459
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #13
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #13
  br label %493

493:                                              ; preds = %492, %440
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #13
  br label %494

494:                                              ; preds = %493, %375
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #13
  br label %2372

495:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #13
  %496 = load ptr, ptr %25, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %496, i32 0, i32 1
  %498 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %497)
          to label %499 unwind label %509

499:                                              ; preds = %495
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %498)
          to label %500 unwind label %509

500:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #13
  store i32 0, ptr %42, align 4, !tbaa !49
  br label %501

501:                                              ; preds = %571, %500
  %502 = load i32, ptr %42, align 4, !tbaa !49
  %503 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function7updatesEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %504 unwind label %513

504:                                              ; preds = %501
  %505 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal10DefinitionESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %503) #13
  %506 = trunc i64 %505 to i32
  %507 = icmp sle i32 %502, %506
  br i1 %507, label %517, label %508

508:                                              ; preds = %504
  store i32 13, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #13
  br label %575

509:                                              ; preds = %499, %495
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %15, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %16, align 4
  br label %2371

513:                                              ; preds = %501
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %15, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %16, align 4
  br label %574

517:                                              ; preds = %504
  %518 = load i32, ptr %22, align 4, !tbaa !49
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %22, align 4, !tbaa !49
  %520 = load i32, ptr %42, align 4, !tbaa !49
  %521 = icmp eq i32 %520, 0
  br i1 %521, label %522, label %544

522:                                              ; preds = %517
  %523 = load ptr, ptr %25, align 8, !tbaa !5
  %524 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %523, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 64, ptr %43) #13
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(24) %26) #13
  %525 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function10definitionEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %526 unwind label %530

526:                                              ; preds = %522
  call void @_ZN6Halide8Internal10DefinitionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %525) #13
  invoke void @_ZN6Halide5StageC2ENS_8Internal8FunctionENS1_10DefinitionEm(ptr noundef nonnull align 8 dereferenceable(64) %43, ptr noundef %44, ptr noundef %45, i64 noundef 0)
          to label %527 unwind label %534

527:                                              ; preds = %526
  %528 = invoke noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12emplace_backIJNS0_5StageEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %524, ptr noundef nonnull align 8 dereferenceable(64) %43)
          to label %529 unwind label %538

529:                                              ; preds = %527
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %43) #13
  call void @_ZN6Halide8Internal10DefinitionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #13
  br label %570

530:                                              ; preds = %522
  %531 = landingpad { ptr, i32 }
          cleanup
  %532 = extractvalue { ptr, i32 } %531, 0
  store ptr %532, ptr %15, align 8
  %533 = extractvalue { ptr, i32 } %531, 1
  store i32 %533, ptr %16, align 4
  br label %543

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

538:                                              ; preds = %527
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %15, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %16, align 4
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %43) #13
  br label %542

542:                                              ; preds = %538, %534
  call void @_ZN6Halide8Internal10DefinitionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #13
  br label %543

543:                                              ; preds = %542, %530
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #13
  br label %574

544:                                              ; preds = %517
  %545 = load ptr, ptr %25, align 8, !tbaa !5
  %546 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %545, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 64, ptr %46) #13
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 8 dereferenceable(24) %26) #13
  %547 = load i32, ptr %42, align 4, !tbaa !49
  %548 = sub nsw i32 %547, 1
  %549 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function6updateEi(ptr noundef nonnull align 8 dereferenceable(24) %26, i32 noundef %548)
          to label %550 unwind label %556

550:                                              ; preds = %544
  call void @_ZN6Halide8Internal10DefinitionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %549) #13
  %551 = load i32, ptr %42, align 4, !tbaa !49
  %552 = sext i32 %551 to i64
  invoke void @_ZN6Halide5StageC2ENS_8Internal8FunctionENS1_10DefinitionEm(ptr noundef nonnull align 8 dereferenceable(64) %46, ptr noundef %47, ptr noundef %48, i64 noundef %552)
          to label %553 unwind label %560

553:                                              ; preds = %550
  %554 = invoke noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12emplace_backIJNS0_5StageEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %546, ptr noundef nonnull align 8 dereferenceable(64) %46)
          to label %555 unwind label %564

555:                                              ; preds = %553
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %46) #13
  call void @_ZN6Halide8Internal10DefinitionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %46) #13
  br label %570

556:                                              ; preds = %544
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %15, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %16, align 4
  br label %569

560:                                              ; preds = %550
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %15, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %16, align 4
  br label %568

564:                                              ; preds = %553
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %15, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %16, align 4
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %46) #13
  br label %568

568:                                              ; preds = %564, %560
  call void @_ZN6Halide8Internal10DefinitionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #13
  br label %569

569:                                              ; preds = %568, %556
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %46) #13
  br label %574

570:                                              ; preds = %555, %529
  br label %571

571:                                              ; preds = %570
  %572 = load i32, ptr %42, align 4, !tbaa !49
  %573 = add nsw i32 %572, 1
  store i32 %573, ptr %42, align 4, !tbaa !49
  br label %501, !llvm.loop !51

574:                                              ; preds = %569, %543, %513
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #13
  br label %2370

575:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #13
  store i32 0, ptr %49, align 4, !tbaa !49
  br label %576

576:                                              ; preds = %2340, %575
  %577 = load i32, ptr %49, align 4, !tbaa !49
  %578 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function7updatesEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %579 unwind label %584

579:                                              ; preds = %576
  %580 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal10DefinitionESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %578) #13
  %581 = trunc i64 %580 to i32
  %582 = icmp sle i32 %577, %581
  br i1 %582, label %588, label %583

583:                                              ; preds = %579
  store i32 16, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #13
  br label %2366

584:                                              ; preds = %576
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %15, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %16, align 4
  br label %2365

588:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #13
  %589 = load ptr, ptr %25, align 8, !tbaa !5
  %590 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %589, i32 0, i32 7
  %591 = load i32, ptr %49, align 4, !tbaa !49
  %592 = sext i32 %591 to i64
  %593 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %590, i64 noundef %592) #13
  store ptr %593, ptr %50, align 8, !tbaa !5
  %594 = load ptr, ptr %25, align 8, !tbaa !5
  %595 = load ptr, ptr %50, align 8, !tbaa !5
  %596 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %595, i32 0, i32 0
  store ptr %594, ptr %596, align 8, !tbaa !52
  %597 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %598 unwind label %614

598:                                              ; preds = %588
  %599 = load ptr, ptr %50, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %599, i32 0, i32 7
  %601 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %600, ptr noundef nonnull align 8 dereferenceable(32) %597)
          to label %602 unwind label %614

602:                                              ; preds = %598
  %603 = load i32, ptr %49, align 4, !tbaa !49
  %604 = icmp sgt i32 %603, 0
  br i1 %604, label %605, label %632

605:                                              ; preds = %602
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #13
  %606 = load i32, ptr %49, align 4, !tbaa !49
  %607 = sub nsw i32 %606, 1
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %53, i32 noundef %607) #13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef @.str.33, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %608 unwind label %618

608:                                              ; preds = %605
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.34)
          to label %609 unwind label %622

609:                                              ; preds = %608
  %610 = load ptr, ptr %50, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %610, i32 0, i32 7
  %612 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %611, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %613 unwind label %626

613:                                              ; preds = %609
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #13
  br label %632

614:                                              ; preds = %598, %588
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %15, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %16, align 4
  br label %2364

618:                                              ; preds = %605
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %15, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %16, align 4
  br label %631

622:                                              ; preds = %608
  %623 = landingpad { ptr, i32 }
          cleanup
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %15, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %16, align 4
  br label %630

626:                                              ; preds = %609
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %15, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #13
  br label %630

630:                                              ; preds = %626, %622
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #13
  br label %631

631:                                              ; preds = %630, %618
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #13
  br label %2364

632:                                              ; preds = %613, %602
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #13
  %633 = load i32, ptr %49, align 4, !tbaa !49
  %634 = icmp eq i32 %633, 0
  br i1 %634, label %635, label %638

635:                                              ; preds = %632
  %636 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function10definitionEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %637 unwind label %664

637:                                              ; preds = %635
  br label %643

638:                                              ; preds = %632
  %639 = load i32, ptr %49, align 4, !tbaa !49
  %640 = sub nsw i32 %639, 1
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function6updateEi(ptr noundef nonnull align 8 dereferenceable(24) %26, i32 noundef %640)
          to label %642 unwind label %664

642:                                              ; preds = %638
  br label %643

643:                                              ; preds = %642, %637
  %644 = phi ptr [ %636, %637 ], [ %641, %642 ]
  store ptr %644, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #13
  %645 = load ptr, ptr %54, align 8, !tbaa !5
  %646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal10Definition8scheduleEv(ptr noundef nonnull align 8 dereferenceable(8) %645)
          to label %647 unwind label %668

647:                                              ; preds = %643
  store ptr %646, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr %56) #13
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %56)
          to label %648 unwind label %672

648:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 56, ptr %57) #13
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %57)
          to label %649 unwind label %676

649:                                              ; preds = %648
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE20set_containing_scopeEPKS3_(ptr noundef nonnull align 8 dereferenceable(56) %56, ptr noundef %27)
          to label %650 unwind label %680

650:                                              ; preds = %649
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE20set_containing_scopeEPKS3_(ptr noundef nonnull align 8 dereferenceable(56) %57, ptr noundef %27)
          to label %651 unwind label %680

651:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %652 = load ptr, ptr %55, align 8, !tbaa !5
  %653 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule5rvarsEv(ptr noundef nonnull align 8 dereferenceable(8) %652)
          to label %654 unwind label %684

654:                                              ; preds = %651
  store ptr %653, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #13
  %655 = load ptr, ptr %58, align 8, !tbaa !5
  %656 = call ptr @_ZNKSt6vectorIN6Halide8Internal17ReductionVariableESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %655) #13
  %657 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.136", ptr %59, i32 0, i32 0
  store ptr %656, ptr %657, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #13
  %658 = load ptr, ptr %58, align 8, !tbaa !5
  %659 = call ptr @_ZNKSt6vectorIN6Halide8Internal17ReductionVariableESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %658) #13
  %660 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.136", ptr %60, i32 0, i32 0
  store ptr %659, ptr %660, align 8
  br label %661

661:                                              ; preds = %756, %654
  %662 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal17ReductionVariableESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60) #13
  br i1 %662, label %688, label %663

663:                                              ; preds = %661
  store i32 19, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  br label %855

664:                                              ; preds = %638, %635
  %665 = landingpad { ptr, i32 }
          cleanup
  %666 = extractvalue { ptr, i32 } %665, 0
  store ptr %666, ptr %15, align 8
  %667 = extractvalue { ptr, i32 } %665, 1
  store i32 %667, ptr %16, align 4
  br label %2363

668:                                              ; preds = %643
  %669 = landingpad { ptr, i32 }
          cleanup
  %670 = extractvalue { ptr, i32 } %669, 0
  store ptr %670, ptr %15, align 8
  %671 = extractvalue { ptr, i32 } %669, 1
  store i32 %671, ptr %16, align 4
  br label %2362

672:                                              ; preds = %647
  %673 = landingpad { ptr, i32 }
          cleanup
  %674 = extractvalue { ptr, i32 } %673, 0
  store ptr %674, ptr %15, align 8
  %675 = extractvalue { ptr, i32 } %673, 1
  store i32 %675, ptr %16, align 4
  br label %2361

676:                                              ; preds = %648
  %677 = landingpad { ptr, i32 }
          cleanup
  %678 = extractvalue { ptr, i32 } %677, 0
  store ptr %678, ptr %15, align 8
  %679 = extractvalue { ptr, i32 } %677, 1
  store i32 %679, ptr %16, align 4
  br label %2360

680:                                              ; preds = %862, %858, %650, %649
  %681 = landingpad { ptr, i32 }
          cleanup
  %682 = extractvalue { ptr, i32 } %681, 0
  store ptr %682, ptr %15, align 8
  %683 = extractvalue { ptr, i32 } %681, 1
  store i32 %683, ptr %16, align 4
  br label %2359

684:                                              ; preds = %651
  %685 = landingpad { ptr, i32 }
          cleanup
  %686 = extractvalue { ptr, i32 } %685, 0
  store ptr %686, ptr %15, align 8
  %687 = extractvalue { ptr, i32 } %685, 1
  store i32 %687, ptr %16, align 4
  br label %854

688:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #13
  %689 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal17ReductionVariableESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #13
  store ptr %689, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #13
  %690 = load ptr, ptr %61, align 8, !tbaa !5
  %691 = getelementptr inbounds %"struct.Halide::Internal::ReductionVariable", ptr %690, i32 0, i32 1
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %63, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %691)
          to label %692 unwind label %758

692:                                              ; preds = %688
  %693 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %694 unwind label %762

694:                                              ; preds = %692
  %695 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %696 unwind label %762

696:                                              ; preds = %694
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %62, ptr noundef %63, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %693, ptr noundef nonnull align 8 dereferenceable(56) %695)
          to label %697 unwind label %762

697:                                              ; preds = %696
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #13
  %698 = load ptr, ptr %61, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.Halide::Internal::ReductionVariable", ptr %698, i32 0, i32 1
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %699) #13
  %700 = load ptr, ptr %61, align 8, !tbaa !5
  %701 = getelementptr inbounds %"struct.Halide::Internal::ReductionVariable", ptr %700, i32 0, i32 2
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %701) #13
  invoke void @_ZN6HalideplENS_4ExprES0_(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %67, ptr noundef %68, ptr noundef %69)
          to label %702 unwind label %766

702:                                              ; preds = %697
  invoke void @_ZN6HalidemiENS_4ExprEi(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %66, ptr noundef %67, i32 noundef 1)
          to label %703 unwind label %770

703:                                              ; preds = %702
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %65, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %704 unwind label %774

704:                                              ; preds = %703
  %705 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %706 unwind label %778

706:                                              ; preds = %704
  %707 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %708 unwind label %778

708:                                              ; preds = %706
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %64, ptr noundef %65, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %705, ptr noundef nonnull align 8 dereferenceable(56) %707)
          to label %709 unwind label %778

709:                                              ; preds = %708
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #13
  %710 = load ptr, ptr %61, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.Halide::Internal::ReductionVariable", ptr %710, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %62) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %64) #13
  invoke void @_ZN6Halide8Internal8IntervalC2ENS_4ExprES2_(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef %71, ptr noundef %72)
          to label %712 unwind label %785

712:                                              ; preds = %709
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE4pushIS2_vEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr noundef nonnull align 8 dereferenceable(56) %56, ptr noundef nonnull align 8 dereferenceable(32) %711, ptr noundef nonnull align 8 dereferenceable(16) %70)
          to label %713 unwind label %789

713:                                              ; preds = %712
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #13
  %714 = invoke { i64, ptr } @_ZN6Halide3IntEii(i32 noundef 32, i32 noundef 1)
          to label %715 unwind label %794

715:                                              ; preds = %713
  %716 = getelementptr inbounds { i64, ptr }, ptr %74, i32 0, i32 0
  %717 = extractvalue { i64, ptr } %714, 0
  store i64 %717, ptr %716, align 8
  %718 = getelementptr inbounds { i64, ptr }, ptr %74, i32 0, i32 1
  %719 = extractvalue { i64, ptr } %714, 1
  store ptr %719, ptr %718, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #13
  %720 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %721 unwind label %798

721:                                              ; preds = %715
  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) %720, ptr noundef @.str.23)
          to label %722 unwind label %798

722:                                              ; preds = %721
  %723 = load ptr, ptr %61, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.Halide::Internal::ReductionVariable", ptr %723, i32 0, i32 0
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 8 dereferenceable(32) %724)
          to label %725 unwind label %802

725:                                              ; preds = %722
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %75, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef @.str.24)
          to label %726 unwind label %806

726:                                              ; preds = %725
  %727 = getelementptr inbounds { i64, ptr }, ptr %74, i32 0, i32 0
  %728 = load i64, ptr %727, align 8
  %729 = getelementptr inbounds { i64, ptr }, ptr %74, i32 0, i32 1
  %730 = load ptr, ptr %729, align 8
  invoke void @_ZN6Halide8Internal8Variable4makeENS_4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %73, i64 %728, ptr %730, ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %731 unwind label %810

731:                                              ; preds = %726
  %732 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %73) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #13
  %733 = invoke { i64, ptr } @_ZN6Halide3IntEii(i32 noundef 32, i32 noundef 1)
          to label %734 unwind label %818

734:                                              ; preds = %731
  %735 = getelementptr inbounds { i64, ptr }, ptr %79, i32 0, i32 0
  %736 = extractvalue { i64, ptr } %733, 0
  store i64 %736, ptr %735, align 8
  %737 = getelementptr inbounds { i64, ptr }, ptr %79, i32 0, i32 1
  %738 = extractvalue { i64, ptr } %733, 1
  store ptr %738, ptr %737, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %80) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %81) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %82) #13
  %739 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %740 unwind label %822

740:                                              ; preds = %734
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %82, ptr noundef nonnull align 8 dereferenceable(32) %739, ptr noundef @.str.23)
          to label %741 unwind label %822

741:                                              ; preds = %740
  %742 = load ptr, ptr %61, align 8, !tbaa !5
  %743 = getelementptr inbounds %"struct.Halide::Internal::ReductionVariable", ptr %742, i32 0, i32 0
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %81, ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 8 dereferenceable(32) %743)
          to label %744 unwind label %826

744:                                              ; preds = %741
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %80, ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef @.str.25)
          to label %745 unwind label %830

745:                                              ; preds = %744
  %746 = getelementptr inbounds { i64, ptr }, ptr %79, i32 0, i32 0
  %747 = load i64, ptr %746, align 8
  %748 = getelementptr inbounds { i64, ptr }, ptr %79, i32 0, i32 1
  %749 = load ptr, ptr %748, align 8
  invoke void @_ZN6Halide8Internal8Variable4makeENS_4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %78, i64 %747, ptr %749, ptr noundef nonnull align 8 dereferenceable(32) %80)
          to label %750 unwind label %834

750:                                              ; preds = %745
  %751 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %78) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #13
  %752 = load ptr, ptr %61, align 8, !tbaa !5
  %753 = getelementptr inbounds %"struct.Halide::Internal::ReductionVariable", ptr %752, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %62) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %64) #13
  invoke void @_ZN6Halide8Internal8IntervalC2ENS_4ExprES2_(ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef %84, ptr noundef %85)
          to label %754 unwind label %842

754:                                              ; preds = %750
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE4pushIS2_vEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr noundef nonnull align 8 dereferenceable(56) %57, ptr noundef nonnull align 8 dereferenceable(32) %753, ptr noundef nonnull align 8 dereferenceable(16) %83)
          to label %755 unwind label %846

755:                                              ; preds = %754
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #13
  br label %756

756:                                              ; preds = %755
  %757 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal17ReductionVariableESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #13
  br label %661

758:                                              ; preds = %688
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %15, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %16, align 4
  br label %853

762:                                              ; preds = %696, %694, %692
  %763 = landingpad { ptr, i32 }
          cleanup
  %764 = extractvalue { ptr, i32 } %763, 0
  store ptr %764, ptr %15, align 8
  %765 = extractvalue { ptr, i32 } %763, 1
  store i32 %765, ptr %16, align 4
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #13
  br label %853

766:                                              ; preds = %697
  %767 = landingpad { ptr, i32 }
          cleanup
  %768 = extractvalue { ptr, i32 } %767, 0
  store ptr %768, ptr %15, align 8
  %769 = extractvalue { ptr, i32 } %767, 1
  store i32 %769, ptr %16, align 4
  br label %784

770:                                              ; preds = %702
  %771 = landingpad { ptr, i32 }
          cleanup
  %772 = extractvalue { ptr, i32 } %771, 0
  store ptr %772, ptr %15, align 8
  %773 = extractvalue { ptr, i32 } %771, 1
  store i32 %773, ptr %16, align 4
  br label %783

774:                                              ; preds = %703
  %775 = landingpad { ptr, i32 }
          cleanup
  %776 = extractvalue { ptr, i32 } %775, 0
  store ptr %776, ptr %15, align 8
  %777 = extractvalue { ptr, i32 } %775, 1
  store i32 %777, ptr %16, align 4
  br label %782

778:                                              ; preds = %708, %706, %704
  %779 = landingpad { ptr, i32 }
          cleanup
  %780 = extractvalue { ptr, i32 } %779, 0
  store ptr %780, ptr %15, align 8
  %781 = extractvalue { ptr, i32 } %779, 1
  store i32 %781, ptr %16, align 4
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #13
  br label %782

782:                                              ; preds = %778, %774
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #13
  br label %783

783:                                              ; preds = %782, %770
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #13
  br label %784

784:                                              ; preds = %783, %766
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #13
  br label %852

785:                                              ; preds = %709
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %15, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %16, align 4
  br label %793

789:                                              ; preds = %712
  %790 = landingpad { ptr, i32 }
          cleanup
  %791 = extractvalue { ptr, i32 } %790, 0
  store ptr %791, ptr %15, align 8
  %792 = extractvalue { ptr, i32 } %790, 1
  store i32 %792, ptr %16, align 4
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #13
  br label %793

793:                                              ; preds = %789, %785
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #13
  br label %851

794:                                              ; preds = %713
  %795 = landingpad { ptr, i32 }
          cleanup
  %796 = extractvalue { ptr, i32 } %795, 0
  store ptr %796, ptr %15, align 8
  %797 = extractvalue { ptr, i32 } %795, 1
  store i32 %797, ptr %16, align 4
  br label %817

798:                                              ; preds = %721, %715
  %799 = landingpad { ptr, i32 }
          cleanup
  %800 = extractvalue { ptr, i32 } %799, 0
  store ptr %800, ptr %15, align 8
  %801 = extractvalue { ptr, i32 } %799, 1
  store i32 %801, ptr %16, align 4
  br label %816

802:                                              ; preds = %722
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %15, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %16, align 4
  br label %815

806:                                              ; preds = %725
  %807 = landingpad { ptr, i32 }
          cleanup
  %808 = extractvalue { ptr, i32 } %807, 0
  store ptr %808, ptr %15, align 8
  %809 = extractvalue { ptr, i32 } %807, 1
  store i32 %809, ptr %16, align 4
  br label %814

810:                                              ; preds = %726
  %811 = landingpad { ptr, i32 }
          cleanup
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %15, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #13
  br label %814

814:                                              ; preds = %810, %806
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #13
  br label %815

815:                                              ; preds = %814, %802
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #13
  br label %816

816:                                              ; preds = %815, %798
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #13
  br label %817

817:                                              ; preds = %816, %794
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #13
  br label %851

818:                                              ; preds = %731
  %819 = landingpad { ptr, i32 }
          cleanup
  %820 = extractvalue { ptr, i32 } %819, 0
  store ptr %820, ptr %15, align 8
  %821 = extractvalue { ptr, i32 } %819, 1
  store i32 %821, ptr %16, align 4
  br label %841

822:                                              ; preds = %740, %734
  %823 = landingpad { ptr, i32 }
          cleanup
  %824 = extractvalue { ptr, i32 } %823, 0
  store ptr %824, ptr %15, align 8
  %825 = extractvalue { ptr, i32 } %823, 1
  store i32 %825, ptr %16, align 4
  br label %840

826:                                              ; preds = %741
  %827 = landingpad { ptr, i32 }
          cleanup
  %828 = extractvalue { ptr, i32 } %827, 0
  store ptr %828, ptr %15, align 8
  %829 = extractvalue { ptr, i32 } %827, 1
  store i32 %829, ptr %16, align 4
  br label %839

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

834:                                              ; preds = %745
  %835 = landingpad { ptr, i32 }
          cleanup
  %836 = extractvalue { ptr, i32 } %835, 0
  store ptr %836, ptr %15, align 8
  %837 = extractvalue { ptr, i32 } %835, 1
  store i32 %837, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #13
  br label %838

838:                                              ; preds = %834, %830
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #13
  br label %839

839:                                              ; preds = %838, %826
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #13
  br label %840

840:                                              ; preds = %839, %822
  call void @llvm.lifetime.end.p0(i64 32, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %81) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %80) #13
  br label %841

841:                                              ; preds = %840, %818
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #13
  br label %851

842:                                              ; preds = %750
  %843 = landingpad { ptr, i32 }
          cleanup
  %844 = extractvalue { ptr, i32 } %843, 0
  store ptr %844, ptr %15, align 8
  %845 = extractvalue { ptr, i32 } %843, 1
  store i32 %845, ptr %16, align 4
  br label %850

846:                                              ; preds = %754
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %15, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %16, align 4
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %83) #13
  br label %850

850:                                              ; preds = %846, %842
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #13
  br label %851

851:                                              ; preds = %850, %841, %817, %793
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #13
  br label %852

852:                                              ; preds = %851, %784
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #13
  br label %853

853:                                              ; preds = %852, %762, %758
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #13
  br label %854

854:                                              ; preds = %853, %684
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  br label %2359

855:                                              ; preds = %663
  %856 = load i32, ptr %49, align 4, !tbaa !49
  %857 = icmp eq i32 %856, 0
  br i1 %857, label %858, label %865

858:                                              ; preds = %855
  %859 = load ptr, ptr %25, align 8, !tbaa !5
  %860 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %859, i32 0, i32 5
  %861 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %862 unwind label %680

862:                                              ; preds = %858
  %863 = sext i32 %861 to i64
  invoke void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %860, i64 noundef %863)
          to label %864 unwind label %680

864:                                              ; preds = %862
  br label %865

865:                                              ; preds = %864, %855
  call void @llvm.lifetime.start.p0(i64 48, ptr %86) #13
  invoke void @_ZN6Halide8Internal29compute_function_value_boundsERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKSt3mapIS7_NS0_8FunctionESt4lessIS7_ESaISt4pairIKS7_SD_EEE(ptr dead_on_unwind writable sret(%"class.std::map.137") align 8 %86, ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(48) %9)
          to label %866 unwind label %873

866:                                              ; preds = %865
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #13
  store i32 0, ptr %87, align 4, !tbaa !49
  br label %867

867:                                              ; preds = %971, %866
  %868 = load i32, ptr %87, align 4, !tbaa !49
  %869 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %870 unwind label %877

870:                                              ; preds = %867
  %871 = icmp slt i32 %868, %869
  br i1 %871, label %881, label %872

872:                                              ; preds = %870
  store i32 21, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #13
  br label %977

873:                                              ; preds = %865
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %15, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %16, align 4
  br label %2358

877:                                              ; preds = %867
  %878 = landingpad { ptr, i32 }
          cleanup
  %879 = extractvalue { ptr, i32 } %878, 0
  store ptr %879, ptr %15, align 8
  %880 = extractvalue { ptr, i32 } %878, 1
  store i32 %880, ptr %16, align 4
  br label %976

881:                                              ; preds = %870
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #13
  %882 = load ptr, ptr %54, align 8, !tbaa !5
  %883 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition4argsEv(ptr noundef nonnull align 8 dereferenceable(8) %882)
          to label %884 unwind label %934

884:                                              ; preds = %881
  %885 = load i32, ptr %87, align 4, !tbaa !49
  %886 = sext i32 %885 to i64
  %887 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %883, i64 noundef %886) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %887) #13
  invoke void @_ZN6Halide8Internal23bounds_of_expr_in_scopeENS_4ExprERKNS0_5ScopeINS0_8IntervalEEERKSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiES3_St4lessISF_ESaIS8_IKSF_S3_EEEb(ptr dead_on_unwind writable sret(%"struct.Halide::Internal::Interval") align 8 %88, ptr noundef %89, ptr noundef nonnull align 8 dereferenceable(56) %56, ptr noundef nonnull align 8 dereferenceable(48) %86, i1 noundef zeroext false)
          to label %888 unwind label %938

888:                                              ; preds = %884
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr %90) #13
  store i1 false, ptr %92, align 1
  store i1 false, ptr %93, align 1
  %889 = invoke noundef zeroext i1 @_ZNK6Halide8Internal8Interval10is_boundedEv(ptr noundef nonnull align 8 dereferenceable(16) %88)
          to label %890 unwind label %942

890:                                              ; preds = %888
  br i1 %889, label %891, label %892

891:                                              ; preds = %890
  br label %915

892:                                              ; preds = %890
  call void @llvm.lifetime.start.p0(i64 384, ptr %91) #13
  store i1 true, ptr %92, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %91, ptr noundef @.str.14, i32 noundef 657, ptr noundef @.str.35, i32 noundef 0)
          to label %893 unwind label %946

893:                                              ; preds = %892
  store i1 true, ptr %93, align 1
  %894 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %91)
          to label %895 unwind label %950

895:                                              ; preds = %893
  %896 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA20_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %894, ptr noundef nonnull align 1 dereferenceable(20) @.str.36)
          to label %897 unwind label %950

897:                                              ; preds = %895
  %898 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %899 unwind label %950

899:                                              ; preds = %897
  %900 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %896, ptr noundef nonnull align 8 dereferenceable(32) %898)
          to label %901 unwind label %950

901:                                              ; preds = %899
  %902 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA17_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %900, ptr noundef nonnull align 1 dereferenceable(17) @.str.37)
          to label %903 unwind label %950

903:                                              ; preds = %901
  %904 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %88, i32 0, i32 0
  %905 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINS_4ExprEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %902, ptr noundef nonnull align 8 dereferenceable(8) %904)
          to label %906 unwind label %950

906:                                              ; preds = %903
  %907 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %905, ptr noundef nonnull align 1 dereferenceable(2) @.str.4)
          to label %908 unwind label %950

908:                                              ; preds = %906
  %909 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %88, i32 0, i32 1
  %910 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINS_4ExprEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %907, ptr noundef nonnull align 8 dereferenceable(8) %909)
          to label %911 unwind label %950

911:                                              ; preds = %908
  %912 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA3_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %910, ptr noundef nonnull align 1 dereferenceable(3) @.str.7)
          to label %913 unwind label %950

913:                                              ; preds = %911
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %90, ptr noundef nonnull align 8 dereferenceable(380) %912)
          to label %914 unwind label %950

914:                                              ; preds = %913
  br label %915

915:                                              ; preds = %914, %891
  %916 = load i1, ptr %93, align 1
  br i1 %916, label %917, label %919

917:                                              ; preds = %915
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %91)
          to label %918 unwind label %946

918:                                              ; preds = %917
  br label %919

919:                                              ; preds = %918, %915
  %920 = load i1, ptr %92, align 1
  br i1 %920, label %921, label %922

921:                                              ; preds = %919
  call void @llvm.lifetime.end.p0(i64 384, ptr %91) #13
  br label %922

922:                                              ; preds = %921, %919
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #13
  %923 = load i32, ptr %49, align 4, !tbaa !49
  %924 = icmp eq i32 %923, 0
  br i1 %924, label %925, label %962

925:                                              ; preds = %922
  %926 = load ptr, ptr %25, align 8, !tbaa !5
  %927 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %926, i32 0, i32 5
  %928 = load i32, ptr %87, align 4, !tbaa !49
  %929 = sext i32 %928 to i64
  %930 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %927, i64 noundef %929) #13
  %931 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %930, i32 0, i32 0
  %932 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6Halide8Internal8IntervalaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %931, ptr noundef nonnull align 8 dereferenceable(16) %88)
          to label %933 unwind label %942

933:                                              ; preds = %925
  br label %970

934:                                              ; preds = %881
  %935 = landingpad { ptr, i32 }
          cleanup
  %936 = extractvalue { ptr, i32 } %935, 0
  store ptr %936, ptr %15, align 8
  %937 = extractvalue { ptr, i32 } %935, 1
  store i32 %937, ptr %16, align 4
  br label %975

938:                                              ; preds = %884
  %939 = landingpad { ptr, i32 }
          cleanup
  %940 = extractvalue { ptr, i32 } %939, 0
  store ptr %940, ptr %15, align 8
  %941 = extractvalue { ptr, i32 } %939, 1
  store i32 %941, ptr %16, align 4
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #13
  br label %975

942:                                              ; preds = %962, %925, %888
  %943 = landingpad { ptr, i32 }
          cleanup
  %944 = extractvalue { ptr, i32 } %943, 0
  store ptr %944, ptr %15, align 8
  %945 = extractvalue { ptr, i32 } %943, 1
  store i32 %945, ptr %16, align 4
  br label %974

946:                                              ; preds = %917, %892
  %947 = landingpad { ptr, i32 }
          cleanup
  %948 = extractvalue { ptr, i32 } %947, 0
  store ptr %948, ptr %15, align 8
  %949 = extractvalue { ptr, i32 } %947, 1
  store i32 %949, ptr %16, align 4
  br label %958

950:                                              ; preds = %913, %911, %908, %906, %903, %901, %899, %897, %895, %893
  %951 = landingpad { ptr, i32 }
          cleanup
  %952 = extractvalue { ptr, i32 } %951, 0
  store ptr %952, ptr %15, align 8
  %953 = extractvalue { ptr, i32 } %951, 1
  store i32 %953, ptr %16, align 4
  %954 = load i1, ptr %93, align 1
  br i1 %954, label %955, label %957

955:                                              ; preds = %950
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %91)
          to label %956 unwind label %2705

956:                                              ; preds = %955
  br label %957

957:                                              ; preds = %956, %950
  br label %958

958:                                              ; preds = %957, %946
  %959 = load i1, ptr %92, align 1
  br i1 %959, label %960, label %961

960:                                              ; preds = %958
  call void @llvm.lifetime.end.p0(i64 384, ptr %91) #13
  br label %961

961:                                              ; preds = %960, %958
  call void @llvm.lifetime.end.p0(i64 1, ptr %90) #13
  br label %974

962:                                              ; preds = %922
  %963 = load ptr, ptr %25, align 8, !tbaa !5
  %964 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %963, i32 0, i32 5
  %965 = load i32, ptr %87, align 4, !tbaa !49
  %966 = sext i32 %965 to i64
  %967 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %964, i64 noundef %966) #13
  %968 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %967, i32 0, i32 0
  invoke void @_ZN6Halide8Internal8Interval7includeERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %968, ptr noundef nonnull align 8 dereferenceable(16) %88)
          to label %969 unwind label %942

969:                                              ; preds = %962
  br label %970

970:                                              ; preds = %969, %933
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #13
  br label %971

971:                                              ; preds = %970
  %972 = load i32, ptr %87, align 4, !tbaa !49
  %973 = add nsw i32 %972, 1
  store i32 %973, ptr %87, align 4, !tbaa !49
  br label %867, !llvm.loop !74

974:                                              ; preds = %961, %942
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %88) #13
  br label %975

975:                                              ; preds = %974, %938, %934
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #13
  br label %976

976:                                              ; preds = %975, %877
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #13
  br label %2357

977:                                              ; preds = %872
  %978 = load i32, ptr %49, align 4, !tbaa !49
  %979 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function7updatesEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %980 unwind label %993

980:                                              ; preds = %977
  %981 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal10DefinitionESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %979) #13
  %982 = trunc i64 %981 to i32
  %983 = icmp eq i32 %978, %982
  br i1 %983, label %984, label %1248

984:                                              ; preds = %980
  %985 = load ptr, ptr %25, align 8, !tbaa !5
  %986 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %985, i32 0, i32 6
  store i8 1, ptr %986, align 8, !tbaa !75
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #13
  store i32 0, ptr %94, align 4, !tbaa !49
  br label %987

987:                                              ; preds = %1242, %984
  %988 = load i32, ptr %94, align 4, !tbaa !49
  %989 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %990 unwind label %997

990:                                              ; preds = %987
  %991 = icmp slt i32 %988, %989
  br i1 %991, label %1001, label %992

992:                                              ; preds = %990
  store i32 24, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #13
  br label %1247

993:                                              ; preds = %1248, %977
  %994 = landingpad { ptr, i32 }
          cleanup
  %995 = extractvalue { ptr, i32 } %994, 0
  store ptr %995, ptr %15, align 8
  %996 = extractvalue { ptr, i32 } %994, 1
  store i32 %996, ptr %16, align 4
  br label %2357

997:                                              ; preds = %987
  %998 = landingpad { ptr, i32 }
          cleanup
  %999 = extractvalue { ptr, i32 } %998, 0
  store ptr %999, ptr %15, align 8
  %1000 = extractvalue { ptr, i32 } %998, 1
  store i32 %1000, ptr %16, align 4
  br label %1246

1001:                                             ; preds = %990
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #13
  %1002 = load ptr, ptr %25, align 8, !tbaa !5
  %1003 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1002, i32 0, i32 3
  %1004 = load i32, ptr %94, align 4, !tbaa !49
  %1005 = sext i32 %1004 to i64
  %1006 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1003, i64 noundef %1005) #13
  store ptr %1006, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #13
  %1007 = load ptr, ptr %25, align 8, !tbaa !5
  %1008 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1007, i32 0, i32 5
  %1009 = load i32, ptr %94, align 4, !tbaa !49
  %1010 = sext i32 %1009 to i64
  %1011 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1008, i64 noundef %1010) #13
  store ptr %1011, ptr %96, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #13
  %1012 = load ptr, ptr %96, align 8, !tbaa !5
  %1013 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1012, i32 0, i32 0
  %1014 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1013, i32 0, i32 0
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %98, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %1014)
          to label %1015 unwind label %1066

1015:                                             ; preds = %1001
  %1016 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %1017 unwind label %1070

1017:                                             ; preds = %1015
  %1018 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %1019 unwind label %1070

1019:                                             ; preds = %1017
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %97, ptr noundef %98, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %1016, ptr noundef nonnull align 8 dereferenceable(56) %1018)
          to label %1020 unwind label %1070

1020:                                             ; preds = %1019
  %1021 = load ptr, ptr %96, align 8, !tbaa !5
  %1022 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1021, i32 0, i32 0
  %1023 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1022, i32 0, i32 0
  %1024 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1023, ptr noundef nonnull align 8 dereferenceable(8) %97) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #13
  %1025 = load ptr, ptr %96, align 8, !tbaa !5
  %1026 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1025, i32 0, i32 0
  %1027 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1026, i32 0, i32 1
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %100, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %1027)
          to label %1028 unwind label %1075

1028:                                             ; preds = %1020
  %1029 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %1030 unwind label %1079

1030:                                             ; preds = %1028
  %1031 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %1032 unwind label %1079

1032:                                             ; preds = %1030
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %99, ptr noundef %100, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %1029, ptr noundef nonnull align 8 dereferenceable(56) %1031)
          to label %1033 unwind label %1079

1033:                                             ; preds = %1032
  %1034 = load ptr, ptr %96, align 8, !tbaa !5
  %1035 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1034, i32 0, i32 0
  %1036 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1035, i32 0, i32 1
  %1037 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1036, ptr noundef nonnull align 8 dereferenceable(8) %99) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #13
  %1038 = load ptr, ptr %96, align 8, !tbaa !5
  %1039 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1038, i32 0, i32 0
  %1040 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1039, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #13
  %1041 = load ptr, ptr %95, align 8, !tbaa !5
  %1042 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval", ptr %1041, i32 0, i32 0
  store i1 false, ptr %103, align 1
  store i1 false, ptr %104, align 1
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %101, ptr noundef nonnull align 8 dereferenceable(32) %1042)
          to label %1043 unwind label %1084

1043:                                             ; preds = %1033
  %1044 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %1040, ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %1045 unwind label %1088

1045:                                             ; preds = %1043
  br i1 %1044, label %1046, label %1055

1046:                                             ; preds = %1045
  %1047 = load ptr, ptr %96, align 8, !tbaa !5
  %1048 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1047, i32 0, i32 0
  %1049 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1048, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #13
  store i1 true, ptr %103, align 1
  %1050 = load ptr, ptr %95, align 8, !tbaa !5
  %1051 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval", ptr %1050, i32 0, i32 1
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %102, ptr noundef nonnull align 8 dereferenceable(32) %1051)
          to label %1052 unwind label %1092

1052:                                             ; preds = %1046
  store i1 true, ptr %104, align 1
  %1053 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %1049, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1054 unwind label %1096

1054:                                             ; preds = %1052
  br label %1055

1055:                                             ; preds = %1054, %1045
  %1056 = phi i1 [ false, %1045 ], [ %1053, %1054 ]
  %1057 = load i1, ptr %104, align 1
  br i1 %1057, label %1058, label %1059

1058:                                             ; preds = %1055
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #13
  br label %1059

1059:                                             ; preds = %1058, %1055
  %1060 = load i1, ptr %103, align 1
  br i1 %1060, label %1061, label %1062

1061:                                             ; preds = %1059
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #13
  br label %1062

1062:                                             ; preds = %1061, %1059
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #13
  br i1 %1056, label %1063, label %1109

1063:                                             ; preds = %1062
  %1064 = load ptr, ptr %96, align 8, !tbaa !5
  %1065 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1064, i32 0, i32 1
  store i8 1, ptr %1065, align 8, !tbaa !76
  br label %1241

1066:                                             ; preds = %1001
  %1067 = landingpad { ptr, i32 }
          cleanup
  %1068 = extractvalue { ptr, i32 } %1067, 0
  store ptr %1068, ptr %15, align 8
  %1069 = extractvalue { ptr, i32 } %1067, 1
  store i32 %1069, ptr %16, align 4
  br label %1074

1070:                                             ; preds = %1019, %1017, %1015
  %1071 = landingpad { ptr, i32 }
          cleanup
  %1072 = extractvalue { ptr, i32 } %1071, 0
  store ptr %1072, ptr %15, align 8
  %1073 = extractvalue { ptr, i32 } %1071, 1
  store i32 %1073, ptr %16, align 4
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #13
  br label %1074

1074:                                             ; preds = %1070, %1066
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #13
  br label %1245

1075:                                             ; preds = %1020
  %1076 = landingpad { ptr, i32 }
          cleanup
  %1077 = extractvalue { ptr, i32 } %1076, 0
  store ptr %1077, ptr %15, align 8
  %1078 = extractvalue { ptr, i32 } %1076, 1
  store i32 %1078, ptr %16, align 4
  br label %1083

1079:                                             ; preds = %1032, %1030, %1028
  %1080 = landingpad { ptr, i32 }
          cleanup
  %1081 = extractvalue { ptr, i32 } %1080, 0
  store ptr %1081, ptr %15, align 8
  %1082 = extractvalue { ptr, i32 } %1080, 1
  store i32 %1082, ptr %16, align 4
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #13
  br label %1083

1083:                                             ; preds = %1079, %1075
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #13
  br label %1245

1084:                                             ; preds = %1033
  %1085 = landingpad { ptr, i32 }
          cleanup
  %1086 = extractvalue { ptr, i32 } %1085, 0
  store ptr %1086, ptr %15, align 8
  %1087 = extractvalue { ptr, i32 } %1085, 1
  store i32 %1087, ptr %16, align 4
  br label %1108

1088:                                             ; preds = %1043
  %1089 = landingpad { ptr, i32 }
          cleanup
  %1090 = extractvalue { ptr, i32 } %1089, 0
  store ptr %1090, ptr %15, align 8
  %1091 = extractvalue { ptr, i32 } %1089, 1
  store i32 %1091, ptr %16, align 4
  br label %1107

1092:                                             ; preds = %1046
  %1093 = landingpad { ptr, i32 }
          cleanup
  %1094 = extractvalue { ptr, i32 } %1093, 0
  store ptr %1094, ptr %15, align 8
  %1095 = extractvalue { ptr, i32 } %1093, 1
  store i32 %1095, ptr %16, align 4
  br label %1103

1096:                                             ; preds = %1052
  %1097 = landingpad { ptr, i32 }
          cleanup
  %1098 = extractvalue { ptr, i32 } %1097, 0
  store ptr %1098, ptr %15, align 8
  %1099 = extractvalue { ptr, i32 } %1097, 1
  store i32 %1099, ptr %16, align 4
  %1100 = load i1, ptr %104, align 1
  br i1 %1100, label %1101, label %1102

1101:                                             ; preds = %1096
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #13
  br label %1102

1102:                                             ; preds = %1101, %1096
  br label %1103

1103:                                             ; preds = %1102, %1092
  %1104 = load i1, ptr %103, align 1
  br i1 %1104, label %1105, label %1106

1105:                                             ; preds = %1103
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #13
  br label %1106

1106:                                             ; preds = %1105, %1103
  br label %1107

1107:                                             ; preds = %1106, %1088
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #13
  br label %1108

1108:                                             ; preds = %1107, %1084
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #13
  br label %1245

1109:                                             ; preds = %1062
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #13
  %1110 = load ptr, ptr %96, align 8, !tbaa !5
  %1111 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1110, i32 0, i32 0
  %1112 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1111, i32 0, i32 0
  %1113 = invoke noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3MinEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %1112)
          to label %1114 unwind label %1186

1114:                                             ; preds = %1109
  store ptr %1113, ptr %105, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #13
  %1115 = load ptr, ptr %96, align 8, !tbaa !5
  %1116 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1115, i32 0, i32 0
  %1117 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1116, i32 0, i32 1
  %1118 = invoke noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3MaxEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %1117)
          to label %1119 unwind label %1190

1119:                                             ; preds = %1114
  store ptr %1118, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #13
  %1120 = load ptr, ptr %105, align 8, !tbaa !5
  %1121 = icmp ne ptr %1120, null
  br i1 %1121, label %1122, label %1127

1122:                                             ; preds = %1119
  %1123 = load ptr, ptr %105, align 8, !tbaa !5
  %1124 = getelementptr inbounds %"struct.Halide::Internal::Min", ptr %1123, i32 0, i32 2
  %1125 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %1124)
          to label %1126 unwind label %1194

1126:                                             ; preds = %1122
  br label %1128

1127:                                             ; preds = %1119
  br label %1128

1128:                                             ; preds = %1127, %1126
  %1129 = phi ptr [ %1125, %1126 ], [ null, %1127 ]
  store ptr %1129, ptr %107, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #13
  %1130 = load ptr, ptr %106, align 8, !tbaa !5
  %1131 = icmp ne ptr %1130, null
  br i1 %1131, label %1132, label %1137

1132:                                             ; preds = %1128
  %1133 = load ptr, ptr %106, align 8, !tbaa !5
  %1134 = getelementptr inbounds %"struct.Halide::Internal::Max", ptr %1133, i32 0, i32 2
  %1135 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %1134)
          to label %1136 unwind label %1198

1136:                                             ; preds = %1132
  br label %1138

1137:                                             ; preds = %1128
  br label %1138

1138:                                             ; preds = %1137, %1136
  %1139 = phi ptr [ %1135, %1136 ], [ null, %1137 ]
  store ptr %1139, ptr %108, align 8, !tbaa !5
  %1140 = load ptr, ptr %107, align 8, !tbaa !5
  %1141 = icmp ne ptr %1140, null
  store i1 false, ptr %110, align 1
  store i1 false, ptr %111, align 1
  store i1 false, ptr %113, align 1
  store i1 false, ptr %114, align 1
  br i1 %1141, label %1142, label %1161

1142:                                             ; preds = %1138
  %1143 = load ptr, ptr %108, align 8, !tbaa !5
  %1144 = icmp ne ptr %1143, null
  br i1 %1144, label %1145, label %1161

1145:                                             ; preds = %1142
  %1146 = load ptr, ptr %105, align 8, !tbaa !5
  %1147 = getelementptr inbounds %"struct.Halide::Internal::Min", ptr %1146, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #13
  store i1 true, ptr %110, align 1
  %1148 = load ptr, ptr %95, align 8, !tbaa !5
  %1149 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval", ptr %1148, i32 0, i32 0
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %109, ptr noundef nonnull align 8 dereferenceable(32) %1149)
          to label %1150 unwind label %1202

1150:                                             ; preds = %1145
  store i1 true, ptr %111, align 1
  %1151 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %1147, ptr noundef nonnull align 8 dereferenceable(8) %109)
          to label %1152 unwind label %1206

1152:                                             ; preds = %1150
  br i1 %1151, label %1153, label %1161

1153:                                             ; preds = %1152
  %1154 = load ptr, ptr %106, align 8, !tbaa !5
  %1155 = getelementptr inbounds %"struct.Halide::Internal::Max", ptr %1154, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #13
  store i1 true, ptr %113, align 1
  %1156 = load ptr, ptr %95, align 8, !tbaa !5
  %1157 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval", ptr %1156, i32 0, i32 1
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %112, ptr noundef nonnull align 8 dereferenceable(32) %1157)
          to label %1158 unwind label %1210

1158:                                             ; preds = %1153
  store i1 true, ptr %114, align 1
  %1159 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %1155, ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %1160 unwind label %1214

1160:                                             ; preds = %1158
  br label %1161

1161:                                             ; preds = %1160, %1152, %1142, %1138
  %1162 = phi i1 [ false, %1152 ], [ false, %1142 ], [ false, %1138 ], [ %1159, %1160 ]
  %1163 = load i1, ptr %114, align 1
  br i1 %1163, label %1164, label %1165

1164:                                             ; preds = %1161
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #13
  br label %1165

1165:                                             ; preds = %1164, %1161
  %1166 = load i1, ptr %113, align 1
  br i1 %1166, label %1167, label %1168

1167:                                             ; preds = %1165
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #13
  br label %1168

1168:                                             ; preds = %1167, %1165
  %1169 = load i1, ptr %111, align 1
  br i1 %1169, label %1170, label %1171

1170:                                             ; preds = %1168
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #13
  br label %1171

1171:                                             ; preds = %1170, %1168
  %1172 = load i1, ptr %110, align 1
  br i1 %1172, label %1173, label %1174

1173:                                             ; preds = %1171
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #13
  br label %1174

1174:                                             ; preds = %1173, %1171
  br i1 %1162, label %1175, label %1233

1175:                                             ; preds = %1174
  %1176 = load ptr, ptr %96, align 8, !tbaa !5
  %1177 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1176, i32 0, i32 2
  store i8 1, ptr %1177, align 1, !tbaa !82
  %1178 = load ptr, ptr %107, align 8, !tbaa !5
  %1179 = load i64, ptr %1178, align 8, !tbaa !9
  %1180 = load ptr, ptr %96, align 8, !tbaa !5
  %1181 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1180, i32 0, i32 3
  store i64 %1179, ptr %1181, align 8, !tbaa !83
  %1182 = load ptr, ptr %108, align 8, !tbaa !5
  %1183 = load i64, ptr %1182, align 8, !tbaa !9
  %1184 = load ptr, ptr %96, align 8, !tbaa !5
  %1185 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1184, i32 0, i32 4
  store i64 %1183, ptr %1185, align 8, !tbaa !84
  br label %1236

1186:                                             ; preds = %1109
  %1187 = landingpad { ptr, i32 }
          cleanup
  %1188 = extractvalue { ptr, i32 } %1187, 0
  store ptr %1188, ptr %15, align 8
  %1189 = extractvalue { ptr, i32 } %1187, 1
  store i32 %1189, ptr %16, align 4
  br label %1240

1190:                                             ; preds = %1114
  %1191 = landingpad { ptr, i32 }
          cleanup
  %1192 = extractvalue { ptr, i32 } %1191, 0
  store ptr %1192, ptr %15, align 8
  %1193 = extractvalue { ptr, i32 } %1191, 1
  store i32 %1193, ptr %16, align 4
  br label %1239

1194:                                             ; preds = %1122
  %1195 = landingpad { ptr, i32 }
          cleanup
  %1196 = extractvalue { ptr, i32 } %1195, 0
  store ptr %1196, ptr %15, align 8
  %1197 = extractvalue { ptr, i32 } %1195, 1
  store i32 %1197, ptr %16, align 4
  br label %1238

1198:                                             ; preds = %1132
  %1199 = landingpad { ptr, i32 }
          cleanup
  %1200 = extractvalue { ptr, i32 } %1199, 0
  store ptr %1200, ptr %15, align 8
  %1201 = extractvalue { ptr, i32 } %1199, 1
  store i32 %1201, ptr %16, align 4
  br label %1237

1202:                                             ; preds = %1145
  %1203 = landingpad { ptr, i32 }
          cleanup
  %1204 = extractvalue { ptr, i32 } %1203, 0
  store ptr %1204, ptr %15, align 8
  %1205 = extractvalue { ptr, i32 } %1203, 1
  store i32 %1205, ptr %16, align 4
  br label %1229

1206:                                             ; preds = %1150
  %1207 = landingpad { ptr, i32 }
          cleanup
  %1208 = extractvalue { ptr, i32 } %1207, 0
  store ptr %1208, ptr %15, align 8
  %1209 = extractvalue { ptr, i32 } %1207, 1
  store i32 %1209, ptr %16, align 4
  br label %1225

1210:                                             ; preds = %1153
  %1211 = landingpad { ptr, i32 }
          cleanup
  %1212 = extractvalue { ptr, i32 } %1211, 0
  store ptr %1212, ptr %15, align 8
  %1213 = extractvalue { ptr, i32 } %1211, 1
  store i32 %1213, ptr %16, align 4
  br label %1221

1214:                                             ; preds = %1158
  %1215 = landingpad { ptr, i32 }
          cleanup
  %1216 = extractvalue { ptr, i32 } %1215, 0
  store ptr %1216, ptr %15, align 8
  %1217 = extractvalue { ptr, i32 } %1215, 1
  store i32 %1217, ptr %16, align 4
  %1218 = load i1, ptr %114, align 1
  br i1 %1218, label %1219, label %1220

1219:                                             ; preds = %1214
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #13
  br label %1220

1220:                                             ; preds = %1219, %1214
  br label %1221

1221:                                             ; preds = %1220, %1210
  %1222 = load i1, ptr %113, align 1
  br i1 %1222, label %1223, label %1224

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

1224:                                             ; preds = %1223, %1221
  br label %1225

1225:                                             ; preds = %1224, %1206
  %1226 = load i1, ptr %111, align 1
  br i1 %1226, label %1227, label %1228

1227:                                             ; preds = %1225
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #13
  br label %1228

1228:                                             ; preds = %1227, %1225
  br label %1229

1229:                                             ; preds = %1228, %1202
  %1230 = load i1, ptr %110, align 1
  br i1 %1230, label %1231, label %1232

1231:                                             ; preds = %1229
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #13
  br label %1232

1232:                                             ; preds = %1231, %1229
  br label %1237

1233:                                             ; preds = %1174
  %1234 = load ptr, ptr %25, align 8, !tbaa !5
  %1235 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1234, i32 0, i32 6
  store i8 0, ptr %1235, align 8, !tbaa !75
  br label %1236

1236:                                             ; preds = %1233, %1175
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #13
  br label %1241

1237:                                             ; preds = %1232, %1198
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #13
  br label %1238

1238:                                             ; preds = %1237, %1194
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #13
  br label %1239

1239:                                             ; preds = %1238, %1190
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #13
  br label %1240

1240:                                             ; preds = %1239, %1186
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #13
  br label %1245

1241:                                             ; preds = %1236, %1063
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #13
  br label %1242

1242:                                             ; preds = %1241
  %1243 = load i32, ptr %94, align 4, !tbaa !49
  %1244 = add nsw i32 %1243, 1
  store i32 %1244, ptr %94, align 4, !tbaa !49
  br label %987, !llvm.loop !85

1245:                                             ; preds = %1240, %1108, %1083, %1074
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #13
  br label %1246

1246:                                             ; preds = %1245, %997
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #13
  br label %2357

1247:                                             ; preds = %992
  br label %1248

1248:                                             ; preds = %1247, %980
  %1249 = load ptr, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %115) #13
  store i1 false, ptr %117, align 1
  store i1 false, ptr %118, align 1
  %1250 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule6splitsEv(ptr noundef nonnull align 8 dereferenceable(8) %1249)
          to label %1251 unwind label %993

1251:                                             ; preds = %1248
  %1252 = call noundef zeroext i1 @_ZNKSt6vectorIN6Halide8Internal5SplitESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1250) #13
  br i1 %1252, label %1253, label %1254

1253:                                             ; preds = %1251
  br label %1271

1254:                                             ; preds = %1251
  call void @llvm.lifetime.start.p0(i64 384, ptr %116) #13
  store i1 true, ptr %117, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %116, ptr noundef @.str.14, i32 noundef 694, ptr noundef @.str.38, i32 noundef 1)
          to label %1255 unwind label %1289

1255:                                             ; preds = %1254
  store i1 true, ptr %118, align 1
  %1256 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %116)
          to label %1257 unwind label %1293

1257:                                             ; preds = %1255
  %1258 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA11_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1256, ptr noundef nonnull align 1 dereferenceable(11) @.str.39)
          to label %1259 unwind label %1293

1259:                                             ; preds = %1257
  %1260 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %1261 unwind label %1293

1261:                                             ; preds = %1259
  %1262 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1258, ptr noundef nonnull align 8 dereferenceable(32) %1260)
          to label %1263 unwind label %1293

1263:                                             ; preds = %1261
  %1264 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA31_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1262, ptr noundef nonnull align 1 dereferenceable(31) @.str.40)
          to label %1265 unwind label %1293

1265:                                             ; preds = %1263
  %1266 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA62_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1264, ptr noundef nonnull align 1 dereferenceable(62) @.str.41)
          to label %1267 unwind label %1293

1267:                                             ; preds = %1265
  %1268 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA72_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1266, ptr noundef nonnull align 1 dereferenceable(72) @.str.42)
          to label %1269 unwind label %1293

1269:                                             ; preds = %1267
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %115, ptr noundef nonnull align 8 dereferenceable(380) %1268)
          to label %1270 unwind label %1293

1270:                                             ; preds = %1269
  br label %1271

1271:                                             ; preds = %1270, %1253
  %1272 = load i1, ptr %118, align 1
  br i1 %1272, label %1273, label %1275

1273:                                             ; preds = %1271
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %116)
          to label %1274 unwind label %1289

1274:                                             ; preds = %1273
  br label %1275

1275:                                             ; preds = %1274, %1271
  %1276 = load i1, ptr %117, align 1
  br i1 %1276, label %1277, label %1278

1277:                                             ; preds = %1275
  call void @llvm.lifetime.end.p0(i64 384, ptr %116) #13
  br label %1278

1278:                                             ; preds = %1277, %1275
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #13
  %1279 = load ptr, ptr %50, align 8, !tbaa !5
  %1280 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1279, i32 0, i32 3
  store i8 1, ptr %1280, align 8, !tbaa !86
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #13
  store i64 0, ptr %119, align 8, !tbaa !9
  br label %1281

1281:                                             ; preds = %1504, %1278
  %1282 = load i64, ptr %119, align 8, !tbaa !9
  %1283 = load ptr, ptr %55, align 8, !tbaa !5
  %1284 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule4dimsEv(ptr noundef nonnull align 8 dereferenceable(8) %1283)
          to label %1285 unwind label %1305

1285:                                             ; preds = %1281
  %1286 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal3DimESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1284) #13
  %1287 = icmp ult i64 %1282, %1286
  br i1 %1287, label %1309, label %1288

1288:                                             ; preds = %1285
  store i32 27, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #13
  br label %1512

1289:                                             ; preds = %1273, %1254
  %1290 = landingpad { ptr, i32 }
          cleanup
  %1291 = extractvalue { ptr, i32 } %1290, 0
  store ptr %1291, ptr %15, align 8
  %1292 = extractvalue { ptr, i32 } %1290, 1
  store i32 %1292, ptr %16, align 4
  br label %1301

1293:                                             ; preds = %1269, %1267, %1265, %1263, %1261, %1259, %1257, %1255
  %1294 = landingpad { ptr, i32 }
          cleanup
  %1295 = extractvalue { ptr, i32 } %1294, 0
  store ptr %1295, ptr %15, align 8
  %1296 = extractvalue { ptr, i32 } %1294, 1
  store i32 %1296, ptr %16, align 4
  %1297 = load i1, ptr %118, align 1
  br i1 %1297, label %1298, label %1300

1298:                                             ; preds = %1293
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %116)
          to label %1299 unwind label %2705

1299:                                             ; preds = %1298
  br label %1300

1300:                                             ; preds = %1299, %1293
  br label %1301

1301:                                             ; preds = %1300, %1289
  %1302 = load i1, ptr %117, align 1
  br i1 %1302, label %1303, label %1304

1303:                                             ; preds = %1301
  call void @llvm.lifetime.end.p0(i64 384, ptr %116) #13
  br label %1304

1304:                                             ; preds = %1303, %1301
  call void @llvm.lifetime.end.p0(i64 1, ptr %115) #13
  br label %2357

1305:                                             ; preds = %1281
  %1306 = landingpad { ptr, i32 }
          cleanup
  %1307 = extractvalue { ptr, i32 } %1306, 0
  store ptr %1307, ptr %15, align 8
  %1308 = extractvalue { ptr, i32 } %1306, 1
  store i32 %1308, ptr %16, align 4
  br label %1511

1309:                                             ; preds = %1285
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #13
  %1310 = load ptr, ptr %55, align 8, !tbaa !5
  %1311 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule4dimsEv(ptr noundef nonnull align 8 dereferenceable(8) %1310)
          to label %1312 unwind label %1320

1312:                                             ; preds = %1309
  %1313 = load i64, ptr %119, align 8, !tbaa !9
  %1314 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNKSt6vectorIN6Halide8Internal3DimESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1311, i64 noundef %1313) #13
  store ptr %1314, ptr %120, align 8, !tbaa !5
  %1315 = load ptr, ptr %120, align 8, !tbaa !5
  %1316 = getelementptr inbounds %"struct.Halide::Internal::Dim", ptr %1315, i32 0, i32 0
  %1317 = invoke noundef zeroext i1 @_ZNK6Halide8Internal5ScopeINS0_8IntervalEE8containsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(56) %57, ptr noundef nonnull align 8 dereferenceable(32) %1316)
          to label %1318 unwind label %1320

1318:                                             ; preds = %1312
  br i1 %1317, label %1324, label %1319

1319:                                             ; preds = %1318
  store i32 29, ptr %24, align 4
  br label %1501

1320:                                             ; preds = %1312, %1309
  %1321 = landingpad { ptr, i32 }
          cleanup
  %1322 = extractvalue { ptr, i32 } %1321, 0
  store ptr %1322, ptr %15, align 8
  %1323 = extractvalue { ptr, i32 } %1321, 1
  store i32 %1323, ptr %16, align 4
  br label %1510

1324:                                             ; preds = %1318
  call void @llvm.lifetime.start.p0(i64 120, ptr %121) #13
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopC2Ev(ptr noundef nonnull align 8 dereferenceable(120) %121) #13
  %1325 = load ptr, ptr %120, align 8, !tbaa !5
  %1326 = getelementptr inbounds %"struct.Halide::Internal::Dim", ptr %1325, i32 0, i32 0
  %1327 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 0
  %1328 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %1327, ptr noundef nonnull align 8 dereferenceable(32) %1326)
          to label %1329 unwind label %1367

1329:                                             ; preds = %1324
  call void @llvm.lifetime.start.p0(i64 32, ptr %122) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %123) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr %124) #13
  %1330 = load ptr, ptr %50, align 8, !tbaa !5
  %1331 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1330, i32 0, i32 7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %124, ptr noundef nonnull align 8 dereferenceable(32) %1331, ptr noundef @.str.43)
          to label %1332 unwind label %1371

1332:                                             ; preds = %1329
  call void @llvm.lifetime.start.p0(i64 32, ptr %125) #13
  %1333 = load i64, ptr %119, align 8, !tbaa !9
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %125, i64 noundef %1333)
          to label %1334 unwind label %1375

1334:                                             ; preds = %1332
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %123, ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull align 8 dereferenceable(32) %125)
          to label %1335 unwind label %1379

1335:                                             ; preds = %1334
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %122, ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef @.str.44)
          to label %1336 unwind label %1383

1336:                                             ; preds = %1335
  %1337 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 11
  %1338 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %1337, ptr noundef nonnull align 8 dereferenceable(32) %122) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %126) #13
  %1339 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 0
  invoke void @_ZNK6Halide8Internal5ScopeINS0_8IntervalEE3getIS2_vEET_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Internal::Interval") align 8 %126, ptr noundef nonnull align 8 dereferenceable(56) %56, ptr noundef nonnull align 8 dereferenceable(32) %1339)
          to label %1340 unwind label %1390

1340:                                             ; preds = %1336
  %1341 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %126, i32 0, i32 0
  %1342 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 3
  %1343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1342, ptr noundef nonnull align 8 dereferenceable(8) %1341)
          to label %1344 unwind label %1394

1344:                                             ; preds = %1340
  %1345 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %126, i32 0, i32 1
  %1346 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 4
  %1347 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1346, ptr noundef nonnull align 8 dereferenceable(8) %1345)
          to label %1348 unwind label %1394

1348:                                             ; preds = %1344
  %1349 = load ptr, ptr %120, align 8, !tbaa !5
  %1350 = invoke noundef zeroext i1 @_ZNK6Halide8Internal3Dim7is_pureEv(ptr noundef nonnull align 8 dereferenceable(44) %1349)
          to label %1351 unwind label %1394

1351:                                             ; preds = %1348
  %1352 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 1
  %1353 = zext i1 %1350 to i8
  store i8 %1353, ptr %1352, align 8, !tbaa !87
  %1354 = load ptr, ptr %120, align 8, !tbaa !5
  %1355 = invoke noundef zeroext i1 @_ZNK6Halide8Internal3Dim7is_rvarEv(ptr noundef nonnull align 8 dereferenceable(44) %1354)
          to label %1356 unwind label %1394

1356:                                             ; preds = %1351
  %1357 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 2
  %1358 = zext i1 %1355 to i8
  store i8 %1358, ptr %1357, align 1, !tbaa !89
  %1359 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 5
  store i32 -1, ptr %1359, align 8, !tbaa !90
  %1360 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 6
  store i8 0, ptr %1360, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #13
  store i32 0, ptr %127, align 4, !tbaa !49
  br label %1361

1361:                                             ; preds = %1438, %1356
  %1362 = load i32, ptr %127, align 4, !tbaa !49
  %1363 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %1364 unwind label %1398

1364:                                             ; preds = %1361
  %1365 = icmp slt i32 %1362, %1363
  br i1 %1365, label %1402, label %1366

1366:                                             ; preds = %1364
  store i32 30, ptr %24, align 4
  br label %1441

1367:                                             ; preds = %1324
  %1368 = landingpad { ptr, i32 }
          cleanup
  %1369 = extractvalue { ptr, i32 } %1368, 0
  store ptr %1369, ptr %15, align 8
  %1370 = extractvalue { ptr, i32 } %1368, 1
  store i32 %1370, ptr %16, align 4
  br label %1509

1371:                                             ; preds = %1329
  %1372 = landingpad { ptr, i32 }
          cleanup
  %1373 = extractvalue { ptr, i32 } %1372, 0
  store ptr %1373, ptr %15, align 8
  %1374 = extractvalue { ptr, i32 } %1372, 1
  store i32 %1374, ptr %16, align 4
  br label %1389

1375:                                             ; preds = %1332
  %1376 = landingpad { ptr, i32 }
          cleanup
  %1377 = extractvalue { ptr, i32 } %1376, 0
  store ptr %1377, ptr %15, align 8
  %1378 = extractvalue { ptr, i32 } %1376, 1
  store i32 %1378, ptr %16, align 4
  br label %1388

1379:                                             ; preds = %1334
  %1380 = landingpad { ptr, i32 }
          cleanup
  %1381 = extractvalue { ptr, i32 } %1380, 0
  store ptr %1381, ptr %15, align 8
  %1382 = extractvalue { ptr, i32 } %1380, 1
  store i32 %1382, ptr %16, align 4
  br label %1387

1383:                                             ; preds = %1335
  %1384 = landingpad { ptr, i32 }
          cleanup
  %1385 = extractvalue { ptr, i32 } %1384, 0
  store ptr %1385, ptr %15, align 8
  %1386 = extractvalue { ptr, i32 } %1384, 1
  store i32 %1386, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #13
  br label %1387

1387:                                             ; preds = %1383, %1379
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %125) #13
  br label %1388

1388:                                             ; preds = %1387, %1375
  call void @llvm.lifetime.end.p0(i64 32, ptr %125) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #13
  br label %1389

1389:                                             ; preds = %1388, %1371
  call void @llvm.lifetime.end.p0(i64 32, ptr %124) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %123) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %122) #13
  br label %1509

1390:                                             ; preds = %1336
  %1391 = landingpad { ptr, i32 }
          cleanup
  %1392 = extractvalue { ptr, i32 } %1391, 0
  store ptr %1392, ptr %15, align 8
  %1393 = extractvalue { ptr, i32 } %1391, 1
  store i32 %1393, ptr %16, align 4
  br label %1508

1394:                                             ; preds = %1486, %1351, %1348, %1344, %1340
  %1395 = landingpad { ptr, i32 }
          cleanup
  %1396 = extractvalue { ptr, i32 } %1395, 0
  store ptr %1396, ptr %15, align 8
  %1397 = extractvalue { ptr, i32 } %1395, 1
  store i32 %1397, ptr %16, align 4
  br label %1507

1398:                                             ; preds = %1422, %1411, %1361
  %1399 = landingpad { ptr, i32 }
          cleanup
  %1400 = extractvalue { ptr, i32 } %1399, 0
  store ptr %1400, ptr %15, align 8
  %1401 = extractvalue { ptr, i32 } %1399, 1
  store i32 %1401, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #13
  br label %1507

1402:                                             ; preds = %1364
  %1403 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 0
  %1404 = load i32, ptr %127, align 4, !tbaa !49
  %1405 = sext i32 %1404 to i64
  %1406 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %1405) #13
  %1407 = 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) %1403, ptr noundef nonnull align 8 dereferenceable(32) %1406) #13
  br i1 %1407, label %1408, label %1411

1408:                                             ; preds = %1402
  %1409 = load i32, ptr %127, align 4, !tbaa !49
  %1410 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 5
  store i32 %1409, ptr %1410, align 8, !tbaa !90
  br label %1411

1411:                                             ; preds = %1408, %1402
  %1412 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 3
  %1413 = load ptr, ptr %25, align 8, !tbaa !5
  %1414 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1413, i32 0, i32 5
  %1415 = load i32, ptr %127, align 4, !tbaa !49
  %1416 = sext i32 %1415 to i64
  %1417 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1414, i64 noundef %1416) #13
  %1418 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1417, i32 0, i32 0
  %1419 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1418, i32 0, i32 0
  %1420 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %1412, ptr noundef nonnull align 8 dereferenceable(8) %1419)
          to label %1421 unwind label %1398

1421:                                             ; preds = %1411
  br i1 %1420, label %1422, label %1437

1422:                                             ; preds = %1421
  %1423 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 4
  %1424 = load ptr, ptr %25, align 8, !tbaa !5
  %1425 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1424, i32 0, i32 5
  %1426 = load i32, ptr %127, align 4, !tbaa !49
  %1427 = sext i32 %1426 to i64
  %1428 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1425, i64 noundef %1427) #13
  %1429 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo", ptr %1428, i32 0, i32 0
  %1430 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1429, i32 0, i32 1
  %1431 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %1423, ptr noundef nonnull align 8 dereferenceable(8) %1430)
          to label %1432 unwind label %1398

1432:                                             ; preds = %1422
  br i1 %1431, label %1433, label %1437

1433:                                             ; preds = %1432
  %1434 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 6
  store i8 1, ptr %1434, align 4, !tbaa !91
  %1435 = load i32, ptr %127, align 4, !tbaa !49
  %1436 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 7
  store i32 %1435, ptr %1436, align 8, !tbaa !92
  store i32 30, ptr %24, align 4
  br label %1441

1437:                                             ; preds = %1432, %1421
  br label %1438

1438:                                             ; preds = %1437
  %1439 = load i32, ptr %127, align 4, !tbaa !49
  %1440 = add nsw i32 %1439, 1
  store i32 %1440, ptr %127, align 4, !tbaa !49
  br label %1361, !llvm.loop !93

1441:                                             ; preds = %1433, %1366
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #13
  br label %1442

1442:                                             ; preds = %1441
  %1443 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 6
  %1444 = load i8, ptr %1443, align 4, !tbaa !91, !range !94, !noundef !95
  %1445 = trunc i8 %1444 to i1
  br i1 %1445, label %1478, label %1446

1446:                                             ; preds = %1442
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #13
  %1447 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 3
  %1448 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %1447)
          to label %1449 unwind label %1466

1449:                                             ; preds = %1446
  store ptr %1448, ptr %128, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #13
  %1450 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 4
  %1451 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %1450)
          to label %1452 unwind label %1470

1452:                                             ; preds = %1449
  store ptr %1451, ptr %129, align 8, !tbaa !5
  %1453 = load ptr, ptr %128, align 8, !tbaa !5
  %1454 = icmp ne ptr %1453, null
  br i1 %1454, label %1455, label %1474

1455:                                             ; preds = %1452
  %1456 = load ptr, ptr %129, align 8, !tbaa !5
  %1457 = icmp ne ptr %1456, null
  br i1 %1457, label %1458, label %1474

1458:                                             ; preds = %1455
  %1459 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 8
  store i8 1, ptr %1459, align 4, !tbaa !96
  %1460 = load ptr, ptr %128, align 8, !tbaa !5
  %1461 = load i64, ptr %1460, align 8, !tbaa !9
  %1462 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 9
  store i64 %1461, ptr %1462, align 8, !tbaa !97
  %1463 = load ptr, ptr %129, align 8, !tbaa !5
  %1464 = load i64, ptr %1463, align 8, !tbaa !9
  %1465 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 10
  store i64 %1464, ptr %1465, align 8, !tbaa !98
  br label %1476

1466:                                             ; preds = %1446
  %1467 = landingpad { ptr, i32 }
          cleanup
  %1468 = extractvalue { ptr, i32 } %1467, 0
  store ptr %1468, ptr %15, align 8
  %1469 = extractvalue { ptr, i32 } %1467, 1
  store i32 %1469, ptr %16, align 4
  br label %1477

1470:                                             ; preds = %1449
  %1471 = landingpad { ptr, i32 }
          cleanup
  %1472 = extractvalue { ptr, i32 } %1471, 0
  store ptr %1472, ptr %15, align 8
  %1473 = extractvalue { ptr, i32 } %1471, 1
  store i32 %1473, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #13
  br label %1477

1474:                                             ; preds = %1455, %1452
  %1475 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 8
  store i8 0, ptr %1475, align 4, !tbaa !96
  br label %1476

1476:                                             ; preds = %1474, %1458
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #13
  br label %1478

1477:                                             ; preds = %1470, %1466
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #13
  br label %1507

1478:                                             ; preds = %1476, %1442
  %1479 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 8
  %1480 = load i8, ptr %1479, align 4, !tbaa !96, !range !94, !noundef !95
  %1481 = trunc i8 %1480 to i1
  br i1 %1481, label %1486, label %1482

1482:                                             ; preds = %1478
  %1483 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %121, i32 0, i32 6
  %1484 = load i8, ptr %1483, align 4, !tbaa !91, !range !94, !noundef !95
  %1485 = trunc i8 %1484 to i1
  br label %1486

1486:                                             ; preds = %1482, %1478
  %1487 = phi i1 [ true, %1478 ], [ %1485, %1482 ]
  %1488 = zext i1 %1487 to i32
  %1489 = load ptr, ptr %50, align 8, !tbaa !5
  %1490 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1489, i32 0, i32 3
  %1491 = load i8, ptr %1490, align 8, !tbaa !86, !range !94, !noundef !95
  %1492 = trunc i8 %1491 to i1
  %1493 = zext i1 %1492 to i32
  %1494 = and i32 %1493, %1488
  %1495 = icmp ne i32 %1494, 0
  %1496 = zext i1 %1495 to i8
  store i8 %1496, ptr %1490, align 8, !tbaa !86
  %1497 = load ptr, ptr %50, align 8, !tbaa !5
  %1498 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1497, i32 0, i32 2
  %1499 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %1498, ptr noundef nonnull align 8 dereferenceable(120) %121)
          to label %1500 unwind label %1394

1500:                                             ; preds = %1486
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #13
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %121) #13
  call void @llvm.lifetime.end.p0(i64 120, ptr %121) #13
  store i32 0, ptr %24, align 4
  br label %1501

1501:                                             ; preds = %1500, %1319
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #13
  %1502 = load i32, ptr %24, align 4
  switch i32 %1502, label %2708 [
    i32 0, label %1503
    i32 29, label %1504
  ]

1503:                                             ; preds = %1501
  br label %1504

1504:                                             ; preds = %1503, %1501
  %1505 = load i64, ptr %119, align 8, !tbaa !9
  %1506 = add i64 %1505, 1
  store i64 %1506, ptr %119, align 8, !tbaa !9
  br label %1281, !llvm.loop !99

1507:                                             ; preds = %1477, %1398, %1394
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %126) #13
  br label %1508

1508:                                             ; preds = %1507, %1390
  call void @llvm.lifetime.end.p0(i64 16, ptr %126) #13
  br label %1509

1509:                                             ; preds = %1508, %1389, %1367
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %121) #13
  call void @llvm.lifetime.end.p0(i64 120, ptr %121) #13
  br label %1510

1510:                                             ; preds = %1509, %1320
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #13
  br label %1511

1511:                                             ; preds = %1510, %1305
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #13
  br label %2357

1512:                                             ; preds = %1288
  call void @llvm.lifetime.start.p0(i64 24, ptr %130) #13
  %1513 = load ptr, ptr %54, align 8, !tbaa !5
  %1514 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition4argsEv(ptr noundef nonnull align 8 dereferenceable(8) %1513)
          to label %1515 unwind label %1548

1515:                                             ; preds = %1512
  invoke void @_ZNSt6vectorIN6Halide4ExprESaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %130, ptr noundef nonnull align 8 dereferenceable(24) %1514)
          to label %1516 unwind label %1548

1516:                                             ; preds = %1515
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #13
  %1517 = call ptr @_ZNSt6vectorIN6Halide4ExprESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %130) #13
  %1518 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.160", ptr %132, i32 0, i32 0
  store ptr %1517, ptr %1518, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide4ExprESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull align 8 dereferenceable(8) %132) #13
  %1519 = load ptr, ptr %54, align 8, !tbaa !5
  %1520 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition6valuesEv(ptr noundef nonnull align 8 dereferenceable(8) %1519)
          to label %1521 unwind label %1552

1521:                                             ; preds = %1516
  %1522 = call ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1520) #13
  %1523 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.161", ptr %133, i32 0, i32 0
  store ptr %1522, ptr %1523, align 8
  %1524 = load ptr, ptr %54, align 8, !tbaa !5
  %1525 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition6valuesEv(ptr noundef nonnull align 8 dereferenceable(8) %1524)
          to label %1526 unwind label %1552

1526:                                             ; preds = %1521
  %1527 = call ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1525) #13
  %1528 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.161", ptr %134, i32 0, i32 0
  store ptr %1527, ptr %1528, align 8
  %1529 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.161", ptr %131, i32 0, i32 0
  %1530 = load ptr, ptr %1529, align 8
  %1531 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.161", ptr %133, i32 0, i32 0
  %1532 = load ptr, ptr %1531, align 8
  %1533 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.161", ptr %134, i32 0, i32 0
  %1534 = load ptr, ptr %1533, align 8
  %1535 = invoke ptr @_ZNSt6vectorIN6Halide4ExprESaIS1_EE6insertIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEvEENS6_IPS1_S3_EES9_T_SC_(ptr noundef nonnull align 8 dereferenceable(24) %130, ptr %1530, ptr %1532, ptr %1534)
          to label %1536 unwind label %1552

1536:                                             ; preds = %1526
  %1537 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.160", ptr %135, i32 0, i32 0
  store ptr %1535, ptr %1537, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #13
  %1538 = load ptr, ptr %54, align 8, !tbaa !5
  %1539 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal10Definition9predicateEv(ptr noundef nonnull align 8 dereferenceable(8) %1538)
          to label %1540 unwind label %1556

1540:                                             ; preds = %1536
  %1541 = invoke noundef zeroext i1 @_ZNK6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEE7definedEv(ptr noundef nonnull align 8 dereferenceable(8) %1539)
          to label %1542 unwind label %1556

1542:                                             ; preds = %1540
  br i1 %1541, label %1543, label %1560

1543:                                             ; preds = %1542
  %1544 = load ptr, ptr %54, align 8, !tbaa !5
  %1545 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal10Definition9predicateEv(ptr noundef nonnull align 8 dereferenceable(8) %1544)
          to label %1546 unwind label %1556

1546:                                             ; preds = %1543
  invoke void @_ZNSt6vectorIN6Halide4ExprESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %130, ptr noundef nonnull align 8 dereferenceable(8) %1545)
          to label %1547 unwind label %1556

1547:                                             ; preds = %1546
  br label %1560

1548:                                             ; preds = %1515, %1512
  %1549 = landingpad { ptr, i32 }
          cleanup
  %1550 = extractvalue { ptr, i32 } %1549, 0
  store ptr %1550, ptr %15, align 8
  %1551 = extractvalue { ptr, i32 } %1549, 1
  store i32 %1551, ptr %16, align 4
  br label %2356

1552:                                             ; preds = %1526, %1521, %1516
  %1553 = landingpad { ptr, i32 }
          cleanup
  %1554 = extractvalue { ptr, i32 } %1553, 0
  store ptr %1554, ptr %15, align 8
  %1555 = extractvalue { ptr, i32 } %1553, 1
  store i32 %1555, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #13
  br label %2355

1556:                                             ; preds = %1546, %1543, %1540, %1536
  %1557 = landingpad { ptr, i32 }
          cleanup
  %1558 = extractvalue { ptr, i32 } %1557, 0
  store ptr %1558, ptr %15, align 8
  %1559 = extractvalue { ptr, i32 } %1557, 1
  store i32 %1559, ptr %16, align 4
  br label %2355

1560:                                             ; preds = %1547, %1542
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #13
  %1561 = invoke { i64, ptr } @_ZN6Halide3IntEii(i32 noundef 32, i32 noundef 1)
          to label %1562 unwind label %1597

1562:                                             ; preds = %1560
  %1563 = getelementptr inbounds { i64, ptr }, ptr %137, i32 0, i32 0
  %1564 = extractvalue { i64, ptr } %1561, 0
  store i64 %1564, ptr %1563, align 8
  %1565 = getelementptr inbounds { i64, ptr }, ptr %137, i32 0, i32 1
  %1566 = extractvalue { i64, ptr } %1561, 1
  store ptr %1566, ptr %1565, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %138) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr %139) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef @.str.45, ptr noundef nonnull align 1 dereferenceable(1) %139)
          to label %1567 unwind label %1601

1567:                                             ; preds = %1562
  call void @llvm.memset.p0.i64(ptr align 8 %140, i8 0, i64 24, i1 false)
  call void @_ZN6Halide8Internal11FunctionPtrC2Ev(ptr noundef nonnull align 8 dereferenceable(20) %140) #13
  call void @llvm.memset.p0.i64(ptr align 8 %141, i8 0, i64 16, i1 false)
  call void @_ZN6Halide6BufferIvEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #13
  call void @llvm.memset.p0.i64(ptr align 8 %142, i8 0, i64 16, i1 false)
  call void @_ZN6Halide8Internal9ParameterC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #13
  %1568 = getelementptr inbounds { i64, ptr }, ptr %137, i32 0, i32 0
  %1569 = load i64, ptr %1568, align 8
  %1570 = getelementptr inbounds { i64, ptr }, ptr %137, i32 0, i32 1
  %1571 = load ptr, ptr %1570, align 8
  invoke void @_ZN6Halide8Internal4Call4makeENS_4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS_4ExprESaISC_EENS1_8CallTypeENS0_11FunctionPtrEiNS_6BufferIvEENS0_9ParameterE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %136, i64 %1569, ptr %1571, ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 8 dereferenceable(24) %130, i32 noundef 1, ptr noundef %140, i32 noundef 0, ptr noundef %141, ptr noundef %142)
          to label %1572 unwind label %1605

1572:                                             ; preds = %1567
  call void @_ZN6Halide8Internal9ParameterD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #13
  call void @_ZN6Halide6BufferIvED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #13
  call void @_ZN6Halide8Internal11FunctionPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %140) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %139) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #13
  call void @llvm.lifetime.start.p0(i64 104, ptr %143) #13
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %144, ptr noundef nonnull align 8 dereferenceable(24) %26) #13
  invoke void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN10CheckTypesC2ES4_(ptr noundef nonnull align 8 dereferenceable(104) %143, ptr noundef %144)
          to label %1573 unwind label %1610

1573:                                             ; preds = %1572
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %144) #13
  invoke void @_ZNK6Halide8Internal8IRHandle6acceptEPNS0_9IRVisitorE(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef %143)
          to label %1574 unwind label %1614

1574:                                             ; preds = %1573
  call void @llvm.lifetime.start.p0(i64 16, ptr %145) #13
  %1575 = load ptr, ptr %54, align 8, !tbaa !5
  %1576 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition6valuesEv(ptr noundef nonnull align 8 dereferenceable(8) %1575)
          to label %1577 unwind label %1618

1577:                                             ; preds = %1574
  %1578 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1576, i64 noundef 0) #13
  %1579 = invoke { i64, ptr } @_ZNK6Halide4Expr4typeEv(ptr noundef nonnull align 8 dereferenceable(8) %1578)
          to label %1580 unwind label %1618

1580:                                             ; preds = %1577
  %1581 = getelementptr inbounds { i64, ptr }, ptr %145, i32 0, i32 0
  %1582 = extractvalue { i64, ptr } %1579, 0
  store i64 %1582, ptr %1581, align 8
  %1583 = getelementptr inbounds { i64, ptr }, ptr %145, i32 0, i32 1
  %1584 = extractvalue { i64, ptr } %1579, 1
  store ptr %1584, ptr %1583, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %146) #13
  store i32 0, ptr %146, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #13
  %1585 = load ptr, ptr %54, align 8, !tbaa !5
  %1586 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition6valuesEv(ptr noundef nonnull align 8 dereferenceable(8) %1585)
          to label %1587 unwind label %1622

1587:                                             ; preds = %1580
  store ptr %1586, ptr %147, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #13
  %1588 = load ptr, ptr %147, align 8, !tbaa !5
  %1589 = call ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1588) #13
  %1590 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.161", ptr %148, i32 0, i32 0
  store ptr %1589, ptr %1590, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #13
  %1591 = load ptr, ptr %147, align 8, !tbaa !5
  %1592 = call ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1591) #13
  %1593 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.161", ptr %149, i32 0, i32 0
  store ptr %1592, ptr %1593, align 8
  br label %1594

1594:                                             ; preds = %1672, %1587
  %1595 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide4ExprESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %149) #13
  br i1 %1595, label %1626, label %1596

1596:                                             ; preds = %1594
  store i32 33, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #13
  br label %1676

1597:                                             ; preds = %1560
  %1598 = landingpad { ptr, i32 }
          cleanup
  %1599 = extractvalue { ptr, i32 } %1598, 0
  store ptr %1599, ptr %15, align 8
  %1600 = extractvalue { ptr, i32 } %1598, 1
  store i32 %1600, ptr %16, align 4
  br label %2354

1601:                                             ; preds = %1562
  %1602 = landingpad { ptr, i32 }
          cleanup
  %1603 = extractvalue { ptr, i32 } %1602, 0
  store ptr %1603, ptr %15, align 8
  %1604 = extractvalue { ptr, i32 } %1602, 1
  store i32 %1604, ptr %16, align 4
  br label %1609

1605:                                             ; preds = %1567
  %1606 = landingpad { ptr, i32 }
          cleanup
  %1607 = extractvalue { ptr, i32 } %1606, 0
  store ptr %1607, ptr %15, align 8
  %1608 = extractvalue { ptr, i32 } %1606, 1
  store i32 %1608, ptr %16, align 4
  call void @_ZN6Halide8Internal9ParameterD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %142) #13
  call void @_ZN6Halide6BufferIvED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %141) #13
  call void @_ZN6Halide8Internal11FunctionPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %140) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %138) #13
  br label %1609

1609:                                             ; preds = %1605, %1601
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %139) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %139) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr %138) #13
  br label %2354

1610:                                             ; preds = %1572
  %1611 = landingpad { ptr, i32 }
          cleanup
  %1612 = extractvalue { ptr, i32 } %1611, 0
  store ptr %1612, ptr %15, align 8
  %1613 = extractvalue { ptr, i32 } %1611, 1
  store i32 %1613, ptr %16, align 4
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %144) #13
  br label %2353

1614:                                             ; preds = %1573
  %1615 = landingpad { ptr, i32 }
          cleanup
  %1616 = extractvalue { ptr, i32 } %1615, 0
  store ptr %1616, ptr %15, align 8
  %1617 = extractvalue { ptr, i32 } %1615, 1
  store i32 %1617, ptr %16, align 4
  br label %2352

1618:                                             ; preds = %1577, %1574
  %1619 = landingpad { ptr, i32 }
          cleanup
  %1620 = extractvalue { ptr, i32 } %1619, 0
  store ptr %1620, ptr %15, align 8
  %1621 = extractvalue { ptr, i32 } %1619, 1
  store i32 %1621, ptr %16, align 4
  br label %2351

1622:                                             ; preds = %1580
  %1623 = landingpad { ptr, i32 }
          cleanup
  %1624 = extractvalue { ptr, i32 } %1623, 0
  store ptr %1624, ptr %15, align 8
  %1625 = extractvalue { ptr, i32 } %1623, 1
  store i32 %1625, ptr %16, align 4
  br label %1675

1626:                                             ; preds = %1594
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #13
  %1627 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide4ExprESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #13
  store ptr %1627, ptr %150, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %151) #13
  %1628 = load ptr, ptr %150, align 8, !tbaa !5
  %1629 = invoke { i64, ptr } @_ZNK6Halide4Expr4typeEv(ptr noundef nonnull align 8 dereferenceable(8) %1628)
          to label %1630 unwind label %1659

1630:                                             ; preds = %1626
  %1631 = getelementptr inbounds { i64, ptr }, ptr %151, i32 0, i32 0
  %1632 = extractvalue { i64, ptr } %1629, 0
  store i64 %1632, ptr %1631, align 8
  %1633 = getelementptr inbounds { i64, ptr }, ptr %151, i32 0, i32 1
  %1634 = extractvalue { i64, ptr } %1629, 1
  store ptr %1634, ptr %1633, align 8
  %1635 = invoke noundef i32 @_ZNK6Halide4Type5bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %151)
          to label %1636 unwind label %1659

1636:                                             ; preds = %1630
  %1637 = load i32, ptr %146, align 4, !tbaa !49
  %1638 = add nsw i32 %1637, %1635
  store i32 %1638, ptr %146, align 4, !tbaa !49
  call void @llvm.lifetime.end.p0(i64 16, ptr %151) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %152) #13
  %1639 = load ptr, ptr %150, align 8, !tbaa !5
  %1640 = invoke { i64, ptr } @_ZNK6Halide4Expr4typeEv(ptr noundef nonnull align 8 dereferenceable(8) %1639)
          to label %1641 unwind label %1663

1641:                                             ; preds = %1636
  %1642 = getelementptr inbounds { i64, ptr }, ptr %152, i32 0, i32 0
  %1643 = extractvalue { i64, ptr } %1640, 0
  store i64 %1643, ptr %1642, align 8
  %1644 = getelementptr inbounds { i64, ptr }, ptr %152, i32 0, i32 1
  %1645 = extractvalue { i64, ptr } %1640, 1
  store ptr %1645, ptr %1644, align 8
  %1646 = invoke noundef i32 @_ZNK6Halide4Type5bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %152)
          to label %1647 unwind label %1663

1647:                                             ; preds = %1641
  %1648 = invoke noundef i32 @_ZNK6Halide4Type5bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %145)
          to label %1649 unwind label %1663

1649:                                             ; preds = %1647
  %1650 = icmp sgt i32 %1646, %1648
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #13
  br i1 %1650, label %1651, label %1671

1651:                                             ; preds = %1649
  call void @llvm.lifetime.start.p0(i64 16, ptr %153) #13
  %1652 = load ptr, ptr %150, align 8, !tbaa !5
  %1653 = invoke { i64, ptr } @_ZNK6Halide4Expr4typeEv(ptr noundef nonnull align 8 dereferenceable(8) %1652)
          to label %1654 unwind label %1667

1654:                                             ; preds = %1651
  %1655 = getelementptr inbounds { i64, ptr }, ptr %153, i32 0, i32 0
  %1656 = extractvalue { i64, ptr } %1653, 0
  store i64 %1656, ptr %1655, align 8
  %1657 = getelementptr inbounds { i64, ptr }, ptr %153, i32 0, i32 1
  %1658 = extractvalue { i64, ptr } %1653, 1
  store ptr %1658, ptr %1657, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %145, ptr align 8 %153, i64 16, i1 false), !tbaa.struct !100
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #13
  br label %1671

1659:                                             ; preds = %1630, %1626
  %1660 = landingpad { ptr, i32 }
          cleanup
  %1661 = extractvalue { ptr, i32 } %1660, 0
  store ptr %1661, ptr %15, align 8
  %1662 = extractvalue { ptr, i32 } %1660, 1
  store i32 %1662, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %151) #13
  br label %1674

1663:                                             ; preds = %1647, %1641, %1636
  %1664 = landingpad { ptr, i32 }
          cleanup
  %1665 = extractvalue { ptr, i32 } %1664, 0
  store ptr %1665, ptr %15, align 8
  %1666 = extractvalue { ptr, i32 } %1664, 1
  store i32 %1666, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #13
  br label %1674

1667:                                             ; preds = %1651
  %1668 = landingpad { ptr, i32 }
          cleanup
  %1669 = extractvalue { ptr, i32 } %1668, 0
  store ptr %1669, ptr %15, align 8
  %1670 = extractvalue { ptr, i32 } %1668, 1
  store i32 %1670, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %153) #13
  br label %1674

1671:                                             ; preds = %1654, %1649
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #13
  br label %1672

1672:                                             ; preds = %1671
  %1673 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide4ExprESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #13
  br label %1594

1674:                                             ; preds = %1667, %1663, %1659
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #13
  br label %1675

1675:                                             ; preds = %1674, %1622
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #13
  br label %2350

1676:                                             ; preds = %1596
  %1677 = load i32, ptr %49, align 4, !tbaa !49
  %1678 = icmp eq i32 %1677, 0
  br i1 %1678, label %1679, label %1684

1679:                                             ; preds = %1676
  %1680 = load i32, ptr %146, align 4, !tbaa !49
  %1681 = sitofp i32 %1680 to double
  %1682 = load ptr, ptr %25, align 8, !tbaa !5
  %1683 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1682, i32 0, i32 2
  store double %1681, ptr %1683, align 8, !tbaa !106
  br label %1684

1684:                                             ; preds = %1679, %1676
  %1685 = load ptr, ptr %8, align 8, !tbaa !5
  %1686 = getelementptr inbounds %class.CheckTypes, ptr %143, i32 0, i32 4
  %1687 = invoke noundef i32 @_ZNK6Halide6Target19natural_vector_sizeERKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(32) %1685, ptr noundef nonnull align 8 dereferenceable(16) %1686)
          to label %1688 unwind label %1699

1688:                                             ; preds = %1684
  %1689 = load ptr, ptr %50, align 8, !tbaa !5
  %1690 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1689, i32 0, i32 4
  store i32 %1687, ptr %1690, align 4, !tbaa !107
  %1691 = load i32, ptr %49, align 4, !tbaa !49
  %1692 = icmp eq i32 %1691, 0
  br i1 %1692, label %1693, label %1703

1693:                                             ; preds = %1688
  %1694 = load ptr, ptr %50, align 8, !tbaa !5
  %1695 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1694, i32 0, i32 4
  %1696 = load i32, ptr %1695, align 4, !tbaa !107
  %1697 = load ptr, ptr %25, align 8, !tbaa !5
  %1698 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1697, i32 0, i32 9
  store i32 %1696, ptr %1698, align 8, !tbaa !108
  br label %1713

1699:                                             ; preds = %1703, %1684
  %1700 = landingpad { ptr, i32 }
          cleanup
  %1701 = extractvalue { ptr, i32 } %1700, 0
  store ptr %1701, ptr %15, align 8
  %1702 = extractvalue { ptr, i32 } %1700, 1
  store i32 %1702, ptr %16, align 4
  br label %2350

1703:                                             ; preds = %1688
  %1704 = load ptr, ptr %25, align 8, !tbaa !5
  %1705 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1704, i32 0, i32 9
  %1706 = load ptr, ptr %50, align 8, !tbaa !5
  %1707 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1706, i32 0, i32 4
  %1708 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1705, ptr noundef nonnull align 4 dereferenceable(4) %1707)
          to label %1709 unwind label %1699

1709:                                             ; preds = %1703
  %1710 = load i32, ptr %1708, align 4, !tbaa !49
  %1711 = load ptr, ptr %25, align 8, !tbaa !5
  %1712 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1711, i32 0, i32 9
  store i32 %1710, ptr %1712, align 8, !tbaa !108
  br label %1713

1713:                                             ; preds = %1709, %1693
  %1714 = load ptr, ptr %25, align 8, !tbaa !5
  %1715 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1714, i32 0, i32 15
  store i8 0, ptr %1715, align 2, !tbaa !109
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #13
  %1716 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %1716, ptr %154, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #13
  %1717 = load ptr, ptr %154, align 8, !tbaa !5
  %1718 = call ptr @_ZNKSt6vectorIN6Halide8Internal8FunctionESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1717) #13
  %1719 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.113", ptr %155, i32 0, i32 0
  store ptr %1718, ptr %1719, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #13
  %1720 = load ptr, ptr %154, align 8, !tbaa !5
  %1721 = call ptr @_ZNKSt6vectorIN6Halide8Internal8FunctionESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1720) #13
  %1722 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.113", ptr %156, i32 0, i32 0
  store ptr %1721, ptr %1722, align 8
  br label %1723

1723:                                             ; preds = %1742, %1713
  %1724 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %155, ptr noundef nonnull align 8 dereferenceable(8) %156) #13
  br i1 %1724, label %1726, label %1725

1725:                                             ; preds = %1723
  store i32 35, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #13
  br label %1748

1726:                                             ; preds = %1723
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #13
  %1727 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %155) #13
  store ptr %1727, ptr %157, align 8, !tbaa !5
  %1728 = load ptr, ptr %157, align 8, !tbaa !5
  %1729 = load ptr, ptr %25, align 8, !tbaa !5
  %1730 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1729, i32 0, i32 1
  %1731 = invoke noundef zeroext i1 @_ZNK6Halide8Internal8Function7same_asERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %1728, ptr noundef nonnull align 8 dereferenceable(24) %1730)
          to label %1732 unwind label %1744

1732:                                             ; preds = %1726
  %1733 = zext i1 %1731 to i32
  %1734 = load ptr, ptr %25, align 8, !tbaa !5
  %1735 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1734, i32 0, i32 15
  %1736 = load i8, ptr %1735, align 2, !tbaa !109, !range !94, !noundef !95
  %1737 = trunc i8 %1736 to i1
  %1738 = zext i1 %1737 to i32
  %1739 = or i32 %1738, %1733
  %1740 = icmp ne i32 %1739, 0
  %1741 = zext i1 %1740 to i8
  store i8 %1741, ptr %1735, align 2, !tbaa !109
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #13
  br label %1742

1742:                                             ; preds = %1732
  %1743 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %155) #13
  br label %1723

1744:                                             ; preds = %1726
  %1745 = landingpad { ptr, i32 }
          cleanup
  %1746 = extractvalue { ptr, i32 } %1745, 0
  store ptr %1746, ptr %15, align 8
  %1747 = extractvalue { ptr, i32 } %1745, 1
  store i32 %1747, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #13
  br label %2350

1748:                                             ; preds = %1725
  %1749 = load ptr, ptr %25, align 8, !tbaa !5
  %1750 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1749, i32 0, i32 15
  %1751 = load i8, ptr %1750, align 2, !tbaa !109, !range !94, !noundef !95
  %1752 = trunc i8 %1751 to i1
  br i1 %1752, label %1753, label %1962

1753:                                             ; preds = %1748
  call void @llvm.lifetime.start.p0(i64 48, ptr %158) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %158) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #13
  %1754 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function8scheduleEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %1755 unwind label %1767

1755:                                             ; preds = %1753
  %1756 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Halide8Internal12FuncSchedule9estimatesEv(ptr noundef nonnull align 8 dereferenceable(8) %1754)
          to label %1757 unwind label %1767

1757:                                             ; preds = %1755
  store ptr %1756, ptr %159, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #13
  %1758 = load ptr, ptr %159, align 8, !tbaa !5
  %1759 = call ptr @_ZNSt6vectorIN6Halide8Internal5BoundESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1758) #13
  %1760 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.178", ptr %160, i32 0, i32 0
  store ptr %1759, ptr %1760, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #13
  %1761 = load ptr, ptr %159, align 8, !tbaa !5
  %1762 = call ptr @_ZNSt6vectorIN6Halide8Internal5BoundESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1761) #13
  %1763 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.178", ptr %161, i32 0, i32 0
  store ptr %1762, ptr %1763, align 8
  br label %1764

1764:                                             ; preds = %1791, %1757
  %1765 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef nonnull align 8 dereferenceable(8) %161) #13
  br i1 %1765, label %1771, label %1766

1766:                                             ; preds = %1764
  store i32 37, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #13
  br label %1813

1767:                                             ; preds = %1755, %1753
  %1768 = landingpad { ptr, i32 }
          cleanup
  %1769 = extractvalue { ptr, i32 } %1768, 0
  store ptr %1769, ptr %15, align 8
  %1770 = extractvalue { ptr, i32 } %1768, 1
  store i32 %1770, ptr %16, align 4
  br label %1812

1771:                                             ; preds = %1764
  call void @llvm.lifetime.start.p0(i64 64, ptr %162) #13
  %1772 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %160) #13
  invoke void @_ZN6Halide8Internal5BoundC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(64) %162, ptr noundef nonnull align 8 dereferenceable(64) %1772)
          to label %1773 unwind label %1793

1773:                                             ; preds = %1771
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #13
  %1774 = getelementptr inbounds %"struct.Halide::Internal::Bound", ptr %162, i32 0, i32 1
  %1775 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %1774)
          to label %1776 unwind label %1797

1776:                                             ; preds = %1773
  %1777 = load i64, ptr %1775, align 8, !tbaa !9
  store i64 %1777, ptr %163, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #13
  %1778 = getelementptr inbounds %"struct.Halide::Internal::Bound", ptr %162, i32 0, i32 2
  %1779 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %1778)
          to label %1780 unwind label %1801

1780:                                             ; preds = %1776
  %1781 = load i64, ptr %1779, align 8, !tbaa !9
  store i64 %1781, ptr %164, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %165) #13
  %1782 = load i64, ptr %163, align 8, !tbaa !9
  %1783 = load i64, ptr %163, align 8, !tbaa !9
  %1784 = load i64, ptr %164, align 8, !tbaa !9
  %1785 = add nsw i64 %1783, %1784
  %1786 = sub nsw i64 %1785, 1
  invoke void @_ZN6Halide8Internal13Autoscheduler4SpanC2Ellb(ptr noundef nonnull align 8 dereferenceable(17) %165, i64 noundef %1782, i64 noundef %1786, i1 noundef zeroext false)
          to label %1787 unwind label %1805

1787:                                             ; preds = %1780
  %1788 = getelementptr inbounds %"struct.Halide::Internal::Bound", ptr %162, i32 0, i32 0
  %1789 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEEixERSD_(ptr noundef nonnull align 8 dereferenceable(48) %158, ptr noundef nonnull align 8 dereferenceable(32) %1788)
          to label %1790 unwind label %1805

1790:                                             ; preds = %1787
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1789, ptr align 8 %165, i64 17, i1 false), !tbaa.struct !110
  call void @llvm.lifetime.end.p0(i64 24, ptr %165) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #13
  call void @_ZN6Halide8Internal5BoundD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %162) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %162) #13
  br label %1791

1791:                                             ; preds = %1790
  %1792 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %160) #13
  br label %1764

1793:                                             ; preds = %1771
  %1794 = landingpad { ptr, i32 }
          cleanup
  %1795 = extractvalue { ptr, i32 } %1794, 0
  store ptr %1795, ptr %15, align 8
  %1796 = extractvalue { ptr, i32 } %1794, 1
  store i32 %1796, ptr %16, align 4
  br label %1811

1797:                                             ; preds = %1773
  %1798 = landingpad { ptr, i32 }
          cleanup
  %1799 = extractvalue { ptr, i32 } %1798, 0
  store ptr %1799, ptr %15, align 8
  %1800 = extractvalue { ptr, i32 } %1798, 1
  store i32 %1800, ptr %16, align 4
  br label %1810

1801:                                             ; preds = %1776
  %1802 = landingpad { ptr, i32 }
          cleanup
  %1803 = extractvalue { ptr, i32 } %1802, 0
  store ptr %1803, ptr %15, align 8
  %1804 = extractvalue { ptr, i32 } %1802, 1
  store i32 %1804, ptr %16, align 4
  br label %1809

1805:                                             ; preds = %1787, %1780
  %1806 = landingpad { ptr, i32 }
          cleanup
  %1807 = extractvalue { ptr, i32 } %1806, 0
  store ptr %1807, ptr %15, align 8
  %1808 = extractvalue { ptr, i32 } %1806, 1
  store i32 %1808, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %165) #13
  br label %1809

1809:                                             ; preds = %1805, %1801
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #13
  br label %1810

1810:                                             ; preds = %1809, %1797
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #13
  call void @_ZN6Halide8Internal5BoundD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %162) #13
  br label %1811

1811:                                             ; preds = %1810, %1793
  call void @llvm.lifetime.end.p0(i64 64, ptr %162) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #13
  br label %1812

1812:                                             ; preds = %1811, %1767
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #13
  br label %1961

1813:                                             ; preds = %1766
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #13
  %1814 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function8scheduleEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %1815 unwind label %1827

1815:                                             ; preds = %1813
  %1816 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Halide8Internal12FuncSchedule6boundsEv(ptr noundef nonnull align 8 dereferenceable(8) %1814)
          to label %1817 unwind label %1827

1817:                                             ; preds = %1815
  store ptr %1816, ptr %166, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #13
  %1818 = load ptr, ptr %166, align 8, !tbaa !5
  %1819 = call ptr @_ZNSt6vectorIN6Halide8Internal5BoundESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1818) #13
  %1820 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.178", ptr %167, i32 0, i32 0
  store ptr %1819, ptr %1820, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #13
  %1821 = load ptr, ptr %166, align 8, !tbaa !5
  %1822 = call ptr @_ZNSt6vectorIN6Halide8Internal5BoundESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1821) #13
  %1823 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.178", ptr %168, i32 0, i32 0
  store ptr %1822, ptr %1823, align 8
  br label %1824

1824:                                             ; preds = %1875, %1817
  %1825 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull align 8 dereferenceable(8) %168) #13
  br i1 %1825, label %1831, label %1826

1826:                                             ; preds = %1824
  store i32 39, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #13
  br label %1881

1827:                                             ; preds = %1815, %1813
  %1828 = landingpad { ptr, i32 }
          cleanup
  %1829 = extractvalue { ptr, i32 } %1828, 0
  store ptr %1829, ptr %15, align 8
  %1830 = extractvalue { ptr, i32 } %1828, 1
  store i32 %1830, ptr %16, align 4
  br label %1880

1831:                                             ; preds = %1824
  call void @llvm.lifetime.start.p0(i64 64, ptr %169) #13
  %1832 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %167) #13
  invoke void @_ZN6Halide8Internal5BoundC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(64) %169, ptr noundef nonnull align 8 dereferenceable(64) %1832)
          to label %1833 unwind label %1858

1833:                                             ; preds = %1831
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #13
  %1834 = getelementptr inbounds %"struct.Halide::Internal::Bound", ptr %169, i32 0, i32 1
  %1835 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %1834)
          to label %1836 unwind label %1862

1836:                                             ; preds = %1833
  store ptr %1835, ptr %170, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #13
  %1837 = getelementptr inbounds %"struct.Halide::Internal::Bound", ptr %169, i32 0, i32 2
  %1838 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %1837)
          to label %1839 unwind label %1866

1839:                                             ; preds = %1836
  store ptr %1838, ptr %171, align 8, !tbaa !5
  %1840 = load ptr, ptr %170, align 8, !tbaa !5
  %1841 = icmp ne ptr %1840, null
  br i1 %1841, label %1842, label %1874

1842:                                             ; preds = %1839
  %1843 = load ptr, ptr %171, align 8, !tbaa !5
  %1844 = icmp ne ptr %1843, null
  br i1 %1844, label %1845, label %1874

1845:                                             ; preds = %1842
  call void @llvm.lifetime.start.p0(i64 24, ptr %172) #13
  %1846 = load ptr, ptr %170, align 8, !tbaa !5
  %1847 = load i64, ptr %1846, align 8, !tbaa !9
  %1848 = load ptr, ptr %170, align 8, !tbaa !5
  %1849 = load i64, ptr %1848, align 8, !tbaa !9
  %1850 = load ptr, ptr %171, align 8, !tbaa !5
  %1851 = load i64, ptr %1850, align 8, !tbaa !9
  %1852 = add nsw i64 %1849, %1851
  %1853 = sub nsw i64 %1852, 1
  invoke void @_ZN6Halide8Internal13Autoscheduler4SpanC2Ellb(ptr noundef nonnull align 8 dereferenceable(17) %172, i64 noundef %1847, i64 noundef %1853, i1 noundef zeroext true)
          to label %1854 unwind label %1870

1854:                                             ; preds = %1845
  %1855 = getelementptr inbounds %"struct.Halide::Internal::Bound", ptr %169, i32 0, i32 0
  %1856 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEEixERSD_(ptr noundef nonnull align 8 dereferenceable(48) %158, ptr noundef nonnull align 8 dereferenceable(32) %1855)
          to label %1857 unwind label %1870

1857:                                             ; preds = %1854
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1856, ptr align 8 %172, i64 17, i1 false), !tbaa.struct !110
  call void @llvm.lifetime.end.p0(i64 24, ptr %172) #13
  br label %1874

1858:                                             ; preds = %1831
  %1859 = landingpad { ptr, i32 }
          cleanup
  %1860 = extractvalue { ptr, i32 } %1859, 0
  store ptr %1860, ptr %15, align 8
  %1861 = extractvalue { ptr, i32 } %1859, 1
  store i32 %1861, ptr %16, align 4
  br label %1879

1862:                                             ; preds = %1833
  %1863 = landingpad { ptr, i32 }
          cleanup
  %1864 = extractvalue { ptr, i32 } %1863, 0
  store ptr %1864, ptr %15, align 8
  %1865 = extractvalue { ptr, i32 } %1863, 1
  store i32 %1865, ptr %16, align 4
  br label %1878

1866:                                             ; preds = %1836
  %1867 = landingpad { ptr, i32 }
          cleanup
  %1868 = extractvalue { ptr, i32 } %1867, 0
  store ptr %1868, ptr %15, align 8
  %1869 = extractvalue { ptr, i32 } %1867, 1
  store i32 %1869, ptr %16, align 4
  br label %1877

1870:                                             ; preds = %1854, %1845
  %1871 = landingpad { ptr, i32 }
          cleanup
  %1872 = extractvalue { ptr, i32 } %1871, 0
  store ptr %1872, ptr %15, align 8
  %1873 = extractvalue { ptr, i32 } %1871, 1
  store i32 %1873, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %172) #13
  br label %1877

1874:                                             ; preds = %1857, %1842, %1839
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #13
  call void @_ZN6Halide8Internal5BoundD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %169) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr %169) #13
  br label %1875

1875:                                             ; preds = %1874
  %1876 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %167) #13
  br label %1824

1877:                                             ; preds = %1870, %1866
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #13
  br label %1878

1878:                                             ; preds = %1877, %1862
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #13
  call void @_ZN6Halide8Internal5BoundD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %169) #13
  br label %1879

1879:                                             ; preds = %1878, %1858
  call void @llvm.lifetime.end.p0(i64 64, ptr %169) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #13
  br label %1880

1880:                                             ; preds = %1879, %1827
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #13
  br label %1961

1881:                                             ; preds = %1826
  call void @llvm.lifetime.start.p0(i64 4, ptr %173) #13
  store i32 0, ptr %173, align 4, !tbaa !49
  br label %1882

1882:                                             ; preds = %1935, %1881
  %1883 = load i32, ptr %173, align 4, !tbaa !49
  %1884 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %1885 unwind label %1888

1885:                                             ; preds = %1882
  %1886 = icmp slt i32 %1883, %1884
  br i1 %1886, label %1892, label %1887

1887:                                             ; preds = %1885
  store i32 41, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #13
  br label %1960

1888:                                             ; preds = %1882
  %1889 = landingpad { ptr, i32 }
          cleanup
  %1890 = extractvalue { ptr, i32 } %1889, 0
  store ptr %1890, ptr %15, align 8
  %1891 = extractvalue { ptr, i32 } %1889, 1
  store i32 %1891, ptr %16, align 4
  br label %1959

1892:                                             ; preds = %1885
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #13
  %1893 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %1894 unwind label %1938

1894:                                             ; preds = %1892
  %1895 = load i32, ptr %173, align 4, !tbaa !49
  %1896 = sext i32 %1895 to i64
  %1897 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1893, i64 noundef %1896) #13
  %1898 = invoke ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEE4findERSD_(ptr noundef nonnull align 8 dereferenceable(48) %158, ptr noundef nonnull align 8 dereferenceable(32) %1897)
          to label %1899 unwind label %1938

1899:                                             ; preds = %1894
  %1900 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %174, i32 0, i32 0
  store ptr %1898, ptr %1900, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #13
  %1901 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %158) #13
  %1902 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %175, i32 0, i32 0
  store ptr %1901, ptr %1902, align 8
  %1903 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanEEESF_(ptr noundef nonnull align 8 dereferenceable(8) %174, ptr noundef nonnull align 8 dereferenceable(8) %175) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr %176) #13
  store i1 false, ptr %178, align 1
  store i1 false, ptr %179, align 1
  br i1 %1903, label %1904, label %1905

1904:                                             ; preds = %1899
  br label %1922

1905:                                             ; preds = %1899
  call void @llvm.lifetime.start.p0(i64 384, ptr %177) #13
  store i1 true, ptr %178, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %177, ptr noundef @.str.14, i32 noundef 880, ptr noundef @.str.46, i32 noundef 1)
          to label %1906 unwind label %1942

1906:                                             ; preds = %1905
  store i1 true, ptr %179, align 1
  %1907 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %177)
          to label %1908 unwind label %1946

1908:                                             ; preds = %1906
  %1909 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA31_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1907, ptr noundef nonnull align 1 dereferenceable(31) @.str.47)
          to label %1910 unwind label %1946

1910:                                             ; preds = %1908
  %1911 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIiEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1909, ptr noundef nonnull align 4 dereferenceable(4) %173)
          to label %1912 unwind label %1946

1912:                                             ; preds = %1910
  %1913 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA6_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1911, ptr noundef nonnull align 1 dereferenceable(6) @.str.48)
          to label %1914 unwind label %1946

1914:                                             ; preds = %1912
  %1915 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %1916 unwind label %1946

1916:                                             ; preds = %1914
  %1917 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1913, ptr noundef nonnull align 8 dereferenceable(32) %1915)
          to label %1918 unwind label %1946

1918:                                             ; preds = %1916
  %1919 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1917, ptr noundef nonnull align 1 dereferenceable(2) @.str.49)
          to label %1920 unwind label %1946

1920:                                             ; preds = %1918
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %176, ptr noundef nonnull align 8 dereferenceable(380) %1919)
          to label %1921 unwind label %1946

1921:                                             ; preds = %1920
  br label %1922

1922:                                             ; preds = %1921, %1904
  %1923 = load i1, ptr %179, align 1
  br i1 %1923, label %1924, label %1926

1924:                                             ; preds = %1922
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %177)
          to label %1925 unwind label %1942

1925:                                             ; preds = %1924
  br label %1926

1926:                                             ; preds = %1925, %1922
  %1927 = load i1, ptr %178, align 1
  br i1 %1927, label %1928, label %1929

1928:                                             ; preds = %1926
  call void @llvm.lifetime.end.p0(i64 384, ptr %177) #13
  br label %1929

1929:                                             ; preds = %1928, %1926
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #13
  %1930 = load ptr, ptr %25, align 8, !tbaa !5
  %1931 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1930, i32 0, i32 4
  %1932 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %174) #13
  %1933 = getelementptr inbounds %"struct.std::pair.179", ptr %1932, i32 0, i32 1
  invoke void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %1931, ptr noundef nonnull align 8 dereferenceable(17) %1933)
          to label %1934 unwind label %1938

1934:                                             ; preds = %1929
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #13
  br label %1935

1935:                                             ; preds = %1934
  %1936 = load i32, ptr %173, align 4, !tbaa !49
  %1937 = add nsw i32 %1936, 1
  store i32 %1937, ptr %173, align 4, !tbaa !49
  br label %1882, !llvm.loop !112

1938:                                             ; preds = %1929, %1894, %1892
  %1939 = landingpad { ptr, i32 }
          cleanup
  %1940 = extractvalue { ptr, i32 } %1939, 0
  store ptr %1940, ptr %15, align 8
  %1941 = extractvalue { ptr, i32 } %1939, 1
  store i32 %1941, ptr %16, align 4
  br label %1958

1942:                                             ; preds = %1924, %1905
  %1943 = landingpad { ptr, i32 }
          cleanup
  %1944 = extractvalue { ptr, i32 } %1943, 0
  store ptr %1944, ptr %15, align 8
  %1945 = extractvalue { ptr, i32 } %1943, 1
  store i32 %1945, ptr %16, align 4
  br label %1954

1946:                                             ; preds = %1920, %1918, %1916, %1914, %1912, %1910, %1908, %1906
  %1947 = landingpad { ptr, i32 }
          cleanup
  %1948 = extractvalue { ptr, i32 } %1947, 0
  store ptr %1948, ptr %15, align 8
  %1949 = extractvalue { ptr, i32 } %1947, 1
  store i32 %1949, ptr %16, align 4
  %1950 = load i1, ptr %179, align 1
  br i1 %1950, label %1951, label %1953

1951:                                             ; preds = %1946
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %177)
          to label %1952 unwind label %2705

1952:                                             ; preds = %1951
  br label %1953

1953:                                             ; preds = %1952, %1946
  br label %1954

1954:                                             ; preds = %1953, %1942
  %1955 = load i1, ptr %178, align 1
  br i1 %1955, label %1956, label %1957

1956:                                             ; preds = %1954
  call void @llvm.lifetime.end.p0(i64 384, ptr %177) #13
  br label %1957

1957:                                             ; preds = %1956, %1954
  call void @llvm.lifetime.end.p0(i64 1, ptr %176) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #13
  br label %1958

1958:                                             ; preds = %1957, %1938
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #13
  br label %1959

1959:                                             ; preds = %1958, %1888
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #13
  br label %1961

1960:                                             ; preds = %1887
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %158) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %158) #13
  br label %1962

1961:                                             ; preds = %1959, %1880, %1812
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %158) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %158) #13
  br label %2350

1962:                                             ; preds = %1960, %1748
  %1963 = load i32, ptr %49, align 4, !tbaa !49
  %1964 = load ptr, ptr %50, align 8, !tbaa !5
  %1965 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1964, i32 0, i32 1
  store i32 %1963, ptr %1965, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #13
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %180, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %136)
          to label %1966 unwind label %1977

1966:                                             ; preds = %1962
  %1967 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(8) %180) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %180) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #13
  store ptr %86, ptr %181, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #13
  %1968 = load ptr, ptr %181, align 8, !tbaa !5
  %1969 = call ptr @_ZNSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalESt4lessIS7_ESaIS0_IKS7_SA_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1968) #13
  %1970 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.181", ptr %182, i32 0, i32 0
  store ptr %1969, ptr %1970, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #13
  %1971 = load ptr, ptr %181, align 8, !tbaa !5
  %1972 = call ptr @_ZNSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalESt4lessIS7_ESaIS0_IKS7_SA_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1971) #13
  %1973 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.181", ptr %183, i32 0, i32 0
  store ptr %1972, ptr %1973, align 8
  br label %1974

1974:                                             ; preds = %1999, %1966
  %1975 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKS0_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalEEESF_(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(8) %183) #13
  br i1 %1975, label %1981, label %1976

1976:                                             ; preds = %1974
  store i32 44, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #13
  br label %2010

1977:                                             ; preds = %1962
  %1978 = landingpad { ptr, i32 }
          cleanup
  %1979 = extractvalue { ptr, i32 } %1978, 0
  store ptr %1979, ptr %15, align 8
  %1980 = extractvalue { ptr, i32 } %1978, 1
  store i32 %1980, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #13
  br label %2350

1981:                                             ; preds = %1974
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #13
  %1982 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKS0_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %182) #13
  store ptr %1982, ptr %184, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #13
  %1983 = load ptr, ptr %184, align 8, !tbaa !5
  %1984 = getelementptr inbounds %"struct.std::pair.182", ptr %1983, i32 0, i32 1
  %1985 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1984, i32 0, i32 0
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %185, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %1985)
          to label %1986 unwind label %2001

1986:                                             ; preds = %1981
  %1987 = load ptr, ptr %184, align 8, !tbaa !5
  %1988 = getelementptr inbounds %"struct.std::pair.182", ptr %1987, i32 0, i32 1
  %1989 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1988, i32 0, i32 0
  %1990 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1989, ptr noundef nonnull align 8 dereferenceable(8) %185) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %185) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %186) #13
  %1991 = load ptr, ptr %184, align 8, !tbaa !5
  %1992 = getelementptr inbounds %"struct.std::pair.182", ptr %1991, i32 0, i32 1
  %1993 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1992, i32 0, i32 1
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %186, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %1993)
          to label %1994 unwind label %2005

1994:                                             ; preds = %1986
  %1995 = load ptr, ptr %184, align 8, !tbaa !5
  %1996 = getelementptr inbounds %"struct.std::pair.182", ptr %1995, i32 0, i32 1
  %1997 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %1996, i32 0, i32 1
  %1998 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1997, ptr noundef nonnull align 8 dereferenceable(8) %186) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #13
  br label %1999

1999:                                             ; preds = %1994
  %2000 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKS0_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %182) #13
  br label %1974

2001:                                             ; preds = %1981
  %2002 = landingpad { ptr, i32 }
          cleanup
  %2003 = extractvalue { ptr, i32 } %2002, 0
  store ptr %2003, ptr %15, align 8
  %2004 = extractvalue { ptr, i32 } %2002, 1
  store i32 %2004, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #13
  br label %2009

2005:                                             ; preds = %1986
  %2006 = landingpad { ptr, i32 }
          cleanup
  %2007 = extractvalue { ptr, i32 } %2006, 0
  store ptr %2007, ptr %15, align 8
  %2008 = extractvalue { ptr, i32 } %2006, 1
  store i32 %2008, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %186) #13
  br label %2009

2009:                                             ; preds = %2005, %2001
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #13
  br label %2350

2010:                                             ; preds = %1976
  call void @llvm.lifetime.start.p0(i64 1, ptr %187) #13
  store i8 0, ptr %187, align 1, !tbaa !111
  %2011 = load ptr, ptr %25, align 8, !tbaa !5
  %2012 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2011, i32 0, i32 1
  %2013 = invoke noundef zeroext i1 @_ZNK6Halide8Internal8Function21has_update_definitionEv(ptr noundef nonnull align 8 dereferenceable(24) %2012)
          to label %2014 unwind label %2058

2014:                                             ; preds = %2010
  %2015 = xor i1 %2013, true
  %2016 = load ptr, ptr %25, align 8, !tbaa !5
  %2017 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2016, i32 0, i32 16
  %2018 = zext i1 %2015 to i8
  store i8 %2018, ptr %2017, align 1, !tbaa !114
  %2019 = load ptr, ptr %25, align 8, !tbaa !5
  %2020 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2019, i32 0, i32 16
  %2021 = load i8, ptr %2020, align 1, !tbaa !114, !range !94, !noundef !95
  %2022 = trunc i8 %2021 to i1
  store i1 false, ptr %189, align 1
  store i1 false, ptr %191, align 1
  store i1 false, ptr %192, align 1
  store i1 false, ptr %193, align 1
  br i1 %2022, label %2023, label %2031

2023:                                             ; preds = %2014
  %2024 = load ptr, ptr %25, align 8, !tbaa !5
  %2025 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2024, i32 0, i32 1
  %2026 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %2025)
          to label %2027 unwind label %2058

2027:                                             ; preds = %2023
  call void @llvm.lifetime.start.p0(i64 32, ptr %188) #13
  store i1 true, ptr %189, align 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %190) #13
  store i1 true, ptr %191, align 1
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #13
  store i1 true, ptr %192, align 1
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %188, ptr noundef @.str.50, ptr noundef nonnull align 1 dereferenceable(1) %190)
          to label %2028 unwind label %2062

2028:                                             ; preds = %2027
  store i1 true, ptr %193, align 1
  %2029 = invoke noundef zeroext i1 @_ZN6Halide8Internal11starts_withERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr noundef nonnull align 8 dereferenceable(32) %2026, ptr noundef nonnull align 8 dereferenceable(32) %188)
          to label %2030 unwind label %2066

2030:                                             ; preds = %2028
  br label %2031

2031:                                             ; preds = %2030, %2014
  %2032 = phi i1 [ false, %2014 ], [ %2029, %2030 ]
  %2033 = load ptr, ptr %25, align 8, !tbaa !5
  %2034 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2033, i32 0, i32 17
  %2035 = zext i1 %2032 to i8
  store i8 %2035, ptr %2034, align 4, !tbaa !115
  %2036 = load i1, ptr %193, align 1
  br i1 %2036, label %2037, label %2038

2037:                                             ; preds = %2031
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #13
  br label %2038

2038:                                             ; preds = %2037, %2031
  %2039 = load i1, ptr %192, align 1
  br i1 %2039, label %2040, label %2041

2040:                                             ; preds = %2038
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #13
  br label %2041

2041:                                             ; preds = %2040, %2038
  %2042 = load i1, ptr %191, align 1
  br i1 %2042, label %2043, label %2044

2043:                                             ; preds = %2041
  call void @llvm.lifetime.end.p0(i64 1, ptr %190) #13
  br label %2044

2044:                                             ; preds = %2043, %2041
  %2045 = load i1, ptr %189, align 1
  br i1 %2045, label %2046, label %2047

2046:                                             ; preds = %2044
  call void @llvm.lifetime.end.p0(i64 32, ptr %188) #13
  br label %2047

2047:                                             ; preds = %2046, %2044
  call void @llvm.lifetime.start.p0(i64 48, ptr %194) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull align 8 dereferenceable(8) %136) #13
  invoke void @_ZN6Halide8Internal14boxes_requiredENS_4ExprERKNS0_5ScopeINS0_8IntervalEEERKSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiES3_St4lessISF_ESaIS8_IKSF_S3_EEE(ptr dead_on_unwind writable sret(%"class.std::map.186") align 8 %194, ptr noundef %195, ptr noundef nonnull align 8 dereferenceable(56) %57, ptr noundef nonnull align 8 dereferenceable(48) %86)
          to label %2048 unwind label %2083

2048:                                             ; preds = %2047
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %196) #13
  store ptr %194, ptr %196, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %197) #13
  %2049 = load ptr, ptr %196, align 8, !tbaa !5
  %2050 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxESt4lessIS5_ESaISt4pairIKS5_S8_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %2049) #13
  %2051 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.191", ptr %197, i32 0, i32 0
  store ptr %2050, ptr %2051, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %198) #13
  %2052 = load ptr, ptr %196, align 8, !tbaa !5
  %2053 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxESt4lessIS5_ESaISt4pairIKS5_S8_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %2052) #13
  %2054 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.191", ptr %198, i32 0, i32 0
  store ptr %2053, ptr %2054, align 8
  br label %2055

2055:                                             ; preds = %2304, %2048
  %2056 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxEEESE_(ptr noundef nonnull align 8 dereferenceable(8) %197, ptr noundef nonnull align 8 dereferenceable(8) %198) #13
  br i1 %2056, label %2087, label %2057

2057:                                             ; preds = %2055
  store i32 46, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %197) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #13
  br label %2307

2058:                                             ; preds = %2023, %2010
  %2059 = landingpad { ptr, i32 }
          cleanup
  %2060 = extractvalue { ptr, i32 } %2059, 0
  store ptr %2060, ptr %15, align 8
  %2061 = extractvalue { ptr, i32 } %2059, 1
  store i32 %2061, ptr %16, align 4
  br label %2349

2062:                                             ; preds = %2027
  %2063 = landingpad { ptr, i32 }
          cleanup
  %2064 = extractvalue { ptr, i32 } %2063, 0
  store ptr %2064, ptr %15, align 8
  %2065 = extractvalue { ptr, i32 } %2063, 1
  store i32 %2065, ptr %16, align 4
  br label %2073

2066:                                             ; preds = %2028
  %2067 = landingpad { ptr, i32 }
          cleanup
  %2068 = extractvalue { ptr, i32 } %2067, 0
  store ptr %2068, ptr %15, align 8
  %2069 = extractvalue { ptr, i32 } %2067, 1
  store i32 %2069, ptr %16, align 4
  %2070 = load i1, ptr %193, align 1
  br i1 %2070, label %2071, label %2072

2071:                                             ; preds = %2066
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %188) #13
  br label %2072

2072:                                             ; preds = %2071, %2066
  br label %2073

2073:                                             ; preds = %2072, %2062
  %2074 = load i1, ptr %192, align 1
  br i1 %2074, label %2075, label %2076

2075:                                             ; preds = %2073
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %190) #13
  br label %2076

2076:                                             ; preds = %2075, %2073
  %2077 = load i1, ptr %191, align 1
  br i1 %2077, label %2078, label %2079

2078:                                             ; preds = %2076
  call void @llvm.lifetime.end.p0(i64 1, ptr %190) #13
  br label %2079

2079:                                             ; preds = %2078, %2076
  %2080 = load i1, ptr %189, align 1
  br i1 %2080, label %2081, label %2082

2081:                                             ; preds = %2079
  call void @llvm.lifetime.end.p0(i64 32, ptr %188) #13
  br label %2082

2082:                                             ; preds = %2081, %2079
  br label %2349

2083:                                             ; preds = %2047
  %2084 = landingpad { ptr, i32 }
          cleanup
  %2085 = extractvalue { ptr, i32 } %2084, 0
  store ptr %2085, ptr %15, align 8
  %2086 = extractvalue { ptr, i32 } %2084, 1
  store i32 %2086, ptr %16, align 4
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %195) #13
  br label %2348

2087:                                             ; preds = %2055
  call void @llvm.lifetime.start.p0(i64 8, ptr %199) #13
  %2088 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %197) #13
  store ptr %2088, ptr %199, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #13
  %2089 = load ptr, ptr %199, align 8, !tbaa !5
  %2090 = getelementptr inbounds %"struct.std::pair.192", ptr %2089, i32 0, i32 0
  %2091 = invoke ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_(ptr noundef nonnull align 8 dereferenceable(48) %9, ptr noundef nonnull align 8 dereferenceable(32) %2090)
          to label %2092 unwind label %2129

2092:                                             ; preds = %2087
  %2093 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.199", ptr %200, i32 0, i32 0
  store ptr %2091, ptr %2093, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #13
  %2094 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %9) #13
  %2095 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.199", ptr %201, i32 0, i32 0
  store ptr %2094, ptr %2095, align 8
  %2096 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionEEESE_(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef nonnull align 8 dereferenceable(8) %201) #13
  br i1 %2096, label %2097, label %2103

2097:                                             ; preds = %2092
  %2098 = load ptr, ptr %199, align 8, !tbaa !5
  %2099 = getelementptr inbounds %"struct.std::pair.192", ptr %2098, i32 0, i32 0
  %2100 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %2101 unwind label %2133

2101:                                             ; preds = %2097
  %2102 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_(ptr noundef nonnull align 8 dereferenceable(32) %2099, ptr noundef nonnull align 8 dereferenceable(32) %2100) #13
  br label %2103

2103:                                             ; preds = %2101, %2092
  %2104 = phi i1 [ false, %2092 ], [ %2102, %2101 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #13
  br i1 %2104, label %2105, label %2303

2105:                                             ; preds = %2103
  call void @llvm.lifetime.start.p0(i64 72, ptr %202) #13
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %202) #13
  %2106 = load ptr, ptr %50, align 8, !tbaa !5
  %2107 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 2
  store ptr %2106, ptr %2107, align 8, !tbaa !116
  %2108 = load ptr, ptr %199, align 8, !tbaa !5
  %2109 = getelementptr inbounds %"struct.std::pair.192", ptr %2108, i32 0, i32 0
  %2110 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEEixERSC_(ptr noundef nonnull align 8 dereferenceable(48) %9, ptr noundef nonnull align 8 dereferenceable(32) %2109)
          to label %2111 unwind label %2137

2111:                                             ; preds = %2105
  %2112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEE2atERS9_(ptr noundef nonnull align 8 dereferenceable(48) %19, ptr noundef nonnull align 8 dereferenceable(24) %2110)
          to label %2113 unwind label %2137

2113:                                             ; preds = %2111
  %2114 = load ptr, ptr %2112, align 8, !tbaa !5
  %2115 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 1
  store ptr %2114, ptr %2115, align 8, !tbaa !126
  %2116 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 4
  store i8 1, ptr %2116, align 4, !tbaa !127
  call void @llvm.lifetime.start.p0(i64 8, ptr %203) #13
  %2117 = load ptr, ptr %199, align 8, !tbaa !5
  %2118 = getelementptr inbounds %"struct.std::pair.192", ptr %2117, i32 0, i32 1
  %2119 = getelementptr inbounds %"struct.Halide::Internal::Box", ptr %2118, i32 0, i32 1
  store ptr %2119, ptr %203, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #13
  %2120 = load ptr, ptr %203, align 8, !tbaa !5
  %2121 = call ptr @_ZNSt6vectorIN6Halide8Internal8IntervalESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2120) #13
  %2122 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.200", ptr %204, i32 0, i32 0
  store ptr %2121, ptr %2122, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %205) #13
  %2123 = load ptr, ptr %203, align 8, !tbaa !5
  %2124 = call ptr @_ZNSt6vectorIN6Halide8Internal8IntervalESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2123) #13
  %2125 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.200", ptr %205, i32 0, i32 0
  store ptr %2124, ptr %2125, align 8
  br label %2126

2126:                                             ; preds = %2229, %2113
  %2127 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal8IntervalESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull align 8 dereferenceable(8) %205) #13
  br i1 %2127, label %2141, label %2128

2128:                                             ; preds = %2126
  store i32 48, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #13
  br label %2276

2129:                                             ; preds = %2087
  %2130 = landingpad { ptr, i32 }
          cleanup
  %2131 = extractvalue { ptr, i32 } %2130, 0
  store ptr %2131, ptr %15, align 8
  %2132 = extractvalue { ptr, i32 } %2130, 1
  store i32 %2132, ptr %16, align 4
  br label %2306

2133:                                             ; preds = %2097
  %2134 = landingpad { ptr, i32 }
          cleanup
  %2135 = extractvalue { ptr, i32 } %2134, 0
  store ptr %2135, ptr %15, align 8
  %2136 = extractvalue { ptr, i32 } %2134, 1
  store i32 %2136, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #13
  br label %2306

2137:                                             ; preds = %2284, %2282, %2276, %2111, %2105
  %2138 = landingpad { ptr, i32 }
          cleanup
  %2139 = extractvalue { ptr, i32 } %2138, 0
  store ptr %2139, ptr %15, align 8
  %2140 = extractvalue { ptr, i32 } %2138, 1
  store i32 %2140, ptr %16, align 4
  br label %2302

2141:                                             ; preds = %2126
  call void @llvm.lifetime.start.p0(i64 8, ptr %206) #13
  %2142 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal8IntervalESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %204) #13
  store ptr %2142, ptr %206, align 8, !tbaa !5
  %2143 = load ptr, ptr %206, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %207) #13
  store i1 false, ptr %209, align 1
  store i1 false, ptr %210, align 1
  %2144 = invoke noundef zeroext i1 @_ZNK6Halide8Internal8Interval10is_boundedEv(ptr noundef nonnull align 8 dereferenceable(16) %2143)
          to label %2145 unwind label %2231

2145:                                             ; preds = %2141
  br i1 %2144, label %2146, label %2147

2146:                                             ; preds = %2145
  br label %2170

2147:                                             ; preds = %2145
  call void @llvm.lifetime.start.p0(i64 384, ptr %208) #13
  store i1 true, ptr %209, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %208, ptr noundef @.str.14, i32 noundef 916, ptr noundef @.str.35, i32 noundef 0)
          to label %2148 unwind label %2235

2148:                                             ; preds = %2147
  store i1 true, ptr %210, align 1
  %2149 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %208)
          to label %2150 unwind label %2239

2150:                                             ; preds = %2148
  %2151 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA44_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2149, ptr noundef nonnull align 1 dereferenceable(44) @.str.51)
          to label %2152 unwind label %2239

2152:                                             ; preds = %2150
  %2153 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 1
  %2154 = load ptr, ptr %2153, align 8, !tbaa !126
  %2155 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2154, i32 0, i32 1
  %2156 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %2155)
          to label %2157 unwind label %2239

2157:                                             ; preds = %2152
  %2158 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2151, ptr noundef nonnull align 8 dereferenceable(32) %2156)
          to label %2159 unwind label %2239

2159:                                             ; preds = %2157
  %2160 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA5_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2158, ptr noundef nonnull align 1 dereferenceable(5) @.str.52)
          to label %2161 unwind label %2239

2161:                                             ; preds = %2159
  %2162 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 2
  %2163 = load ptr, ptr %2162, align 8, !tbaa !116
  %2164 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2163, i32 0, i32 7
  %2165 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2160, ptr noundef nonnull align 8 dereferenceable(32) %2164)
          to label %2166 unwind label %2239

2166:                                             ; preds = %2161
  %2167 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2165, ptr noundef nonnull align 1 dereferenceable(2) @.str.8)
          to label %2168 unwind label %2239

2168:                                             ; preds = %2166
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %207, ptr noundef nonnull align 8 dereferenceable(380) %2167)
          to label %2169 unwind label %2239

2169:                                             ; preds = %2168
  br label %2170

2170:                                             ; preds = %2169, %2146
  %2171 = load i1, ptr %210, align 1
  br i1 %2171, label %2172, label %2174

2172:                                             ; preds = %2170
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %208)
          to label %2173 unwind label %2235

2173:                                             ; preds = %2172
  br label %2174

2174:                                             ; preds = %2173, %2170
  %2175 = load i1, ptr %209, align 1
  br i1 %2175, label %2176, label %2177

2176:                                             ; preds = %2174
  call void @llvm.lifetime.end.p0(i64 384, ptr %208) #13
  br label %2177

2177:                                             ; preds = %2176, %2174
  call void @llvm.lifetime.end.p0(i64 1, ptr %207) #13
  call void @llvm.lifetime.start.p0(i64 40, ptr %211) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %212) #13
  %2178 = load ptr, ptr %206, align 8, !tbaa !5
  %2179 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %2178, i32 0, i32 0
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull align 8 dereferenceable(8) %2179) #13
  %2180 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %2181 unwind label %2251

2181:                                             ; preds = %2177
  %2182 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %2183 unwind label %2251

2183:                                             ; preds = %2181
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %212, ptr noundef %213, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %2180, ptr noundef nonnull align 8 dereferenceable(56) %2182)
          to label %2184 unwind label %2251

2184:                                             ; preds = %2183
  %2185 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 2
  %2186 = load ptr, ptr %2185, align 8, !tbaa !116
  invoke void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoC1ERKNS_4ExprERKNS2_4Node5StageE(ptr noundef nonnull align 8 dereferenceable(34) %211, ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull align 8 dereferenceable(1368) %2186)
          to label %2187 unwind label %2255

2187:                                             ; preds = %2184
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #13
  call void @llvm.lifetime.start.p0(i64 40, ptr %214) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %215) #13
  %2188 = load ptr, ptr %206, align 8, !tbaa !5
  %2189 = getelementptr inbounds %"struct.Halide::Internal::Interval", ptr %2188, i32 0, i32 1
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef nonnull align 8 dereferenceable(8) %2189) #13
  %2190 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %2191 unwind label %2260

2191:                                             ; preds = %2187
  %2192 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %2193 unwind label %2260

2193:                                             ; preds = %2191
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8 %215, ptr noundef %216, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %2190, ptr noundef nonnull align 8 dereferenceable(56) %2192)
          to label %2194 unwind label %2260

2194:                                             ; preds = %2193
  %2195 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 2
  %2196 = load ptr, ptr %2195, align 8, !tbaa !116
  invoke void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoC1ERKNS_4ExprERKNS2_4Node5StageE(ptr noundef nonnull align 8 dereferenceable(34) %214, ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull align 8 dereferenceable(1368) %2196)
          to label %2197 unwind label %2264

2197:                                             ; preds = %2194
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #13
  %2198 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 0
  %2199 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE12emplace_backIJS6_S6_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %2198, ptr noundef nonnull align 8 dereferenceable(34) %211, ptr noundef nonnull align 8 dereferenceable(34) %214)
          to label %2200 unwind label %2269

2200:                                             ; preds = %2197
  %2201 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 0
  %2202 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %2201) #13
  %2203 = getelementptr inbounds %"struct.std::pair", ptr %2202, i32 0, i32 0
  %2204 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %2203, i32 0, i32 4
  %2205 = load i8, ptr %2204, align 8, !tbaa !128, !range !94, !noundef !95
  %2206 = trunc i8 %2205 to i1
  %2207 = zext i1 %2206 to i32
  %2208 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 4
  %2209 = load i8, ptr %2208, align 4, !tbaa !127, !range !94, !noundef !95
  %2210 = trunc i8 %2209 to i1
  %2211 = zext i1 %2210 to i32
  %2212 = and i32 %2211, %2207
  %2213 = icmp ne i32 %2212, 0
  %2214 = zext i1 %2213 to i8
  store i8 %2214, ptr %2208, align 4, !tbaa !127
  %2215 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 0
  %2216 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %2215) #13
  %2217 = getelementptr inbounds %"struct.std::pair", ptr %2216, i32 0, i32 1
  %2218 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", ptr %2217, i32 0, i32 4
  %2219 = load i8, ptr %2218, align 8, !tbaa !131, !range !94, !noundef !95
  %2220 = trunc i8 %2219 to i1
  %2221 = zext i1 %2220 to i32
  %2222 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 4
  %2223 = load i8, ptr %2222, align 4, !tbaa !127, !range !94, !noundef !95
  %2224 = trunc i8 %2223 to i1
  %2225 = zext i1 %2224 to i32
  %2226 = and i32 %2225, %2221
  %2227 = icmp ne i32 %2226, 0
  %2228 = zext i1 %2227 to i8
  store i8 %2228, ptr %2222, align 4, !tbaa !127
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(34) %214) #13
  call void @llvm.lifetime.end.p0(i64 40, ptr %214) #13
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(34) %211) #13
  call void @llvm.lifetime.end.p0(i64 40, ptr %211) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #13
  br label %2229

2229:                                             ; preds = %2200
  %2230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal8IntervalESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %204) #13
  br label %2126

2231:                                             ; preds = %2141
  %2232 = landingpad { ptr, i32 }
          cleanup
  %2233 = extractvalue { ptr, i32 } %2232, 0
  store ptr %2233, ptr %15, align 8
  %2234 = extractvalue { ptr, i32 } %2232, 1
  store i32 %2234, ptr %16, align 4
  br label %2275

2235:                                             ; preds = %2172, %2147
  %2236 = landingpad { ptr, i32 }
          cleanup
  %2237 = extractvalue { ptr, i32 } %2236, 0
  store ptr %2237, ptr %15, align 8
  %2238 = extractvalue { ptr, i32 } %2236, 1
  store i32 %2238, ptr %16, align 4
  br label %2247

2239:                                             ; preds = %2168, %2166, %2161, %2159, %2157, %2152, %2150, %2148
  %2240 = landingpad { ptr, i32 }
          cleanup
  %2241 = extractvalue { ptr, i32 } %2240, 0
  store ptr %2241, ptr %15, align 8
  %2242 = extractvalue { ptr, i32 } %2240, 1
  store i32 %2242, ptr %16, align 4
  %2243 = load i1, ptr %210, align 1
  br i1 %2243, label %2244, label %2246

2244:                                             ; preds = %2239
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %208)
          to label %2245 unwind label %2705

2245:                                             ; preds = %2244
  br label %2246

2246:                                             ; preds = %2245, %2239
  br label %2247

2247:                                             ; preds = %2246, %2235
  %2248 = load i1, ptr %209, align 1
  br i1 %2248, label %2249, label %2250

2249:                                             ; preds = %2247
  call void @llvm.lifetime.end.p0(i64 384, ptr %208) #13
  br label %2250

2250:                                             ; preds = %2249, %2247
  call void @llvm.lifetime.end.p0(i64 1, ptr %207) #13
  br label %2275

2251:                                             ; preds = %2183, %2181, %2177
  %2252 = landingpad { ptr, i32 }
          cleanup
  %2253 = extractvalue { ptr, i32 } %2252, 0
  store ptr %2253, ptr %15, align 8
  %2254 = extractvalue { ptr, i32 } %2252, 1
  store i32 %2254, ptr %16, align 4
  br label %2259

2255:                                             ; preds = %2184
  %2256 = landingpad { ptr, i32 }
          cleanup
  %2257 = extractvalue { ptr, i32 } %2256, 0
  store ptr %2257, ptr %15, align 8
  %2258 = extractvalue { ptr, i32 } %2256, 1
  store i32 %2258, ptr %16, align 4
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %212) #13
  br label %2259

2259:                                             ; preds = %2255, %2251
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %213) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #13
  br label %2274

2260:                                             ; preds = %2193, %2191, %2187
  %2261 = landingpad { ptr, i32 }
          cleanup
  %2262 = extractvalue { ptr, i32 } %2261, 0
  store ptr %2262, ptr %15, align 8
  %2263 = extractvalue { ptr, i32 } %2261, 1
  store i32 %2263, ptr %16, align 4
  br label %2268

2264:                                             ; preds = %2194
  %2265 = landingpad { ptr, i32 }
          cleanup
  %2266 = extractvalue { ptr, i32 } %2265, 0
  store ptr %2266, ptr %15, align 8
  %2267 = extractvalue { ptr, i32 } %2265, 1
  store i32 %2267, ptr %16, align 4
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %215) #13
  br label %2268

2268:                                             ; preds = %2264, %2260
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #13
  br label %2273

2269:                                             ; preds = %2197
  %2270 = landingpad { ptr, i32 }
          cleanup
  %2271 = extractvalue { ptr, i32 } %2270, 0
  store ptr %2271, ptr %15, align 8
  %2272 = extractvalue { ptr, i32 } %2270, 1
  store i32 %2272, ptr %16, align 4
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(34) %214) #13
  br label %2273

2273:                                             ; preds = %2269, %2268
  call void @llvm.lifetime.end.p0(i64 40, ptr %214) #13
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(34) %211) #13
  br label %2274

2274:                                             ; preds = %2273, %2259
  call void @llvm.lifetime.end.p0(i64 40, ptr %211) #13
  br label %2275

2275:                                             ; preds = %2274, %2250, %2231
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #13
  br label %2302

2276:                                             ; preds = %2128
  %2277 = getelementptr inbounds %class.CheckTypes, ptr %143, i32 0, i32 5
  %2278 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 1
  %2279 = load ptr, ptr %2278, align 8, !tbaa !126
  %2280 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2279, i32 0, i32 1
  %2281 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %2280)
          to label %2282 unwind label %2137

2282:                                             ; preds = %2276
  %2283 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS5_ESaISt4pairIKS5_iEEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48) %2277, ptr noundef nonnull align 8 dereferenceable(32) %2281)
          to label %2284 unwind label %2137

2284:                                             ; preds = %2282
  %2285 = load i32, ptr %2283, align 4, !tbaa !49
  %2286 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %202, i32 0, i32 3
  store i32 %2285, ptr %2286, align 8, !tbaa !132
  store i8 1, ptr %187, align 1, !tbaa !111
  %2287 = getelementptr inbounds %class.CheckTypes, ptr %143, i32 0, i32 2
  %2288 = load i8, ptr %2287, align 8, !tbaa !133, !range !94, !noundef !95
  %2289 = trunc i8 %2288 to i1
  %2290 = zext i1 %2289 to i32
  %2291 = load ptr, ptr %25, align 8, !tbaa !5
  %2292 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2291, i32 0, i32 16
  %2293 = load i8, ptr %2292, align 1, !tbaa !114, !range !94, !noundef !95
  %2294 = trunc i8 %2293 to i1
  %2295 = zext i1 %2294 to i32
  %2296 = and i32 %2295, %2290
  %2297 = icmp ne i32 %2296, 0
  %2298 = zext i1 %2297 to i8
  store i8 %2298, ptr %2292, align 1, !tbaa !114
  %2299 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 1
  %2300 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EE12emplace_backIJS4_EEERS4_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %2299, ptr noundef nonnull align 8 dereferenceable(72) %202)
          to label %2301 unwind label %2137

2301:                                             ; preds = %2284
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %202) #13
  call void @llvm.lifetime.end.p0(i64 72, ptr %202) #13
  br label %2303

2302:                                             ; preds = %2275, %2137
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %202) #13
  call void @llvm.lifetime.end.p0(i64 72, ptr %202) #13
  br label %2306

2303:                                             ; preds = %2301, %2103
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #13
  br label %2304

2304:                                             ; preds = %2303
  %2305 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %197) #13
  br label %2055

2306:                                             ; preds = %2302, %2133, %2129
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %197) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #13
  br label %2347

2307:                                             ; preds = %2057
  %2308 = load ptr, ptr %25, align 8, !tbaa !5
  %2309 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2308, i32 0, i32 1
  %2310 = invoke noundef ptr @_ZNK6Halide8Internal8Function10is_wrapperEv(ptr noundef nonnull align 8 dereferenceable(24) %2309)
          to label %2311 unwind label %2343

2311:                                             ; preds = %2307
  %2312 = icmp ne ptr %2310, null
  %2313 = load ptr, ptr %25, align 8, !tbaa !5
  %2314 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2313, i32 0, i32 13
  %2315 = zext i1 %2312 to i8
  store i8 %2315, ptr %2314, align 8, !tbaa !146
  %2316 = load ptr, ptr %25, align 8, !tbaa !5
  %2317 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2316, i32 0, i32 1
  %2318 = invoke noundef zeroext i1 @_ZNK6Halide8Internal8Function21has_update_definitionEv(ptr noundef nonnull align 8 dereferenceable(24) %2317)
          to label %2319 unwind label %2343

2319:                                             ; preds = %2311
  br i1 %2318, label %2329, label %2320

2320:                                             ; preds = %2319
  %2321 = load ptr, ptr %25, align 8, !tbaa !5
  %2322 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2321, i32 0, i32 13
  %2323 = load i8, ptr %2322, align 8, !tbaa !146, !range !94, !noundef !95
  %2324 = trunc i8 %2323 to i1
  br i1 %2324, label %2325, label %2329

2325:                                             ; preds = %2320
  %2326 = load i8, ptr %187, align 1, !tbaa !111, !range !94, !noundef !95
  %2327 = trunc i8 %2326 to i1
  %2328 = xor i1 %2327, true
  br label %2329

2329:                                             ; preds = %2325, %2320, %2319
  %2330 = phi i1 [ false, %2320 ], [ false, %2319 ], [ %2328, %2325 ]
  %2331 = load ptr, ptr %25, align 8, !tbaa !5
  %2332 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2331, i32 0, i32 14
  %2333 = zext i1 %2330 to i8
  store i8 %2333, ptr %2332, align 1, !tbaa !147
  %2334 = load ptr, ptr %25, align 8, !tbaa !5
  %2335 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2334, i32 0, i32 1
  %2336 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %2335)
          to label %2337 unwind label %2343

2337:                                             ; preds = %2329
  %2338 = load ptr, ptr %25, align 8, !tbaa !5
  %2339 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2338, i32 0, i32 12
  store i32 %2336, ptr %2339, align 4, !tbaa !148
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxESt4lessIS5_ESaISt4pairIKS5_S8_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %194) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %194) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %187) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %145) #13
  call void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN10CheckTypesD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %143) #13
  call void @llvm.lifetime.end.p0(i64 104, ptr %143) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #13
  call void @_ZNSt6vectorIN6Halide4ExprESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %130) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %130) #13
  call void @_ZNSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalESt4lessIS7_ESaIS0_IKS7_SA_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %86) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %86) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %57) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr %57) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %56) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr %56) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  br label %2340

2340:                                             ; preds = %2337
  %2341 = load i32, ptr %49, align 4, !tbaa !49
  %2342 = add nsw i32 %2341, 1
  store i32 %2342, ptr %49, align 4, !tbaa !49
  br label %576, !llvm.loop !149

2343:                                             ; preds = %2329, %2311, %2307
  %2344 = landingpad { ptr, i32 }
          cleanup
  %2345 = extractvalue { ptr, i32 } %2344, 0
  store ptr %2345, ptr %15, align 8
  %2346 = extractvalue { ptr, i32 } %2344, 1
  store i32 %2346, ptr %16, align 4
  br label %2347

2347:                                             ; preds = %2343, %2306
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxESt4lessIS5_ESaISt4pairIKS5_S8_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %194) #13
  br label %2348

2348:                                             ; preds = %2347, %2083
  call void @llvm.lifetime.end.p0(i64 48, ptr %194) #13
  br label %2349

2349:                                             ; preds = %2348, %2082, %2058
  call void @llvm.lifetime.end.p0(i64 1, ptr %187) #13
  br label %2350

2350:                                             ; preds = %2349, %2009, %1977, %1961, %1744, %1699, %1675
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #13
  br label %2351

2351:                                             ; preds = %2350, %1618
  call void @llvm.lifetime.end.p0(i64 16, ptr %145) #13
  br label %2352

2352:                                             ; preds = %2351, %1614
  call void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN10CheckTypesD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %143) #13
  br label %2353

2353:                                             ; preds = %2352, %1610
  call void @llvm.lifetime.end.p0(i64 104, ptr %143) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #13
  br label %2354

2354:                                             ; preds = %2353, %1609, %1597
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #13
  br label %2355

2355:                                             ; preds = %2354, %1556, %1552
  call void @_ZNSt6vectorIN6Halide4ExprESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %130) #13
  br label %2356

2356:                                             ; preds = %2355, %1548
  call void @llvm.lifetime.end.p0(i64 24, ptr %130) #13
  br label %2357

2357:                                             ; preds = %2356, %1511, %1304, %1246, %993, %976
  call void @_ZNSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalESt4lessIS7_ESaIS0_IKS7_SA_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %86) #13
  br label %2358

2358:                                             ; preds = %2357, %873
  call void @llvm.lifetime.end.p0(i64 48, ptr %86) #13
  br label %2359

2359:                                             ; preds = %2358, %854, %680
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %57) #13
  br label %2360

2360:                                             ; preds = %2359, %676
  call void @llvm.lifetime.end.p0(i64 56, ptr %57) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %56) #13
  br label %2361

2361:                                             ; preds = %2360, %672
  call void @llvm.lifetime.end.p0(i64 56, ptr %56) #13
  br label %2362

2362:                                             ; preds = %2361, %668
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #13
  br label %2363

2363:                                             ; preds = %2362, %664
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #13
  br label %2364

2364:                                             ; preds = %2363, %631, %614
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #13
  br label %2365

2365:                                             ; preds = %2364, %584
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #13
  br label %2370

2366:                                             ; preds = %583
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr %27) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  br label %2367

2367:                                             ; preds = %2366
  %2368 = load i64, ptr %23, align 8, !tbaa !9
  %2369 = add i64 %2368, -1
  store i64 %2369, ptr %23, align 8, !tbaa !9
  br label %352, !llvm.loop !150

2370:                                             ; preds = %2365, %574
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #13
  br label %2371

2371:                                             ; preds = %2370, %509
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #13
  br label %2372

2372:                                             ; preds = %2371, %494
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #13
  br label %2373

2373:                                             ; preds = %2372, %371
  call void @llvm.lifetime.end.p0(i64 56, ptr %27) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #13
  br label %2694

2374:                                             ; preds = %355
  call void @llvm.lifetime.start.p0(i64 8, ptr %217) #13
  %2375 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  store ptr %2375, ptr %217, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %218) #13
  %2376 = load ptr, ptr %217, align 8, !tbaa !5
  %2377 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2376) #13
  %2378 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.201", ptr %218, i32 0, i32 0
  store ptr %2377, ptr %2378, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #13
  %2379 = load ptr, ptr %217, align 8, !tbaa !5
  %2380 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2379) #13
  %2381 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.201", ptr %219, i32 0, i32 0
  store ptr %2380, ptr %2381, align 8
  br label %2382

2382:                                             ; preds = %2451, %2374
  %2383 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull align 8 dereferenceable(8) %219) #13
  br i1 %2383, label %2385, label %2384

2384:                                             ; preds = %2382
  store i32 50, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %217) #13
  br label %2455

2385:                                             ; preds = %2382
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #13
  %2386 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %218) #13
  store ptr %2386, ptr %220, align 8, !tbaa !5
  %2387 = load ptr, ptr %220, align 8, !tbaa !5
  %2388 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2387, i32 0, i32 18
  %2389 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 88) #14
          to label %2390 unwind label %2421

2390:                                             ; preds = %2385
  call void @_ZN6Halide8Internal13Autoscheduler13BoundContents6LayoutC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %2389) #13
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE5resetEPS4_(ptr noundef nonnull align 8 dereferenceable(8) %2388, ptr noundef %2389) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %221) #13
  %2391 = load ptr, ptr %220, align 8, !tbaa !5
  %2392 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2391, i32 0, i32 18
  %2393 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2392) #13
  store ptr %2393, ptr %221, align 8, !tbaa !5
  %2394 = load ptr, ptr %220, align 8, !tbaa !5
  %2395 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2394, i32 0, i32 1
  %2396 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %2395)
          to label %2397 unwind label %2425

2397:                                             ; preds = %2390
  %2398 = load ptr, ptr %221, align 8, !tbaa !5
  %2399 = getelementptr inbounds %"class.Halide::Internal::Autoscheduler::BoundContents::Layout", ptr %2398, i32 0, i32 4
  store i32 %2396, ptr %2399, align 4, !tbaa !151
  %2400 = load ptr, ptr %221, align 8, !tbaa !5
  %2401 = getelementptr inbounds %"class.Halide::Internal::Autoscheduler::BoundContents::Layout", ptr %2400, i32 0, i32 4
  %2402 = load i32, ptr %2401, align 4, !tbaa !151
  %2403 = load ptr, ptr %220, align 8, !tbaa !5
  %2404 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2403, i32 0, i32 1
  %2405 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %2404)
          to label %2406 unwind label %2425

2406:                                             ; preds = %2397
  %2407 = add nsw i32 %2402, %2405
  %2408 = load ptr, ptr %221, align 8, !tbaa !5
  %2409 = getelementptr inbounds %"class.Halide::Internal::Autoscheduler::BoundContents::Layout", ptr %2408, i32 0, i32 3
  store i32 %2407, ptr %2409, align 8, !tbaa !165
  call void @llvm.lifetime.start.p0(i64 8, ptr %222) #13
  %2410 = load ptr, ptr %220, align 8, !tbaa !5
  %2411 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2410, i32 0, i32 7
  store ptr %2411, ptr %222, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #13
  %2412 = load ptr, ptr %222, align 8, !tbaa !5
  %2413 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2412) #13
  %2414 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.202", ptr %223, i32 0, i32 0
  store ptr %2413, ptr %2414, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #13
  %2415 = load ptr, ptr %222, align 8, !tbaa !5
  %2416 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2415) #13
  %2417 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.202", ptr %224, i32 0, i32 0
  store ptr %2416, ptr %2417, align 8
  br label %2418

2418:                                             ; preds = %2444, %2406
  %2419 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %223, ptr noundef nonnull align 8 dereferenceable(8) %224) #13
  br i1 %2419, label %2429, label %2420

2420:                                             ; preds = %2418
  store i32 52, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #13
  br label %2450

2421:                                             ; preds = %2385
  %2422 = landingpad { ptr, i32 }
          cleanup
  %2423 = extractvalue { ptr, i32 } %2422, 0
  store ptr %2423, ptr %15, align 8
  %2424 = extractvalue { ptr, i32 } %2422, 1
  store i32 %2424, ptr %16, align 4
  br label %2454

2425:                                             ; preds = %2397, %2390
  %2426 = landingpad { ptr, i32 }
          cleanup
  %2427 = extractvalue { ptr, i32 } %2426, 0
  store ptr %2427, ptr %15, align 8
  %2428 = extractvalue { ptr, i32 } %2426, 1
  store i32 %2428, ptr %16, align 4
  br label %2453

2429:                                             ; preds = %2418
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #13
  %2430 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %223) #13
  store ptr %2430, ptr %225, align 8, !tbaa !5
  %2431 = load ptr, ptr %221, align 8, !tbaa !5
  %2432 = getelementptr inbounds %"class.Halide::Internal::Autoscheduler::BoundContents::Layout", ptr %2431, i32 0, i32 5
  %2433 = load ptr, ptr %221, align 8, !tbaa !5
  %2434 = getelementptr inbounds %"class.Halide::Internal::Autoscheduler::BoundContents::Layout", ptr %2433, i32 0, i32 3
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %2432, ptr noundef nonnull align 4 dereferenceable(4) %2434)
          to label %2435 unwind label %2446

2435:                                             ; preds = %2429
  %2436 = load ptr, ptr %225, align 8, !tbaa !5
  %2437 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2436, i32 0, i32 2
  %2438 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2437) #13
  %2439 = trunc i64 %2438 to i32
  %2440 = load ptr, ptr %221, align 8, !tbaa !5
  %2441 = getelementptr inbounds %"class.Halide::Internal::Autoscheduler::BoundContents::Layout", ptr %2440, i32 0, i32 3
  %2442 = load i32, ptr %2441, align 8, !tbaa !165
  %2443 = add nsw i32 %2442, %2439
  store i32 %2443, ptr %2441, align 8, !tbaa !165
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #13
  br label %2444

2444:                                             ; preds = %2435
  %2445 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %223) #13
  br label %2418

2446:                                             ; preds = %2429
  %2447 = landingpad { ptr, i32 }
          cleanup
  %2448 = extractvalue { ptr, i32 } %2447, 0
  store ptr %2448, ptr %15, align 8
  %2449 = extractvalue { ptr, i32 } %2447, 1
  store i32 %2449, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #13
  br label %2453

2450:                                             ; preds = %2420
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #13
  br label %2451

2451:                                             ; preds = %2450
  %2452 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %218) #13
  br label %2382

2453:                                             ; preds = %2446, %2425
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #13
  br label %2454

2454:                                             ; preds = %2453, %2421
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %217) #13
  br label %2694

2455:                                             ; preds = %2384
  call void @llvm.lifetime.start.p0(i64 4, ptr %226) #13
  store i32 0, ptr %226, align 4, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %227) #13
  %2456 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  store ptr %2456, ptr %227, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %228) #13
  %2457 = load ptr, ptr %227, align 8, !tbaa !5
  %2458 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2457) #13
  %2459 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.201", ptr %228, i32 0, i32 0
  store ptr %2458, ptr %2459, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %229) #13
  %2460 = load ptr, ptr %227, align 8, !tbaa !5
  %2461 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2460) #13
  %2462 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.201", ptr %229, i32 0, i32 0
  store ptr %2461, ptr %2462, align 8
  br label %2463

2463:                                             ; preds = %2492, %2455
  %2464 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull align 8 dereferenceable(8) %229) #13
  br i1 %2464, label %2466, label %2465

2465:                                             ; preds = %2463
  store i32 54, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #13
  br label %2494

2466:                                             ; preds = %2463
  call void @llvm.lifetime.start.p0(i64 8, ptr %230) #13
  %2467 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %228) #13
  store ptr %2467, ptr %230, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %231) #13
  %2468 = load ptr, ptr %230, align 8, !tbaa !5
  %2469 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2468, i32 0, i32 7
  store ptr %2469, ptr %231, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %232) #13
  %2470 = load ptr, ptr %231, align 8, !tbaa !5
  %2471 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2470) #13
  %2472 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.202", ptr %232, i32 0, i32 0
  store ptr %2471, ptr %2472, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %233) #13
  %2473 = load ptr, ptr %231, align 8, !tbaa !5
  %2474 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2473) #13
  %2475 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.202", ptr %233, i32 0, i32 0
  store ptr %2474, ptr %2475, align 8
  br label %2476

2476:                                             ; preds = %2489, %2466
  %2477 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %232, ptr noundef nonnull align 8 dereferenceable(8) %233) #13
  br i1 %2477, label %2479, label %2478

2478:                                             ; preds = %2476
  store i32 56, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #13
  br label %2491

2479:                                             ; preds = %2476
  call void @llvm.lifetime.start.p0(i64 8, ptr %234) #13
  %2480 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %232) #13
  store ptr %2480, ptr %234, align 8, !tbaa !5
  %2481 = load i32, ptr %226, align 4, !tbaa !49
  %2482 = load ptr, ptr %234, align 8, !tbaa !5
  %2483 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2482, i32 0, i32 8
  store i32 %2481, ptr %2483, align 8, !tbaa !166
  %2484 = load i32, ptr %22, align 4, !tbaa !49
  %2485 = load ptr, ptr %234, align 8, !tbaa !5
  %2486 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2485, i32 0, i32 9
  store i32 %2484, ptr %2486, align 4, !tbaa !167
  %2487 = load i32, ptr %226, align 4, !tbaa !49
  %2488 = add nsw i32 %2487, 1
  store i32 %2488, ptr %226, align 4, !tbaa !49
  call void @llvm.lifetime.end.p0(i64 8, ptr %234) #13
  br label %2489

2489:                                             ; preds = %2479
  %2490 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %232) #13
  br label %2476

2491:                                             ; preds = %2478
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #13
  br label %2492

2492:                                             ; preds = %2491
  %2493 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %228) #13
  br label %2463

2494:                                             ; preds = %2465
  call void @llvm.lifetime.end.p0(i64 4, ptr %226) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %235) #13
  store i64 0, ptr %235, align 8, !tbaa !9
  br label %2495

2495:                                             ; preds = %2522, %2494
  %2496 = load i64, ptr %235, align 8, !tbaa !9
  %2497 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 1
  %2498 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2497) #13
  %2499 = icmp ult i64 %2496, %2498
  br i1 %2499, label %2501, label %2500

2500:                                             ; preds = %2495
  store i32 58, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %235) #13
  br label %2534

2501:                                             ; preds = %2495
  %2502 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 1
  %2503 = load i64, ptr %235, align 8, !tbaa !9
  %2504 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2502, i64 noundef %2503) #13
  %2505 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2504, i32 0, i32 1
  %2506 = load ptr, ptr %2505, align 8, !tbaa !126
  %2507 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2506, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %236) #13
  %2508 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 1
  %2509 = load i64, ptr %235, align 8, !tbaa !9
  %2510 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2508, i64 noundef %2509) #13
  store ptr %2510, ptr %236, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %2507, ptr noundef nonnull align 8 dereferenceable(8) %236)
          to label %2511 unwind label %2525

2511:                                             ; preds = %2501
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #13
  %2512 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 1
  %2513 = load i64, ptr %235, align 8, !tbaa !9
  %2514 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2512, i64 noundef %2513) #13
  %2515 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2514, i32 0, i32 2
  %2516 = load ptr, ptr %2515, align 8, !tbaa !116
  %2517 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2516, i32 0, i32 10
  call void @llvm.lifetime.start.p0(i64 8, ptr %237) #13
  %2518 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 1
  %2519 = load i64, ptr %235, align 8, !tbaa !9
  %2520 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2518, i64 noundef %2519) #13
  store ptr %2520, ptr %237, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %2517, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %2521 unwind label %2529

2521:                                             ; preds = %2511
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #13
  br label %2522

2522:                                             ; preds = %2521
  %2523 = load i64, ptr %235, align 8, !tbaa !9
  %2524 = add i64 %2523, 1
  store i64 %2524, ptr %235, align 8, !tbaa !9
  br label %2495, !llvm.loop !168

2525:                                             ; preds = %2501
  %2526 = landingpad { ptr, i32 }
          cleanup
  %2527 = extractvalue { ptr, i32 } %2526, 0
  store ptr %2527, ptr %15, align 8
  %2528 = extractvalue { ptr, i32 } %2526, 1
  store i32 %2528, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #13
  br label %2533

2529:                                             ; preds = %2511
  %2530 = landingpad { ptr, i32 }
          cleanup
  %2531 = extractvalue { ptr, i32 } %2530, 0
  store ptr %2531, ptr %15, align 8
  %2532 = extractvalue { ptr, i32 } %2530, 1
  store i32 %2532, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #13
  br label %2533

2533:                                             ; preds = %2529, %2525
  call void @llvm.lifetime.end.p0(i64 8, ptr %235) #13
  br label %2694

2534:                                             ; preds = %2500
  call void @llvm.lifetime.start.p0(i64 8, ptr %238) #13
  %2535 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %2536 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2535) #13
  store i64 %2536, ptr %238, align 8, !tbaa !9
  br label %2537

2537:                                             ; preds = %2685, %2534
  %2538 = load i64, ptr %238, align 8, !tbaa !9
  %2539 = icmp ugt i64 %2538, 0
  br i1 %2539, label %2541, label %2540

2540:                                             ; preds = %2537
  store i32 61, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %238) #13
  br label %2688

2541:                                             ; preds = %2537
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #13
  %2542 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %2543 = load i64, ptr %238, align 8, !tbaa !9
  %2544 = sub i64 %2543, 1
  %2545 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2542, i64 noundef %2544) #13
  store ptr %2545, ptr %239, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %240) #13
  %2546 = load ptr, ptr %239, align 8, !tbaa !5
  %2547 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2546, i32 0, i32 7
  store ptr %2547, ptr %240, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %241) #13
  %2548 = load ptr, ptr %240, align 8, !tbaa !5
  %2549 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2548) #13
  %2550 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.202", ptr %241, i32 0, i32 0
  store ptr %2549, ptr %2550, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %242) #13
  %2551 = load ptr, ptr %240, align 8, !tbaa !5
  %2552 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2551) #13
  %2553 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.202", ptr %242, i32 0, i32 0
  store ptr %2552, ptr %2553, align 8
  br label %2554

2554:                                             ; preds = %2681, %2541
  %2555 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %241, ptr noundef nonnull align 8 dereferenceable(8) %242) #13
  br i1 %2555, label %2557, label %2556

2556:                                             ; preds = %2554
  store i32 64, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #13
  br label %2684

2557:                                             ; preds = %2554
  call void @llvm.lifetime.start.p0(i64 8, ptr %243) #13
  %2558 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %241) #13
  store ptr %2558, ptr %243, align 8, !tbaa !5
  %2559 = load ptr, ptr %243, align 8, !tbaa !5
  %2560 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2559, i32 0, i32 11
  %2561 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %2562 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2561) #13
  invoke void @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40) %2560, i64 noundef %2562, i1 noundef zeroext false)
          to label %2563 unwind label %2575

2563:                                             ; preds = %2557
  call void @llvm.lifetime.start.p0(i64 8, ptr %244) #13
  %2564 = load ptr, ptr %243, align 8, !tbaa !5
  %2565 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2564, i32 0, i32 10
  store ptr %2565, ptr %244, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %245) #13
  %2566 = load ptr, ptr %244, align 8, !tbaa !5
  %2567 = call ptr @_ZNSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2566) #13
  %2568 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.203", ptr %245, i32 0, i32 0
  store ptr %2567, ptr %2568, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %246) #13
  %2569 = load ptr, ptr %244, align 8, !tbaa !5
  %2570 = call ptr @_ZNSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2569) #13
  %2571 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.203", ptr %246, i32 0, i32 0
  store ptr %2570, ptr %2571, align 8
  br label %2572

2572:                                             ; preds = %2677, %2563
  %2573 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %245, ptr noundef nonnull align 8 dereferenceable(8) %246) #13
  br i1 %2573, label %2579, label %2574

2574:                                             ; preds = %2572
  store i32 66, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #13
  br label %2680

2575:                                             ; preds = %2557
  %2576 = landingpad { ptr, i32 }
          cleanup
  %2577 = extractvalue { ptr, i32 } %2576, 0
  store ptr %2577, ptr %15, align 8
  %2578 = extractvalue { ptr, i32 } %2576, 1
  store i32 %2578, ptr %16, align 4
  br label %2683

2579:                                             ; preds = %2572
  call void @llvm.lifetime.start.p0(i64 8, ptr %247) #13
  %2580 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %245) #13
  %2581 = load ptr, ptr %2580, align 8, !tbaa !5
  store ptr %2581, ptr %247, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %248) #13
  %2582 = load ptr, ptr %243, align 8, !tbaa !5
  %2583 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2582, i32 0, i32 11
  %2584 = load ptr, ptr %247, align 8, !tbaa !5
  %2585 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2584, i32 0, i32 1
  %2586 = load ptr, ptr %2585, align 8, !tbaa !126
  %2587 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2586, i32 0, i32 10
  %2588 = load i32, ptr %2587, align 4, !tbaa !11
  %2589 = sext i32 %2588 to i64
  %2590 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %2583, i64 noundef %2589)
          to label %2591 unwind label %2610

2591:                                             ; preds = %2579
  %2592 = getelementptr inbounds { ptr, i64 }, ptr %248, i32 0, i32 0
  %2593 = extractvalue { ptr, i64 } %2590, 0
  store ptr %2593, ptr %2592, align 8
  %2594 = getelementptr inbounds { ptr, i64 }, ptr %248, i32 0, i32 1
  %2595 = extractvalue { ptr, i64 } %2590, 1
  store i64 %2595, ptr %2594, align 8
  %2596 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %248, i1 noundef zeroext true) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %248) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %249) #13
  %2597 = load ptr, ptr %247, align 8, !tbaa !5
  %2598 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2597, i32 0, i32 1
  %2599 = load ptr, ptr %2598, align 8, !tbaa !126
  %2600 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2599, i32 0, i32 7
  store ptr %2600, ptr %249, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %250) #13
  %2601 = load ptr, ptr %249, align 8, !tbaa !5
  %2602 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2601) #13
  %2603 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.202", ptr %250, i32 0, i32 0
  store ptr %2602, ptr %2603, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %251) #13
  %2604 = load ptr, ptr %249, align 8, !tbaa !5
  %2605 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2604) #13
  %2606 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.202", ptr %251, i32 0, i32 0
  store ptr %2605, ptr %2606, align 8
  br label %2607

2607:                                             ; preds = %2674, %2591
  %2608 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef nonnull align 8 dereferenceable(8) %251) #13
  br i1 %2608, label %2614, label %2609

2609:                                             ; preds = %2607
  store i32 68, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #13
  br label %2676

2610:                                             ; preds = %2579
  %2611 = landingpad { ptr, i32 }
          cleanup
  %2612 = extractvalue { ptr, i32 } %2611, 0
  store ptr %2612, ptr %15, align 8
  %2613 = extractvalue { ptr, i32 } %2611, 1
  store i32 %2613, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %248) #13
  br label %2679

2614:                                             ; preds = %2607
  call void @llvm.lifetime.start.p0(i64 8, ptr %252) #13
  %2615 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %250) #13
  store ptr %2615, ptr %252, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %253) #13
  store i64 0, ptr %253, align 8, !tbaa !9
  br label %2616

2616:                                             ; preds = %2656, %2614
  %2617 = load i64, ptr %253, align 8, !tbaa !9
  %2618 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG", ptr %257, i32 0, i32 0
  %2619 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2618) #13
  %2620 = icmp ult i64 %2617, %2619
  br i1 %2620, label %2622, label %2621

2621:                                             ; preds = %2616
  store i32 70, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %253) #13
  br label %2673

2622:                                             ; preds = %2616
  call void @llvm.lifetime.start.p0(i64 16, ptr %254) #13
  %2623 = load ptr, ptr %243, align 8, !tbaa !5
  %2624 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2623, i32 0, i32 11
  %2625 = load i64, ptr %253, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %255) #13
  %2626 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %2624, i64 noundef %2625)
          to label %2627 unwind label %2659

2627:                                             ; preds = %2622
  %2628 = getelementptr inbounds { ptr, i64 }, ptr %254, i32 0, i32 0
  %2629 = extractvalue { ptr, i64 } %2626, 0
  store ptr %2629, ptr %2628, align 8
  %2630 = getelementptr inbounds { ptr, i64 }, ptr %254, i32 0, i32 1
  %2631 = extractvalue { ptr, i64 } %2626, 1
  store i64 %2631, ptr %2630, align 8
  %2632 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %254) #13
  br i1 %2632, label %2644, label %2633

2633:                                             ; preds = %2627
  %2634 = load ptr, ptr %252, align 8, !tbaa !5
  %2635 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2634, i32 0, i32 11
  %2636 = load i64, ptr %253, align 8, !tbaa !9
  %2637 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %2635, i64 noundef %2636)
          to label %2638 unwind label %2663

2638:                                             ; preds = %2633
  %2639 = getelementptr inbounds { ptr, i64 }, ptr %255, i32 0, i32 0
  %2640 = extractvalue { ptr, i64 } %2637, 0
  store ptr %2640, ptr %2639, align 8
  %2641 = getelementptr inbounds { ptr, i64 }, ptr %255, i32 0, i32 1
  %2642 = extractvalue { ptr, i64 } %2637, 1
  store i64 %2642, ptr %2641, align 8
  %2643 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %255) #13
  br label %2644

2644:                                             ; preds = %2638, %2627
  %2645 = phi i1 [ true, %2627 ], [ %2643, %2638 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr %256) #13
  %2646 = load ptr, ptr %243, align 8, !tbaa !5
  %2647 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2646, i32 0, i32 11
  %2648 = load i64, ptr %253, align 8, !tbaa !9
  %2649 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %2647, i64 noundef %2648)
          to label %2650 unwind label %2667

2650:                                             ; preds = %2644
  %2651 = getelementptr inbounds { ptr, i64 }, ptr %256, i32 0, i32 0
  %2652 = extractvalue { ptr, i64 } %2649, 0
  store ptr %2652, ptr %2651, align 8
  %2653 = getelementptr inbounds { ptr, i64 }, ptr %256, i32 0, i32 1
  %2654 = extractvalue { ptr, i64 } %2649, 1
  store i64 %2654, ptr %2653, align 8
  %2655 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %256, i1 noundef zeroext %2645) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %256) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %255) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %254) #13
  br label %2656

2656:                                             ; preds = %2650
  %2657 = load i64, ptr %253, align 8, !tbaa !9
  %2658 = add i64 %2657, 1
  store i64 %2658, ptr %253, align 8, !tbaa !9
  br label %2616, !llvm.loop !169

2659:                                             ; preds = %2622
  %2660 = landingpad { ptr, i32 }
          cleanup
  %2661 = extractvalue { ptr, i32 } %2660, 0
  store ptr %2661, ptr %15, align 8
  %2662 = extractvalue { ptr, i32 } %2660, 1
  store i32 %2662, ptr %16, align 4
  br label %2672

2663:                                             ; preds = %2633
  %2664 = landingpad { ptr, i32 }
          cleanup
  %2665 = extractvalue { ptr, i32 } %2664, 0
  store ptr %2665, ptr %15, align 8
  %2666 = extractvalue { ptr, i32 } %2664, 1
  store i32 %2666, ptr %16, align 4
  br label %2671

2667:                                             ; preds = %2644
  %2668 = landingpad { ptr, i32 }
          cleanup
  %2669 = extractvalue { ptr, i32 } %2668, 0
  store ptr %2669, ptr %15, align 8
  %2670 = extractvalue { ptr, i32 } %2668, 1
  store i32 %2670, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %256) #13
  br label %2671

2671:                                             ; preds = %2667, %2663
  call void @llvm.lifetime.end.p0(i64 16, ptr %255) #13
  br label %2672

2672:                                             ; preds = %2671, %2659
  call void @llvm.lifetime.end.p0(i64 16, ptr %254) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %253) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %251) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #13
  br label %2679

2673:                                             ; preds = %2621
  call void @llvm.lifetime.end.p0(i64 8, ptr %252) #13
  br label %2674

2674:                                             ; preds = %2673
  %2675 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %250) #13
  br label %2607

2676:                                             ; preds = %2609
  call void @llvm.lifetime.end.p0(i64 8, ptr %247) #13
  br label %2677

2677:                                             ; preds = %2676
  %2678 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %245) #13
  br label %2572

2679:                                             ; preds = %2672, %2610
  call void @llvm.lifetime.end.p0(i64 8, ptr %247) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #13
  br label %2683

2680:                                             ; preds = %2574
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #13
  br label %2681

2681:                                             ; preds = %2680
  %2682 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %241) #13
  br label %2554

2683:                                             ; preds = %2679, %2575
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %238) #13
  br label %2694

2684:                                             ; preds = %2556
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #13
  br label %2685

2685:                                             ; preds = %2684
  %2686 = load i64, ptr %238, align 8, !tbaa !9
  %2687 = add i64 %2686, -1
  store i64 %2687, ptr %238, align 8, !tbaa !9
  br label %2537, !llvm.loop !170

2688:                                             ; preds = %2540
  invoke void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG9featurizeEv(ptr noundef nonnull align 8 dereferenceable(48) %257)
          to label %2689 unwind label %2690

2689:                                             ; preds = %2688
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #13
  call void @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %19) #13
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #13
  call void @_ZN6Halide8Internal9IRMutatorD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %9) #13
  ret void

2690:                                             ; preds = %2688
  %2691 = landingpad { ptr, i32 }
          cleanup
  %2692 = extractvalue { ptr, i32 } %2691, 0
  store ptr %2692, ptr %15, align 8
  %2693 = extractvalue { ptr, i32 } %2691, 1
  store i32 %2693, ptr %16, align 4
  br label %2694

2694:                                             ; preds = %2690, %2683, %2533, %2454, %2373
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #13
  br label %2695

2695:                                             ; preds = %2694, %349
  call void @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %19) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %19) #13
  br label %2696

2696:                                             ; preds = %2695, %299
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #13
  br label %2697

2697:                                             ; preds = %2696, %295
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #13
  call void @_ZN6Halide8Internal9IRMutatorD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #13
  br label %2698

2698:                                             ; preds = %2697, %291
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #13
  br label %2699

2699:                                             ; preds = %2698, %275
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %9) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr %9) #13
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %259) #13
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %258) #13
  br label %2700

2700:                                             ; preds = %2699
  %2701 = load ptr, ptr %15, align 8
  %2702 = load i32, ptr %16, align 4
  %2703 = insertvalue { ptr, i32 } poison, ptr %2701, 0
  %2704 = insertvalue { ptr, i32 } %2703, i32 %2702, 1
  resume { ptr, i32 } %2704

2705:                                             ; preds = %2244, %1951, %1298, %955
  %2706 = landingpad { ptr, i32 }
          catch ptr null
  %2707 = extractvalue { ptr, i32 } %2706, 0
  call void @__clang_call_terminate(ptr %2707) #15
  unreachable

2708:                                             ; preds = %1501
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN6Halide8Internal17topological_orderERKSt6vectorINS0_8FunctionESaIS2_EERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES2_St4lessISD_ESaISt4pairIKSD_S2_EEE(ptr dead_on_unwind writable sret(%"class.std::vector.114") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(48)) #2

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24)) #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind noalias writable sret(%"struct.Halide::Expr") align 8, ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE4pushIS2_vEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) #5 align 2

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function7updatesEv(ptr noundef nonnull align 8 dereferenceable(24)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12emplace_backIJNS0_5StageEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(64)) #5 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function10definitionEv(ptr noundef nonnull align 8 dereferenceable(24)) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide5StageC2ENS_8Internal8FunctionENS1_10DefinitionEm(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef, ptr noundef, i64 noundef) unnamed_addr #5 align 2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function6updateEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #2

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

; 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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) #6

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE20set_containing_scopeEPKS3_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef) #7 align 2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule5rvarsEv(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

declare void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

declare void @_ZN6HalidemiENS_4ExprEi(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8, ptr noundef, i32 noundef) #2

declare void @_ZN6HalideplENS_4ExprES0_(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal8Variable4makeENS_4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"struct.Halide::Expr") align 8, i64, ptr, ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, ptr } @_ZN6Halide3IntEii(i32 noundef, i32 noundef) #8

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

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

declare void @_ZN6Halide8Internal29compute_function_value_boundsERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKSt3mapIS7_NS0_8FunctionESt4lessIS7_ESaISt4pairIKS7_SD_EEE(ptr dead_on_unwind writable sret(%"class.std::map.137") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(48)) #2

declare void @_ZN6Halide8Internal23bounds_of_expr_in_scopeENS_4ExprERKNS0_5ScopeINS0_8IntervalEEERKSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiES3_St4lessISF_ESaIS8_IKSF_S3_EEEb(ptr dead_on_unwind writable sret(%"struct.Halide::Internal::Interval") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(48), i1 noundef zeroext) #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition4argsEv(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule6splitsEv(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule4dimsEv(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i64 noundef) #8

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Halide8Internal5ScopeINS0_8IntervalEE3getIS2_vEET_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"struct.Halide::Internal::Interval") align 8, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition6valuesEv(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

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

declare void @_ZN6Halide8Internal4Call4makeENS_4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS_4ExprESaISC_EENS1_8CallTypeENS0_11FunctionPtrEiNS_6BufferIvEENS0_9ParameterE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8, i64, ptr, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #2

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN10CheckTypesC2ES4_(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef) unnamed_addr #5 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { i64, ptr } @_ZNK6Halide4Expr4typeEv(ptr noundef nonnull align 8 dereferenceable(8)) #10 align 2

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

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

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

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

declare noundef i32 @_ZNK6Halide6Target19natural_vector_sizeERKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal8Function7same_asERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function8scheduleEv(ptr noundef nonnull align 8 dereferenceable(24)) #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Halide8Internal12FuncSchedule9estimatesEv(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEEixERSD_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Halide8Internal12FuncSchedule6boundsEv(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIiEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 4 dereferenceable(4)) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(17)) #5 align 2

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK6Halide8Internal8Function21has_update_definitionEv(ptr noundef nonnull align 8 dereferenceable(24)) #2

declare noundef zeroext i1 @_ZN6Halide8Internal11starts_withERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2

declare void @_ZN6Halide8Internal14boxes_requiredENS_4ExprERKNS0_5ScopeINS0_8IntervalEEERKSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiES3_St4lessISF_ESaIS8_IKSF_S3_EEE(ptr dead_on_unwind writable sret(%"class.std::map.186") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(48)) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE12emplace_backIJS6_S6_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(34), ptr noundef nonnull align 8 dereferenceable(34)) #5 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS5_ESaISt4pairIKS5_iEEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

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

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

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

declare noundef ptr @_ZNK6Halide8Internal8Function10is_wrapperEv(ptr noundef nonnull align 8 dereferenceable(24)) #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN10CheckTypesD2Ev(ptr noundef nonnull align 8 dereferenceable(104)) unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, i1 noundef zeroext) #5 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #5 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG9featurizeEv(ptr noundef nonnull align 8 dereferenceable(48)) #5 align 2

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

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

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

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

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

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

declare void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoC1ERKNS_4ExprERKNS2_4Node5StageE(ptr, ptr, ptr)

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #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 = { 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 #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { alwaysinline 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 #11 = { 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 #12 = { 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 #13 = { nounwind }
attributes #14 = { builtin allocsize(0) }
attributes #15 = { 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 = !{!"long", !7, i64 0}
!11 = !{!12, !16, i64 172}
!12 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4NodeE", !6, i64 0, !13, i64 8, !17, i64 32, !18, i64 40, !22, i64 64, !26, i64 88, !30, i64 112, !31, i64 120, !35, i64 144, !16, i64 168, !16, i64 172, !16, i64 176, !16, i64 180, !30, i64 184, !30, i64 185, !30, i64 186, !30, i64 187, !30, i64 188, !39, i64 192}
!13 = !{!"_ZTSN6Halide8Internal8FunctionE", !14, i64 0}
!14 = !{!"_ZTSN6Halide8Internal11FunctionPtrE", !15, i64 0, !6, i64 8, !16, i64 16}
!15 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_13FunctionGroupEEE", !6, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!"double", !7, i64 0}
!18 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"bool", !7, i64 0}
!31 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!"_ZTSSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !40, i64 0}
!40 = !{!"_ZTSSt15__uniq_ptr_dataIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_ELb1ELb1EE", !41, i64 0}
!41 = !{!"_ZTSSt15__uniq_ptr_implIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !42, i64 0}
!42 = !{!"_ZTSSt5tupleIJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !43, i64 0}
!43 = !{!"_ZTSSt11_Tuple_implILm0EJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !44, i64 0}
!44 = !{!"_ZTSSt10_Head_baseILm0EPN6Halide8Internal13Autoscheduler13BoundContents6LayoutELb0EE", !6, i64 0}
!45 = !{!12, !16, i64 176}
!46 = !{!12, !6, i64 0}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.mustprogress"}
!49 = !{!16, !16, i64 0}
!50 = distinct !{!50, !48}
!51 = distinct !{!51, !48}
!52 = !{!53, !6, i64 0}
!53 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageE", !6, i64 0, !16, i64 8, !54, i64 16, !30, i64 40, !16, i64 44, !58, i64 48, !59, i64 1200, !66, i64 1264, !16, i64 1296, !16, i64 1300, !35, i64 1304, !68, i64 1328}
!54 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!58 = !{!"_ZTSN6Halide8Internal16PipelineFeaturesE", !7, i64 0, !7, i64 28, !7, i64 700, !7, i64 812, !7, i64 924, !7, i64 1036}
!59 = !{!"_ZTSN6Halide5StageE", !13, i64 0, !60, i64 24, !10, i64 32, !62, i64 40}
!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, !10, i64 8, !7, i64 16}
!67 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!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, !6, i64 32}
!72 = !{!"_ZTSSt13_Bit_iterator", !73, i64 0}
!73 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !16, i64 8}
!74 = distinct !{!74, !48}
!75 = !{!12, !30, i64 112}
!76 = !{!77, !30, i64 16}
!77 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoE", !78, i64 0, !30, i64 16, !30, i64 17, !10, i64 24, !10, i64 32}
!78 = !{!"_ZTSN6Halide8Internal8IntervalE", !79, i64 0, !79, i64 8}
!79 = !{!"_ZTSN6Halide4ExprE", !80, i64 0}
!80 = !{!"_ZTSN6Halide8Internal8IRHandleE", !81, i64 0}
!81 = !{!"_ZTSN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEEE", !6, i64 0}
!82 = !{!77, !30, i64 17}
!83 = !{!77, !10, i64 24}
!84 = !{!77, !10, i64 32}
!85 = distinct !{!85, !48}
!86 = !{!53, !30, i64 40}
!87 = !{!88, !30, i64 32}
!88 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopE", !66, i64 0, !30, i64 32, !30, i64 33, !79, i64 40, !79, i64 48, !16, i64 56, !30, i64 60, !16, i64 64, !30, i64 68, !10, i64 72, !10, i64 80, !66, i64 88}
!89 = !{!88, !30, i64 33}
!90 = !{!88, !16, i64 56}
!91 = !{!88, !30, i64 60}
!92 = !{!88, !16, i64 64}
!93 = distinct !{!93, !48}
!94 = !{i8 0, i8 2}
!95 = !{}
!96 = !{!88, !30, i64 68}
!97 = !{!88, !10, i64 72}
!98 = !{!88, !10, i64 80}
!99 = distinct !{!99, !48}
!100 = !{i64 0, i64 1, !101, i64 1, i64 1, !103, i64 2, i64 2, !104, i64 8, i64 8, !5}
!101 = !{!102, !102, i64 0}
!102 = !{!"_ZTS18halide_type_code_t", !7, i64 0}
!103 = !{!7, !7, i64 0}
!104 = !{!105, !105, i64 0}
!105 = !{!"short", !7, i64 0}
!106 = !{!12, !17, i64 32}
!107 = !{!53, !16, i64 44}
!108 = !{!12, !16, i64 168}
!109 = !{!12, !30, i64 186}
!110 = !{i64 0, i64 8, !9, i64 8, i64 8, !9, i64 16, i64 1, !111}
!111 = !{!30, !30, i64 0}
!112 = distinct !{!112, !48}
!113 = !{!53, !16, i64 8}
!114 = !{!12, !30, i64 187}
!115 = !{!12, !30, i64 188}
!116 = !{!117, !6, i64 32}
!117 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeE", !118, i64 0, !6, i64 24, !6, i64 32, !16, i64 40, !30, i64 44, !122, i64 48}
!118 = !{!"_ZTSSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE", !119, i64 0}
!119 = !{!"_ZTSSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE", !120, i64 0}
!120 = !{!"_ZTSNSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE12_Vector_implE", !121, i64 0}
!121 = !{!"_ZTSNSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!122 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE", !123, i64 0}
!123 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE", !124, i64 0}
!124 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE12_Vector_implE", !125, i64 0}
!125 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!126 = !{!117, !6, i64 24}
!127 = !{!117, !30, i64 44}
!128 = !{!129, !30, i64 32}
!129 = !{!"_ZTSSt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES5_E", !130, i64 0, !130, i64 40}
!130 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoE", !79, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !30, i64 32, !30, i64 33}
!131 = !{!129, !30, i64 72}
!132 = !{!117, !16, i64 40}
!133 = !{!134, !30, i64 32}
!134 = !{!"_ZTSZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEE10CheckTypes", !135, i64 0, !13, i64 8, !30, i64 32, !16, i64 36, !136, i64 40, !138, i64 56}
!135 = !{!"_ZTSN6Halide8Internal9IRVisitorE"}
!136 = !{!"_ZTSN6Halide4TypeE", !137, i64 0, !6, i64 8}
!137 = !{!"_ZTS13halide_type_t", !102, i64 0, !7, i64 1, !105, i64 2}
!138 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS5_ESaISt4pairIKS5_iEEE", !139, i64 0}
!139 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !140, i64 0}
!140 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !141, i64 0, !143, i64 8}
!141 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !142, i64 0}
!142 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!143 = !{!"_ZTSSt15_Rb_tree_header", !144, i64 0, !10, i64 32}
!144 = !{!"_ZTSSt18_Rb_tree_node_base", !145, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!145 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!146 = !{!12, !30, i64 184}
!147 = !{!12, !30, i64 185}
!148 = !{!12, !16, i64 180}
!149 = distinct !{!149, !48}
!150 = distinct !{!150, !48}
!151 = !{!152, !16, i64 60}
!152 = !{!"_ZTSN6Halide8Internal13Autoscheduler13BoundContents6LayoutE", !153, i64 0, !157, i64 24, !10, i64 48, !16, i64 56, !16, i64 60, !161, i64 64}
!153 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler13BoundContentsESaIS4_EE", !154, i64 0}
!154 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler13BoundContentsESaIS4_EE", !155, i64 0}
!155 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler13BoundContentsESaIS4_EE12_Vector_implE", !156, i64 0}
!156 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler13BoundContentsESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!157 = !{!"_ZTSSt6vectorIPvSaIS0_EE", !158, i64 0}
!158 = !{!"_ZTSSt12_Vector_baseIPvSaIS0_EE", !159, i64 0}
!159 = !{!"_ZTSNSt12_Vector_baseIPvSaIS0_EE12_Vector_implE", !160, i64 0}
!160 = !{!"_ZTSNSt12_Vector_baseIPvSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!161 = !{!"_ZTSSt6vectorIiSaIiEE", !162, i64 0}
!162 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !163, i64 0}
!163 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !164, i64 0}
!164 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!165 = !{!152, !16, i64 56}
!166 = !{!53, !16, i64 1296}
!167 = !{!53, !16, i64 1300}
!168 = distinct !{!168, !48}
!169 = distinct !{!169, !48}
!170 = distinct !{!170, !48}


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

%"struct.Halide::Expr" = type { %"struct.Halide::Internal::IRHandle" }
%"struct.Halide::Internal::IRHandle" = type { %"struct.Halide::Internal::IntrusivePtr.64" }
%"struct.Halide::Internal::IntrusivePtr.64" = 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::map.103" = type { %"class.std::_Rb_tree.104" }
%"class.std::_Rb_tree.104" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Function>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Function>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Function>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Function>>, std::less<std::__cxx11::basic_string<char>>>::_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.__gnu_cxx::__normal_iterator.113" = type { ptr }
%"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.ApplyParamEstimates = type { %"class.Halide::Internal::IRMutator" }
%"class.Halide::Internal::IRMutator" = type { ptr }
%"class.std::vector.114" = type { %"struct.std::_Vector_base.115" }
%"struct.std::_Vector_base.115" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.119" = type { %"class.std::_Rb_tree.120" }
%"class.std::_Rb_tree.120" = type { %"struct.std::_Rb_tree<Halide::Internal::Function, std::pair<const Halide::Internal::Function, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::_Select1st<std::pair<const Halide::Internal::Function, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>, Halide::Internal::Function::Compare>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Halide::Internal::Function, std::pair<const Halide::Internal::Function, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::_Select1st<std::pair<const Halide::Internal::Function, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>, Halide::Internal::Function::Compare>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.Halide::Internal::Scope" = type { %"class.std::map.65", ptr }
%"class.std::map.65" = type { %"class.std::_Rb_tree.66" }
%"class.std::_Rb_tree.66" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::SmallStack<Halide::Internal::Interval>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::SmallStack<Halide::Internal::Interval>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::SmallStack<Halide::Internal::Interval>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::SmallStack<Halide::Internal::Interval>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.Halide::Var" = type { %"class.std::__cxx11::basic_string" }
%"struct.Halide::Internal::Interval" = type { %"struct.Halide::Expr", %"struct.Halide::Expr" }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval" = type { %"class.Halide::Var", %"class.Halide::Var" }
%"class.Halide::Stage" = type { %"class.Halide::Internal::Function", %"class.Halide::Internal::Definition", i64, %"class.std::vector.52" }
%"class.Halide::Internal::Definition" = type { %"struct.Halide::Internal::IntrusivePtr.51" }
%"struct.Halide::Internal::IntrusivePtr.51" = type { ptr }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = 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.__gnu_cxx::__normal_iterator.136" = type { ptr }
%"class.std::map.137" = type { %"class.std::_Rb_tree.138" }
%"class.std::_Rb_tree.138" = type { %"struct.std::_Rb_tree<std::pair<std::__cxx11::basic_string<char>, int>, std::pair<const std::pair<std::__cxx11::basic_string<char>, int>, Halide::Internal::Interval>, std::_Select1st<std::pair<const std::pair<std::__cxx11::basic_string<char>, int>, Halide::Internal::Interval>>, std::less<std::pair<std::__cxx11::basic_string<char>, int>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<std::__cxx11::basic_string<char>, int>, std::pair<const std::pair<std::__cxx11::basic_string<char>, int>, Halide::Internal::Interval>, std::_Select1st<std::pair<const std::pair<std::__cxx11::basic_string<char>, int>, Halide::Internal::Interval>>, std::less<std::pair<std::__cxx11::basic_string<char>, int>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"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::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::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" }
%"class.std::vector.143" = type { %"struct.std::_Vector_base.144" }
%"struct.std::_Vector_base.144" = type { %"struct.std::_Vector_base<Halide::Expr, std::allocator<Halide::Expr>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Expr, std::allocator<Halide::Expr>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Expr, std::allocator<Halide::Expr>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Expr, std::allocator<Halide::Expr>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.161" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.160" = type { ptr }
%"class.std::allocator.15" = type { i8 }
%"class.Halide::Buffer" = type { ptr, %"struct.Halide::Internal::IntrusivePtr.80" }
%"struct.Halide::Internal::IntrusivePtr.80" = type { ptr }
%"class.Halide::Internal::Parameter" = type { ptr, %"struct.Halide::Internal::IntrusivePtr.79" }
%"struct.Halide::Internal::IntrusivePtr.79" = type { ptr }
%class.CheckTypes = type { %"class.Halide::Internal::IRVisitor", %"class.Halide::Internal::Function", i8, i32, %"struct.Halide::Type", %"class.std::map.162" }
%"class.Halide::Internal::IRVisitor" = type { ptr }
%"struct.Halide::Type" = type { %struct.halide_type_t, ptr }
%struct.halide_type_t = type { i8, i8, i16 }
%"class.std::map.162" = type { %"class.std::_Rb_tree.163" }
%"class.std::_Rb_tree.163" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.167" = type { %"class.std::_Rb_tree.168" }
%"class.std::_Rb_tree.168" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Autoscheduler::Span>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Autoscheduler::Span>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Autoscheduler::Span>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Autoscheduler::Span>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.__gnu_cxx::__normal_iterator.178" = type { ptr }
%"struct.Halide::Internal::Bound" = type { %"class.std::__cxx11::basic_string", %"struct.Halide::Expr", %"struct.Halide::Expr", %"struct.Halide::Expr", %"struct.Halide::Expr" }
%"class.Halide::Internal::Autoscheduler::Span" = type <{ i64, i64, i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator.181" = type { ptr }
%"class.std::map.186" = type { %"class.std::_Rb_tree.187" }
%"class.std::_Rb_tree.187" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Box>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Box>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Box>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Halide::Internal::Box>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_iterator.191" = type { ptr }
%"struct.std::_Rb_tree_iterator.199" = type { ptr }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge" = type { %"class.std::vector.82", ptr, ptr, i32, i8, %"class.std::vector.87" }
%"class.std::vector.82" = type { %"struct.std::_Vector_base.83" }
%"struct.std::_Vector_base.83" = type { %"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.87" = type { %"struct.std::_Vector_base.88" }
%"struct.std::_Vector_base.88" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.200" = type { ptr }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo" = type <{ %"struct.Halide::Expr", i64, i64, i64, i8, i8, [6 x i8] }>
%"class.__gnu_cxx::__normal_iterator.201" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.202" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.203" = type { ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }

@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [5 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

; 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 nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

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

declare i32 @__gxx_personality_v0(...)

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

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

; 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

; 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

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

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

declare noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler4SpanC2Ellb(ptr noundef nonnull align 8 dereferenceable(17), i64 noundef, i64 noundef, i1 noundef zeroext) unnamed_addr #7 align 2

declare void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8, ptr noundef, i1 noundef zeroext, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #2

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

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

declare noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

; 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_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 noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local 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 #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Halide8Internal13Autoscheduler11FunctionDAGC2ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetE(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr nocapture noundef nonnull readnone align 8 dereferenceable(20) %2, ptr noundef nonnull align 8 dereferenceable(32) %3) unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::map.103", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %8 = alloca %"class.Halide::Internal::Function", align 8
  %9 = alloca %"class.Halide::Internal::Function", align 8
  %10 = alloca %class.ApplyParamEstimates, align 8
  %11 = alloca %"class.std::vector.114", align 8
  %12 = alloca %"class.std::map.119", align 8
  %13 = alloca %"class.Halide::Internal::Function", align 8
  %14 = alloca %"class.Halide::Internal::Function", align 8
  %15 = alloca %"class.Halide::Internal::Scope", align 8
  %16 = alloca %"class.Halide::Var", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.Halide::Var", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"struct.Halide::Internal::Interval", align 8
  %25 = alloca %"struct.Halide::Expr", align 8
  %26 = alloca %"struct.Halide::Expr", align 8
  %27 = alloca %"struct.Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval", align 8
  %28 = alloca %"class.std::vector.114", align 8
  %29 = alloca %"class.Halide::Stage", align 8
  %30 = alloca %"class.Halide::Internal::Function", align 8
  %31 = alloca %"class.Halide::Internal::Definition", align 8
  %32 = alloca %"class.Halide::Stage", align 8
  %33 = alloca %"class.Halide::Internal::Function", align 8
  %34 = alloca %"class.Halide::Internal::Definition", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.Halide::Internal::Scope", align 8
  %39 = alloca %"class.Halide::Internal::Scope", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.136", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.136", align 8
  %42 = alloca %"struct.Halide::Expr", align 8
  %43 = alloca %"struct.Halide::Expr", align 8
  %44 = alloca %"struct.Halide::Expr", align 8
  %45 = alloca %"struct.Halide::Expr", align 8
  %46 = alloca %"struct.Halide::Expr", align 8
  %47 = alloca %"struct.Halide::Expr", align 8
  %48 = alloca %"struct.Halide::Expr", align 8
  %49 = alloca %"struct.Halide::Expr", align 8
  %50 = alloca %"struct.Halide::Internal::Interval", align 8
  %51 = alloca %"struct.Halide::Expr", align 8
  %52 = alloca %"struct.Halide::Expr", align 8
  %53 = alloca %"struct.Halide::Expr", align 8
  %54 = alloca %"class.std::__cxx11::basic_string", align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"struct.Halide::Expr", align 8
  %58 = alloca %"class.std::__cxx11::basic_string", align 8
  %59 = alloca %"class.std::__cxx11::basic_string", align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"struct.Halide::Internal::Interval", align 8
  %62 = alloca %"struct.Halide::Expr", align 8
  %63 = alloca %"struct.Halide::Expr", align 8
  %64 = alloca %"class.std::map.137", align 8
  %65 = alloca %"struct.Halide::Internal::Interval", align 8
  %66 = alloca %"struct.Halide::Expr", align 8
  %67 = alloca %"class.Halide::Internal::Voidifier", align 1
  %68 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %69 = alloca %"struct.Halide::Expr", align 8
  %70 = alloca %"struct.Halide::Expr", align 8
  %71 = alloca %"struct.Halide::Expr", align 8
  %72 = alloca %"struct.Halide::Expr", align 8
  %73 = alloca %"struct.Halide::Expr", align 8
  %74 = alloca %"struct.Halide::Expr", align 8
  %75 = alloca %"struct.Halide::Expr", align 8
  %76 = alloca %"struct.Halide::Expr", align 8
  %77 = alloca %"class.Halide::Internal::Voidifier", align 1
  %78 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %79 = alloca %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", align 8
  %80 = alloca %"class.std::__cxx11::basic_string", align 8
  %81 = alloca %"class.std::__cxx11::basic_string", align 8
  %82 = alloca %"class.std::__cxx11::basic_string", align 8
  %83 = alloca %"class.std::__cxx11::basic_string", align 8
  %84 = alloca %"struct.Halide::Internal::Interval", align 8
  %85 = alloca %"class.std::vector.143", align 8
  %86 = alloca %"class.__gnu_cxx::__normal_iterator.161", align 8
  %87 = alloca %"class.__gnu_cxx::__normal_iterator.160", align 8
  %88 = alloca %"struct.Halide::Expr", align 8
  %89 = alloca %"class.std::__cxx11::basic_string", align 8
  %90 = alloca %"class.std::allocator.15", align 1
  %91 = alloca %"struct.Halide::Internal::FunctionPtr", align 8
  %92 = alloca %"class.Halide::Buffer", align 8
  %93 = alloca %"class.Halide::Internal::Parameter", align 8
  %94 = alloca %class.CheckTypes, align 8
  %95 = alloca %"class.Halide::Internal::Function", align 8
  %96 = alloca %"struct.Halide::Type", align 8
  %97 = alloca %"class.__gnu_cxx::__normal_iterator.161", align 8
  %98 = alloca %"class.__gnu_cxx::__normal_iterator.161", align 8
  %99 = alloca %"struct.Halide::Type", align 8
  %100 = alloca %"struct.Halide::Type", align 8
  %101 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %102 = alloca %"class.__gnu_cxx::__normal_iterator.113", align 8
  %103 = alloca %"class.std::map.167", align 8
  %104 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %105 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %106 = alloca %"struct.Halide::Internal::Bound", align 8
  %107 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %108 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %109 = alloca %"class.__gnu_cxx::__normal_iterator.178", align 8
  %110 = alloca %"struct.Halide::Internal::Bound", align 8
  %111 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %112 = alloca i32, align 4
  %113 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %114 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %115 = alloca %"class.Halide::Internal::Voidifier", align 1
  %116 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %117 = alloca %"struct.Halide::Expr", align 8
  %118 = alloca %"struct.std::_Rb_tree_iterator.181", align 8
  %119 = alloca %"struct.std::_Rb_tree_iterator.181", align 8
  %120 = alloca %"struct.Halide::Expr", align 8
  %121 = alloca %"struct.Halide::Expr", align 8
  %122 = alloca %"class.std::__cxx11::basic_string", align 8
  %123 = alloca %"class.std::allocator.15", align 1
  %124 = alloca %"class.std::map.186", align 8
  %125 = alloca %"struct.Halide::Expr", align 8
  %126 = alloca %"struct.std::_Rb_tree_iterator.191", align 8
  %127 = alloca %"struct.std::_Rb_tree_iterator.191", align 8
  %128 = alloca %"struct.std::_Rb_tree_iterator.199", align 8
  %129 = alloca %"struct.std::_Rb_tree_iterator.199", align 8
  %130 = alloca %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", align 8
  %131 = alloca %"class.__gnu_cxx::__normal_iterator.200", align 8
  %132 = alloca %"class.__gnu_cxx::__normal_iterator.200", align 8
  %133 = alloca %"class.Halide::Internal::Voidifier", align 1
  %134 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %135 = alloca %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", align 8
  %136 = alloca %"struct.Halide::Expr", align 8
  %137 = alloca %"struct.Halide::Expr", align 8
  %138 = alloca %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo", align 8
  %139 = alloca %"struct.Halide::Expr", align 8
  %140 = alloca %"struct.Halide::Expr", align 8
  %141 = alloca %"class.__gnu_cxx::__normal_iterator.201", align 8
  %142 = alloca %"class.__gnu_cxx::__normal_iterator.201", align 8
  %143 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %144 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %145 = alloca %"class.__gnu_cxx::__normal_iterator.201", align 8
  %146 = alloca %"class.__gnu_cxx::__normal_iterator.201", align 8
  %147 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %148 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %149 = alloca ptr, align 8
  %150 = alloca ptr, align 8
  %151 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %152 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %153 = alloca %"class.__gnu_cxx::__normal_iterator.203", align 8
  %154 = alloca %"class.__gnu_cxx::__normal_iterator.203", align 8
  %155 = alloca %"struct.std::_Bit_reference", align 8
  %156 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %157 = alloca %"class.__gnu_cxx::__normal_iterator.202", align 8
  %158 = alloca %"struct.std::_Bit_reference", align 8
  %159 = alloca %"struct.std::_Bit_reference", align 8
  %160 = alloca %"struct.std::_Bit_reference", align 8
  tail call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #13
  %161 = getelementptr inbounds i8, ptr %0, i64 24
  tail call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %161) #13
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %5) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #13
  %162 = call ptr @_ZNKSt6vectorIN6Halide8Internal8FunctionESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #13
  store ptr %162, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #13
  %163 = call ptr @_ZNKSt6vectorIN6Halide8Internal8FunctionESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #13
  store ptr %163, ptr %7, align 8
  %164 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #13
  br i1 %164, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %166, %4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #13
  invoke void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN19ApplyParamEstimatesC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %171 unwind label %205

.lr.ph:                                           ; preds = %4, %166
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #13
  %165 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #13
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %165) #13
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  invoke void @_ZN6Halide8Internal20populate_environmentENS0_8FunctionERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_St4lessIS8_ESaISt4pairIKS8_S1_EEE(ptr noundef nonnull %9, ptr noundef nonnull align 8 dereferenceable(48) %5)
          to label %166 unwind label %169

166:                                              ; preds = %.lr.ph
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #13
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #13
  %168 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #13
  br i1 %168, label %.lr.ph, label %._crit_edge

169:                                              ; preds = %.lr.ph
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #13
  br label %1414

171:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #13
  invoke void @_ZN6Halide8Internal17topological_orderERKSt6vectorINS0_8FunctionESaIS2_EERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES2_St4lessISD_ESaISt4pairIKSD_S2_EEE(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.114") align 8 %11, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(48) %5)
          to label %172 unwind label %207

172:                                              ; preds = %171
  %173 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #13
  invoke void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %173)
          to label %174 unwind label %209

174:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) #13
  call void @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #13
  %175 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #13
  %.not930 = icmp eq i64 %175, 0
  br i1 %.not930, label %._crit_edge858, label %.lr.ph857

._crit_edge858:                                   ; preds = %231, %174
  %176 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #13
  %.not886 = icmp eq i64 %176, 0
  br i1 %.not886, label %._crit_edge891, label %.lr.ph890

.lr.ph890:                                        ; preds = %._crit_edge858
  %177 = getelementptr inbounds i8, ptr %27, i64 32
  %178 = getelementptr inbounds i8, ptr %65, i64 8
  %179 = getelementptr inbounds i8, ptr %79, i64 88
  %180 = getelementptr inbounds i8, ptr %79, i64 40
  %181 = getelementptr inbounds i8, ptr %84, i64 8
  %182 = getelementptr inbounds i8, ptr %79, i64 48
  %183 = getelementptr inbounds i8, ptr %79, i64 32
  %184 = getelementptr inbounds i8, ptr %79, i64 33
  %185 = getelementptr inbounds i8, ptr %79, i64 56
  %186 = getelementptr inbounds i8, ptr %79, i64 60
  %187 = getelementptr inbounds i8, ptr %79, i64 64
  %188 = getelementptr inbounds i8, ptr %79, i64 68
  %189 = getelementptr inbounds i8, ptr %79, i64 72
  %190 = getelementptr inbounds i8, ptr %79, i64 80
  %191 = getelementptr inbounds i8, ptr %96, i64 8
  %192 = getelementptr inbounds i8, ptr %99, i64 8
  %193 = getelementptr inbounds i8, ptr %100, i64 8
  %194 = getelementptr inbounds i8, ptr %94, i64 40
  %195 = getelementptr inbounds i8, ptr %106, i64 32
  %196 = getelementptr inbounds i8, ptr %106, i64 40
  %197 = getelementptr inbounds i8, ptr %110, i64 32
  %198 = getelementptr inbounds i8, ptr %110, i64 40
  %199 = getelementptr inbounds i8, ptr %130, i64 32
  %200 = getelementptr inbounds i8, ptr %130, i64 24
  %201 = getelementptr inbounds i8, ptr %130, i64 44
  %202 = getelementptr inbounds i8, ptr %94, i64 56
  %203 = getelementptr inbounds i8, ptr %130, i64 40
  %204 = getelementptr inbounds i8, ptr %94, i64 32
  br label %243

205:                                              ; preds = %._crit_edge
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %1413

207:                                              ; preds = %171
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %1412

209:                                              ; preds = %172
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %1411

.lr.ph857:                                        ; preds = %174, %231
  %.0437855 = phi i64 [ %232, %231 ], [ 0, %174 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #13
  %211 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #13
  %212 = xor i64 %.0437855, -1
  %213 = add i64 %211, %212
  %214 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %213) #13
  %215 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEEixERSC_(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(32) %214)
          to label %216 unwind label %235

216:                                              ; preds = %.lr.ph857
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %215) #13
  %217 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %.0437855) #13
  %218 = getelementptr inbounds i8, ptr %217, i64 8
  %219 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Halide8Internal8FunctionaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %218, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %220 unwind label %237

220:                                              ; preds = %216
  %221 = trunc i64 %.0437855 to i32
  %222 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %.0437855) #13
  %223 = getelementptr inbounds i8, ptr %222, i64 172
  store i32 %221, ptr %223, align 4, !tbaa !5
  %224 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #13
  %225 = trunc i64 %224 to i32
  %226 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %.0437855) #13
  %227 = getelementptr inbounds i8, ptr %226, i64 176
  store i32 %225, ptr %227, align 8, !tbaa !42
  %228 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %.0437855) #13
  store ptr %0, ptr %228, align 8, !tbaa !43
  %229 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %.0437855) #13
  %230 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %231 unwind label %237

231:                                              ; preds = %220
  store ptr %229, ptr %230, align 8, !tbaa !44
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #13
  %232 = add nuw i64 %.0437855, 1
  %233 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #13
  %234 = icmp ult i64 %232, %233
  br i1 %234, label %.lr.ph857, label %._crit_edge858, !llvm.loop !45

235:                                              ; preds = %.lr.ph857
  %236 = landingpad { ptr, i32 }
          cleanup
  br label %239

237:                                              ; preds = %220, %216
  %238 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #13
  br label %239

239:                                              ; preds = %237, %235
  %.pn645 = phi { ptr, i32 } [ %238, %237 ], [ %236, %235 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #13
  br label %1410

._crit_edge891:                                   ; preds = %381, %._crit_edge858
  %.0438.lcssa = phi i32 [ 0, %._crit_edge858 ], [ %.1439.lcssa933, %381 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %141) #13
  %240 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #13
  store ptr %240, ptr %141, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %142) #13
  %241 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #13
  store ptr %241, ptr %142, align 8
  %242 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull align 8 dereferenceable(8) %142) #13
  br i1 %242, label %.lr.ph897, label %._crit_edge898

243:                                              ; preds = %.lr.ph890, %381
  %.0438888 = phi i32 [ 0, %.lr.ph890 ], [ %.1439.lcssa933, %381 ]
  %.0440887 = phi i64 [ %176, %.lr.ph890 ], [ %382, %381 ]
  %244 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #13
  %245 = sub i64 %244, %.0440887
  %246 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %245) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #13
  %247 = getelementptr inbounds i8, ptr %246, i64 8
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(24) %247) #13
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %15) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %15)
  %248 = getelementptr inbounds i8, ptr %246, i64 40
  br label %249

249:                                              ; preds = %287, %243
  %indvars.iv = phi i64 [ %indvars.iv.next, %287 ], [ 0, %243 ]
  %250 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %251 unwind label %256

251:                                              ; preds = %249
  %252 = sext i32 %250 to i64
  %253 = icmp slt i64 %indvars.iv, %252
  br i1 %253, label %258, label %254

254:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #13
  %255 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %247)
          to label %330 unwind label %356

256:                                              ; preds = %249
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %1251

258:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #13
  %259 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %260 unwind label %288

260:                                              ; preds = %258
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %259, ptr noundef nonnull @.str.23)
          to label %261 unwind label %288

261:                                              ; preds = %260
  %262 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %263 unwind label %290

263:                                              ; preds = %261
  %264 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %262, i64 noundef %indvars.iv) #13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %264)
          to label %265 unwind label %290

265:                                              ; preds = %263
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.24)
          to label %266 unwind label %292

266:                                              ; preds = %265
  invoke void @_ZN6Halide3VarC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %267 unwind label %294

267:                                              ; preds = %266
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #13
  %268 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %269 unwind label %299

269:                                              ; preds = %267
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %268, ptr noundef nonnull @.str.23)
          to label %270 unwind label %299

270:                                              ; preds = %269
  %271 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %272 unwind label %301

272:                                              ; preds = %270
  %273 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %271, i64 noundef %indvars.iv) #13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %273)
          to label %274 unwind label %301

274:                                              ; preds = %272
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.25)
          to label %275 unwind label %303

275:                                              ; preds = %274
  invoke void @_ZN6Halide3VarC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %276 unwind label %305

276:                                              ; preds = %275
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #13
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %277 unwind label %310

277:                                              ; preds = %276
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %278 unwind label %312

278:                                              ; preds = %277
  invoke void @_ZN6Halide8Internal8IntervalC2ENS_4ExprES2_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull %25, ptr noundef nonnull %26)
          to label %279 unwind label %314

279:                                              ; preds = %278
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #13
  %280 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %281 unwind label %317

281:                                              ; preds = %279
  %282 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %280, i64 noundef %indvars.iv) #13
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE4pushIS2_vEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr noundef nonnull align 8 dereferenceable(56) %15, ptr noundef nonnull align 8 dereferenceable(32) %282, ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %283 unwind label %317

283:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %27) #13
  invoke void @_ZN6Halide3VarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %284 unwind label %319

284:                                              ; preds = %283
  invoke void @_ZN6Halide3VarC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %177, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %285 unwind label %321

285:                                              ; preds = %284
  %286 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12emplace_backIJS4_EEERS4_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %248, ptr noundef nonnull align 8 dereferenceable(64) %27)
          to label %287 unwind label %323

287:                                              ; preds = %285
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %27) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #13
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #13
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #13
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #13
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  br label %249, !llvm.loop !47

288:                                              ; preds = %260, %258
  %289 = landingpad { ptr, i32 }
          cleanup
  br label %298

290:                                              ; preds = %263, %261
  %291 = landingpad { ptr, i32 }
          cleanup
  br label %297

292:                                              ; preds = %265
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %296

294:                                              ; preds = %266
  %295 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #13
  br label %296

296:                                              ; preds = %294, %292
  %.pn626 = phi { ptr, i32 } [ %295, %294 ], [ %293, %292 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #13
  br label %297

297:                                              ; preds = %296, %290
  %.pn626.pn = phi { ptr, i32 } [ %.pn626, %296 ], [ %291, %290 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #13
  br label %298

298:                                              ; preds = %297, %288
  %.pn626.pn.pn = phi { ptr, i32 } [ %.pn626.pn, %297 ], [ %289, %288 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #13
  br label %329

299:                                              ; preds = %269, %267
  %300 = landingpad { ptr, i32 }
          cleanup
  br label %309

301:                                              ; preds = %272, %270
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %308

303:                                              ; preds = %274
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %307

305:                                              ; preds = %275
  %306 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #13
  br label %307

307:                                              ; preds = %305, %303
  %.pn630 = phi { ptr, i32 } [ %306, %305 ], [ %304, %303 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #13
  br label %308

308:                                              ; preds = %307, %301
  %.pn630.pn = phi { ptr, i32 } [ %.pn630, %307 ], [ %302, %301 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #13
  br label %309

309:                                              ; preds = %308, %299
  %.pn630.pn.pn = phi { ptr, i32 } [ %.pn630.pn, %308 ], [ %300, %299 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #13
  br label %328

310:                                              ; preds = %276
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %327

312:                                              ; preds = %277
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %316

314:                                              ; preds = %278
  %315 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #13
  br label %316

316:                                              ; preds = %314, %312
  %.pn634 = phi { ptr, i32 } [ %315, %314 ], [ %313, %312 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #13
  br label %327

317:                                              ; preds = %281, %279
  %318 = landingpad { ptr, i32 }
          cleanup
  br label %326

319:                                              ; preds = %283
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %325

321:                                              ; preds = %284
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #13
  br label %325

323:                                              ; preds = %285
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %27) #13
  br label %325

325:                                              ; preds = %323, %321, %319
  %.pn636 = phi { ptr, i32 } [ %324, %323 ], [ %322, %321 ], [ %320, %319 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #13
  br label %326

326:                                              ; preds = %325, %317
  %.pn636.pn = phi { ptr, i32 } [ %.pn636, %325 ], [ %318, %317 ]
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #13
  br label %327

327:                                              ; preds = %326, %316, %310
  %.pn636.pn.pn = phi { ptr, i32 } [ %.pn636.pn, %326 ], [ %.pn634, %316 ], [ %311, %310 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #13
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #13
  br label %328

328:                                              ; preds = %327, %309
  %.pn636.pn.pn.pn = phi { ptr, i32 } [ %.pn636.pn.pn, %327 ], [ %.pn630.pn.pn, %309 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #13
  call void @_ZN6Halide3VarD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #13
  br label %329

329:                                              ; preds = %328, %298
  %.pn636.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn636.pn.pn.pn, %328 ], [ %.pn626.pn.pn, %298 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #13
  br label %1251

330:                                              ; preds = %254
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ERKS7_(ptr noundef nonnull align 8 dereferenceable(24) %28, ptr noundef nonnull align 8 dereferenceable(24) %255)
          to label %.preheader693 unwind label %356

.preheader693:                                    ; preds = %330
  %331 = getelementptr inbounds i8, ptr %246, i64 120
  %332 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function7updatesEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %333 unwind label %.loopexit.split-lp

333:                                              ; preds = %.preheader693
  %334 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal10DefinitionESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %332) #13
  %sext.mask = and i64 %334, 2147483648
  %.not497.peel.not = icmp eq i64 %sext.mask, 0
  br i1 %.not497.peel.not, label %335, label %.preheader692

335:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %29) #13
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %14) #13
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function10definitionEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %337 unwind label %358

337:                                              ; preds = %335
  call void @_ZN6Halide8Internal10DefinitionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %336) #13
  invoke void @_ZN6Halide5StageC2ENS_8Internal8FunctionENS1_10DefinitionEm(ptr noundef nonnull align 8 dereferenceable(64) %29, ptr noundef nonnull %30, ptr noundef nonnull %31, i64 noundef 0)
          to label %338 unwind label %359

338:                                              ; preds = %337
  %339 = invoke noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12emplace_backIJNS0_5StageEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %331, ptr noundef nonnull align 8 dereferenceable(64) %29)
          to label %.peel.next unwind label %360

.peel.next:                                       ; preds = %338
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %29) #13
  call void @_ZN6Halide8Internal10DefinitionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #13
  br label %340

340:                                              ; preds = %.peel.next, %375
  %indvars.iv1060 = phi i64 [ 1, %.peel.next ], [ %indvars.iv.next1061, %375 ]
  %.1439.in = phi i32 [ %.0438888, %.peel.next ], [ %.1439, %375 ]
  %.1439 = add nsw i32 %.1439.in, 1
  %341 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function7updatesEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %342 unwind label %.loopexit1064

342:                                              ; preds = %340
  %343 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal10DefinitionESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %341) #13
  %sext = shl i64 %343, 32
  %344 = ashr exact i64 %sext, 32
  %.not497 = icmp sgt i64 %indvars.iv1060, %344
  br i1 %.not497, label %.preheader692, label %363

.preheader692:                                    ; preds = %342, %333
  %.1439.lcssa933 = phi i32 [ %.0438888, %333 ], [ %.1439, %342 ]
  %345 = getelementptr inbounds i8, ptr %246, i64 88
  %346 = getelementptr inbounds i8, ptr %246, i64 112
  %347 = getelementptr inbounds i8, ptr %246, i64 32
  %348 = getelementptr inbounds i8, ptr %246, i64 168
  %349 = getelementptr inbounds i8, ptr %246, i64 186
  %350 = getelementptr inbounds i8, ptr %246, i64 64
  %351 = getelementptr inbounds i8, ptr %246, i64 187
  %352 = getelementptr inbounds i8, ptr %246, i64 188
  %353 = getelementptr inbounds i8, ptr %246, i64 184
  %354 = getelementptr inbounds i8, ptr %246, i64 185
  %355 = getelementptr inbounds i8, ptr %246, i64 180
  br label %376

356:                                              ; preds = %330, %254
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %1250

.loopexit1064:                                    ; preds = %340
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %1249

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

358:                                              ; preds = %335
  %lpad.loopexit.split-lp1083 = landingpad { ptr, i32 }
          cleanup
  br label %362

359:                                              ; preds = %337
  %lpad.loopexit.split-lp1088 = landingpad { ptr, i32 }
          cleanup
  br label %361

360:                                              ; preds = %338
  %lpad.loopexit.split-lp1093 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %29) #13
  br label %361

361:                                              ; preds = %360, %359
  %.pn620 = phi { ptr, i32 } [ %lpad.loopexit.split-lp1093, %360 ], [ %lpad.loopexit.split-lp1088, %359 ]
  call void @_ZN6Halide8Internal10DefinitionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #13
  br label %362

362:                                              ; preds = %361, %358
  %.pn620.pn = phi { ptr, i32 } [ %.pn620, %361 ], [ %lpad.loopexit.split-lp1083, %358 ]
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #13
  br label %1249

363:                                              ; preds = %342
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %32) #13
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %14) #13
  %364 = trunc i64 %indvars.iv1060 to i32
  %365 = add i32 %364, -1
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function6updateEi(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef %365)
          to label %367 unwind label %370

367:                                              ; preds = %363
  call void @_ZN6Halide8Internal10DefinitionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %366) #13
  invoke void @_ZN6Halide5StageC2ENS_8Internal8FunctionENS1_10DefinitionEm(ptr noundef nonnull align 8 dereferenceable(64) %32, ptr noundef nonnull %33, ptr noundef nonnull %34, i64 noundef %indvars.iv1060)
          to label %368 unwind label %371

368:                                              ; preds = %367
  %369 = invoke noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12emplace_backIJNS0_5StageEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %331, ptr noundef nonnull align 8 dereferenceable(64) %32)
          to label %375 unwind label %372

370:                                              ; preds = %363
  %lpad.loopexit1067 = landingpad { ptr, i32 }
          cleanup
  br label %374

371:                                              ; preds = %367
  %lpad.loopexit1072 = landingpad { ptr, i32 }
          cleanup
  br label %373

372:                                              ; preds = %368
  %lpad.loopexit1077 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %32) #13
  br label %373

373:                                              ; preds = %372, %371
  %.pn617 = phi { ptr, i32 } [ %lpad.loopexit1077, %372 ], [ %lpad.loopexit1072, %371 ]
  call void @_ZN6Halide8Internal10DefinitionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #13
  br label %374

374:                                              ; preds = %373, %370
  %.pn617.pn = phi { ptr, i32 } [ %.pn617, %373 ], [ %lpad.loopexit1067, %370 ]
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %32) #13
  br label %1249

375:                                              ; preds = %368
  call void @_ZN6Halide5StageD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %32) #13
  call void @_ZN6Halide8Internal10DefinitionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %32) #13
  %indvars.iv.next1061 = add nuw nsw i64 %indvars.iv1060, 1
  br label %340, !llvm.loop !48

376:                                              ; preds = %.preheader692, %1235
  %indvars.iv1104 = phi i64 [ 0, %.preheader692 ], [ %indvars.iv.next1105, %1235 ]
  %377 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function7updatesEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %378 unwind label %383

378:                                              ; preds = %376
  %379 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal10DefinitionESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %377) #13
  %sext1108 = shl i64 %379, 32
  %380 = ashr exact i64 %sext1108, 32
  %.not498 = icmp sgt i64 %indvars.iv1104, %380
  br i1 %.not498, label %381, label %385

381:                                              ; preds = %378
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %15) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %15) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #13
  %382 = add i64 %.0440887, -1
  %.not = icmp eq i64 %382, 0
  br i1 %.not, label %._crit_edge891, label %243, !llvm.loop !50

383:                                              ; preds = %376
  %384 = landingpad { ptr, i32 }
          cleanup
  br label %1249

385:                                              ; preds = %378
  %386 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %331, i64 noundef %indvars.iv1104) #13
  store ptr %246, ptr %386, align 8, !tbaa !51
  %387 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %388 unwind label %398

388:                                              ; preds = %385
  %389 = getelementptr inbounds i8, ptr %386, i64 1264
  %390 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %389, ptr noundef nonnull align 8 dereferenceable(32) %387)
          to label %391 unwind label %398

391:                                              ; preds = %388
  %.not499 = icmp eq i64 %indvars.iv1104, 0
  br i1 %.not499, label %408, label %392

392:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %35) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #13
  %393 = trunc i64 %indvars.iv1104 to i32
  %394 = add i32 %393, -1
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %37, i32 noundef %394) #13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef nonnull @.str.33, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %395 unwind label %400

395:                                              ; preds = %392
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.34)
          to label %396 unwind label %402

396:                                              ; preds = %395
  %397 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %389, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %410 unwind label %404

398:                                              ; preds = %388, %385
  %399 = landingpad { ptr, i32 }
          cleanup
  br label %1249

400:                                              ; preds = %392
  %401 = landingpad { ptr, i32 }
          cleanup
  br label %407

402:                                              ; preds = %395
  %403 = landingpad { ptr, i32 }
          cleanup
  br label %406

404:                                              ; preds = %396
  %405 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #13
  br label %406

406:                                              ; preds = %404, %402
  %.pn500 = phi { ptr, i32 } [ %405, %404 ], [ %403, %402 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #13
  br label %407

407:                                              ; preds = %406, %400
  %.pn500.pn = phi { ptr, i32 } [ %.pn500, %406 ], [ %401, %400 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #13
  br label %1249

408:                                              ; preds = %391
  %409 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function10definitionEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %412 unwind label %421

410:                                              ; preds = %396
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) #13
  %411 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function6updateEi(ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef %394)
          to label %412 unwind label %421

412:                                              ; preds = %410, %408
  %413 = phi ptr [ %409, %408 ], [ %411, %410 ]
  %414 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal10Definition8scheduleEv(ptr noundef nonnull align 8 dereferenceable(8) %413)
          to label %415 unwind label %423

415:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %38) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %38)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %39) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %39)
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE20set_containing_scopeEPKS3_(ptr noundef nonnull align 8 dereferenceable(56) %38, ptr noundef nonnull %15)
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE20set_containing_scopeEPKS3_(ptr noundef nonnull align 8 dereferenceable(56) %39, ptr noundef nonnull %15)
  %416 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule5rvarsEv(ptr noundef nonnull align 8 dereferenceable(8) %414)
          to label %417 unwind label %427

417:                                              ; preds = %415
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #13
  %418 = call ptr @_ZNKSt6vectorIN6Halide8Internal17ReductionVariableESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %416) #13
  store ptr %418, ptr %40, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #13
  %419 = call ptr @_ZNKSt6vectorIN6Halide8Internal17ReductionVariableESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %416) #13
  store ptr %419, ptr %41, align 8
  %420 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal17ReductionVariableESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #13
  br i1 %420, label %.lr.ph860, label %._crit_edge861

._crit_edge861:                                   ; preds = %471, %417
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #13
  br i1 %.not499, label %530, label %534

421:                                              ; preds = %410, %408
  %422 = landingpad { ptr, i32 }
          cleanup
  br label %1249

423:                                              ; preds = %412
  %424 = landingpad { ptr, i32 }
          cleanup
  br label %1249

425:                                              ; preds = %532, %530
  %426 = landingpad { ptr, i32 }
          cleanup
  br label %1248

427:                                              ; preds = %415
  %428 = landingpad { ptr, i32 }
          cleanup
  br label %1248

.lr.ph860:                                        ; preds = %417, %471
  %429 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal17ReductionVariableESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #13
  %430 = getelementptr inbounds i8, ptr %429, i64 32
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %43, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %430)
          to label %431 unwind label %474

431:                                              ; preds = %.lr.ph860
  %432 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %433 unwind label %476

433:                                              ; preds = %431
  %434 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %435 unwind label %476

435:                                              ; preds = %433
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %42, ptr noundef nonnull %43, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %432, ptr noundef nonnull align 8 dereferenceable(56) %434)
          to label %436 unwind label %476

436:                                              ; preds = %435
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %430) #13
  %437 = getelementptr inbounds i8, ptr %429, i64 40
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %437) #13
  invoke void @_ZN6HalideplENS_4ExprES0_(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %47, ptr noundef nonnull %48, ptr noundef nonnull %49)
          to label %438 unwind label %478

438:                                              ; preds = %436
  invoke void @_ZN6HalidemiENS_4ExprEi(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %46, ptr noundef nonnull %47, i32 noundef 1)
          to label %439 unwind label %480

439:                                              ; preds = %438
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %45, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %440 unwind label %482

440:                                              ; preds = %439
  %441 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %442 unwind label %484

442:                                              ; preds = %440
  %443 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %444 unwind label %484

444:                                              ; preds = %442
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %44, ptr noundef nonnull %45, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %441, ptr noundef nonnull align 8 dereferenceable(56) %443)
          to label %445 unwind label %484

445:                                              ; preds = %444
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %42) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  invoke void @_ZN6Halide8Internal8IntervalC2ENS_4ExprES2_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull %51, ptr noundef nonnull %52)
          to label %446 unwind label %489

446:                                              ; preds = %445
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE4pushIS2_vEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr noundef nonnull align 8 dereferenceable(56) %38, ptr noundef nonnull align 8 dereferenceable(32) %429, ptr noundef nonnull align 8 dereferenceable(16) %50)
          to label %447 unwind label %491

447:                                              ; preds = %446
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #13
  %448 = invoke { i64, ptr } @_ZN6Halide3IntEii(i32 noundef 32, i32 noundef 1)
          to label %449 unwind label %494

449:                                              ; preds = %447
  %450 = extractvalue { i64, ptr } %448, 0
  %451 = extractvalue { i64, ptr } %448, 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %54) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %56) #13
  %452 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %453 unwind label %496

453:                                              ; preds = %449
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %56, ptr noundef nonnull align 8 dereferenceable(32) %452, ptr noundef nonnull @.str.23)
          to label %454 unwind label %496

454:                                              ; preds = %453
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %55, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 8 dereferenceable(32) %429)
          to label %455 unwind label %498

455:                                              ; preds = %454
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %54, ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull @.str.24)
          to label %456 unwind label %500

456:                                              ; preds = %455
  invoke void @_ZN6Halide8Internal8Variable4makeENS_4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %53, i64 %450, ptr %451, ptr noundef nonnull align 8 dereferenceable(32) %54)
          to label %457 unwind label %502

457:                                              ; preds = %456
  %458 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %53) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #13
  %459 = invoke { i64, ptr } @_ZN6Halide3IntEii(i32 noundef 32, i32 noundef 1)
          to label %460 unwind label %508

460:                                              ; preds = %457
  %461 = extractvalue { i64, ptr } %459, 0
  %462 = extractvalue { i64, ptr } %459, 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %58) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %59) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #13
  %463 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %464 unwind label %510

464:                                              ; preds = %460
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %463, ptr noundef nonnull @.str.23)
          to label %465 unwind label %510

465:                                              ; preds = %464
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %59, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(32) %429)
          to label %466 unwind label %512

466:                                              ; preds = %465
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %58, ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull @.str.25)
          to label %467 unwind label %514

467:                                              ; preds = %466
  invoke void @_ZN6Halide8Internal8Variable4makeENS_4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %57, i64 %461, ptr %462, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %468 unwind label %516

468:                                              ; preds = %467
  %469 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %57) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %42) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  invoke void @_ZN6Halide8Internal8IntervalC2ENS_4ExprES2_(ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef nonnull %62, ptr noundef nonnull %63)
          to label %470 unwind label %522

470:                                              ; preds = %468
  invoke void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE4pushIS2_vEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr noundef nonnull align 8 dereferenceable(56) %39, ptr noundef nonnull align 8 dereferenceable(32) %429, ptr noundef nonnull align 8 dereferenceable(16) %61)
          to label %471 unwind label %524

471:                                              ; preds = %470
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #13
  %472 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal17ReductionVariableESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #13
  %473 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal17ReductionVariableESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #13
  br i1 %473, label %.lr.ph860, label %._crit_edge861

474:                                              ; preds = %.lr.ph860
  %475 = landingpad { ptr, i32 }
          cleanup
  br label %529

476:                                              ; preds = %435, %433, %431
  %477 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #13
  br label %529

478:                                              ; preds = %436
  %479 = landingpad { ptr, i32 }
          cleanup
  br label %488

480:                                              ; preds = %438
  %481 = landingpad { ptr, i32 }
          cleanup
  br label %487

482:                                              ; preds = %439
  %483 = landingpad { ptr, i32 }
          cleanup
  br label %486

484:                                              ; preds = %444, %442, %440
  %485 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #13
  br label %486

486:                                              ; preds = %484, %482
  %.pn590 = phi { ptr, i32 } [ %485, %484 ], [ %483, %482 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #13
  br label %487

487:                                              ; preds = %486, %480
  %.pn590.pn = phi { ptr, i32 } [ %.pn590, %486 ], [ %481, %480 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #13
  br label %488

488:                                              ; preds = %487, %478
  %.pn590.pn.pn = phi { ptr, i32 } [ %.pn590.pn, %487 ], [ %479, %478 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #13
  br label %528

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

491:                                              ; preds = %446
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #13
  br label %493

493:                                              ; preds = %491, %489
  %.pn594 = phi { ptr, i32 } [ %492, %491 ], [ %490, %489 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #13
  br label %527

494:                                              ; preds = %447
  %495 = landingpad { ptr, i32 }
          cleanup
  br label %507

496:                                              ; preds = %453, %449
  %497 = landingpad { ptr, i32 }
          cleanup
  br label %506

498:                                              ; preds = %454
  %499 = landingpad { ptr, i32 }
          cleanup
  br label %505

500:                                              ; preds = %455
  %501 = landingpad { ptr, i32 }
          cleanup
  br label %504

502:                                              ; preds = %456
  %503 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #13
  br label %504

504:                                              ; preds = %502, %500
  %.pn596 = phi { ptr, i32 } [ %503, %502 ], [ %501, %500 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #13
  br label %505

505:                                              ; preds = %504, %498
  %.pn596.pn = phi { ptr, i32 } [ %.pn596, %504 ], [ %499, %498 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #13
  br label %506

506:                                              ; preds = %505, %496
  %.pn596.pn.pn = phi { ptr, i32 } [ %.pn596.pn, %505 ], [ %497, %496 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %56) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54) #13
  br label %507

507:                                              ; preds = %506, %494
  %.pn596.pn.pn.pn = phi { ptr, i32 } [ %.pn596.pn.pn, %506 ], [ %495, %494 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #13
  br label %527

508:                                              ; preds = %457
  %509 = landingpad { ptr, i32 }
          cleanup
  br label %521

510:                                              ; preds = %464, %460
  %511 = landingpad { ptr, i32 }
          cleanup
  br label %520

512:                                              ; preds = %465
  %513 = landingpad { ptr, i32 }
          cleanup
  br label %519

514:                                              ; preds = %466
  %515 = landingpad { ptr, i32 }
          cleanup
  br label %518

516:                                              ; preds = %467
  %517 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #13
  br label %518

518:                                              ; preds = %516, %514
  %.pn601 = phi { ptr, i32 } [ %517, %516 ], [ %515, %514 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #13
  br label %519

519:                                              ; preds = %518, %512
  %.pn601.pn = phi { ptr, i32 } [ %.pn601, %518 ], [ %513, %512 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #13
  br label %520

520:                                              ; preds = %519, %510
  %.pn601.pn.pn = phi { ptr, i32 } [ %.pn601.pn, %519 ], [ %511, %510 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %59) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %58) #13
  br label %521

521:                                              ; preds = %520, %508
  %.pn601.pn.pn.pn = phi { ptr, i32 } [ %.pn601.pn.pn, %520 ], [ %509, %508 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #13
  br label %527

522:                                              ; preds = %468
  %523 = landingpad { ptr, i32 }
          cleanup
  br label %526

524:                                              ; preds = %470
  %525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %61) #13
  br label %526

526:                                              ; preds = %524, %522
  %.pn606 = phi { ptr, i32 } [ %525, %524 ], [ %523, %522 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #13
  br label %527

527:                                              ; preds = %526, %521, %507, %493
  %.pn606.pn = phi { ptr, i32 } [ %.pn606, %526 ], [ %.pn601.pn.pn.pn, %521 ], [ %.pn596.pn.pn.pn, %507 ], [ %.pn594, %493 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #13
  br label %528

528:                                              ; preds = %527, %488
  %.pn606.pn.pn = phi { ptr, i32 } [ %.pn606.pn, %527 ], [ %.pn590.pn.pn, %488 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #13
  br label %529

529:                                              ; preds = %528, %476, %474
  %.pn606.pn.pn.pn = phi { ptr, i32 } [ %.pn606.pn.pn, %528 ], [ %477, %476 ], [ %475, %474 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #13
  br label %1248

530:                                              ; preds = %._crit_edge861
  %531 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %532 unwind label %425

532:                                              ; preds = %530
  %533 = sext i32 %531 to i64
  invoke void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %345, i64 noundef %533)
          to label %534 unwind label %425

534:                                              ; preds = %532, %._crit_edge861
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %64) #13
  invoke void @_ZN6Halide8Internal29compute_function_value_boundsERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKSt3mapIS7_NS0_8FunctionESt4lessIS7_ESaISt4pairIKS7_SD_EEE(ptr dead_on_unwind nonnull writable sret(%"class.std::map.137") align 8 %64, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(48) %5)
          to label %.preheader unwind label %541

.preheader:                                       ; preds = %534, %586
  %indvars.iv1095 = phi i64 [ %indvars.iv.next1096, %586 ], [ 0, %534 ]
  %535 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %536 unwind label %543

536:                                              ; preds = %.preheader
  %537 = sext i32 %535 to i64
  %538 = icmp slt i64 %indvars.iv1095, %537
  br i1 %538, label %545, label %539

539:                                              ; preds = %536
  %540 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function7updatesEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %589 unwind label %599

541:                                              ; preds = %534
  %542 = landingpad { ptr, i32 }
          cleanup
  br label %1247

543:                                              ; preds = %.preheader
  %544 = landingpad { ptr, i32 }
          cleanup
  br label %1246

545:                                              ; preds = %536
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %65) #13
  %546 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition4argsEv(ptr noundef nonnull align 8 dereferenceable(8) %413)
          to label %547 unwind label %574

547:                                              ; preds = %545
  %548 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %546, i64 noundef %indvars.iv1095) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %548) #13
  invoke void @_ZN6Halide8Internal23bounds_of_expr_in_scopeENS_4ExprERKNS0_5ScopeINS0_8IntervalEEERKSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiES3_St4lessISF_ESaIS8_IKSF_S3_EEEb(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Internal::Interval") align 8 %65, ptr noundef nonnull %66, ptr noundef nonnull align 8 dereferenceable(56) %38, ptr noundef nonnull align 8 dereferenceable(48) %64, i1 noundef zeroext false)
          to label %549 unwind label %576

549:                                              ; preds = %547
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %67) #13
  %550 = invoke noundef zeroext i1 @_ZNK6Halide8Internal8Interval10is_boundedEv(ptr noundef nonnull align 8 dereferenceable(16) %65)
          to label %551 unwind label %578

551:                                              ; preds = %549
  br i1 %550, label %.critedge655, label %552

552:                                              ; preds = %551
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %68) #13
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %68, ptr noundef nonnull @.str.14, i32 noundef 657, ptr noundef nonnull @.str.35, i32 noundef 0)
          to label %553 unwind label %580

553:                                              ; preds = %552
  %554 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %68)
  %555 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA20_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %554, ptr noundef nonnull align 1 dereferenceable(20) @.str.36)
          to label %556 unwind label %582

556:                                              ; preds = %553
  %557 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %558 unwind label %582

558:                                              ; preds = %556
  %559 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %555, ptr noundef nonnull align 8 dereferenceable(32) %557)
          to label %560 unwind label %582

560:                                              ; preds = %558
  %561 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA17_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %559, ptr noundef nonnull align 1 dereferenceable(17) @.str.37)
          to label %562 unwind label %582

562:                                              ; preds = %560
  %563 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINS_4ExprEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %561, ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %564 unwind label %582

564:                                              ; preds = %562
  %565 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %563, ptr noundef nonnull align 1 dereferenceable(2) @.str.4)
          to label %566 unwind label %582

566:                                              ; preds = %564
  %567 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINS_4ExprEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %565, ptr noundef nonnull align 8 dereferenceable(8) %178)
          to label %568 unwind label %582

568:                                              ; preds = %566
  %569 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA3_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %567, ptr noundef nonnull align 1 dereferenceable(3) @.str.7)
          to label %570 unwind label %582

570:                                              ; preds = %568
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %67, ptr noundef nonnull align 8 dereferenceable(380) %569)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %68)
          to label %.critedge654 unwind label %580

.critedge654:                                     ; preds = %570
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %68) #13
  br label %.critedge655

.critedge655:                                     ; preds = %551, %.critedge654
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #13
  %571 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %345, i64 noundef %indvars.iv1095) #13
  br i1 %.not499, label %572, label %585

572:                                              ; preds = %.critedge655
  %573 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6Halide8Internal8IntervalaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %571, ptr noundef nonnull align 8 dereferenceable(16) %65)
          to label %586 unwind label %578

574:                                              ; preds = %545
  %575 = landingpad { ptr, i32 }
          cleanup
  br label %588

576:                                              ; preds = %547
  %577 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #13
  br label %588

578:                                              ; preds = %585, %572, %549
  %579 = landingpad { ptr, i32 }
          cleanup
  br label %587

580:                                              ; preds = %570, %552
  %581 = landingpad { ptr, i32 }
          cleanup
  br label %584

582:                                              ; preds = %568, %566, %564, %562, %560, %558, %556, %553
  %583 = landingpad { ptr, i32 }
          cleanup
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %68)
          to label %584 unwind label %1415

584:                                              ; preds = %582, %580
  %.pn582 = phi { ptr, i32 } [ %581, %580 ], [ %583, %582 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %68) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %67) #13
  br label %587

585:                                              ; preds = %.critedge655
  invoke void @_ZN6Halide8Internal8Interval7includeERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %571, ptr noundef nonnull align 8 dereferenceable(16) %65)
          to label %586 unwind label %578

586:                                              ; preds = %585, %572
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #13
  %indvars.iv.next1096 = add nuw nsw i64 %indvars.iv1095, 1
  br label %.preheader, !llvm.loop !74

587:                                              ; preds = %584, %578
  %.pn584 = phi { ptr, i32 } [ %579, %578 ], [ %.pn582, %584 ]
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %65) #13
  br label %588

588:                                              ; preds = %587, %576, %574
  %.pn584.pn = phi { ptr, i32 } [ %.pn584, %587 ], [ %577, %576 ], [ %575, %574 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #13
  br label %1246

589:                                              ; preds = %539
  %590 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal10DefinitionESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %540) #13
  %591 = and i64 %590, 4294967295
  %592 = icmp eq i64 %indvars.iv1104, %591
  br i1 %592, label %593, label %.loopexit691

593:                                              ; preds = %589
  store i8 1, ptr %346, align 8, !tbaa !75
  br label %594

594:                                              ; preds = %696, %593
  %indvars.iv1098 = phi i64 [ %indvars.iv.next1099, %696 ], [ 0, %593 ]
  %595 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %596 unwind label %601

596:                                              ; preds = %594
  %597 = sext i32 %595 to i64
  %598 = icmp slt i64 %indvars.iv1098, %597
  br i1 %598, label %603, label %.loopexit691

599:                                              ; preds = %.loopexit691, %539
  %600 = landingpad { ptr, i32 }
          cleanup
  br label %1246

601:                                              ; preds = %594
  %602 = landingpad { ptr, i32 }
          cleanup
  br label %1246

603:                                              ; preds = %596
  %604 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %248, i64 noundef %indvars.iv1098) #13
  %605 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %345, i64 noundef %indvars.iv1098) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #13
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %70, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %605)
          to label %606 unwind label %630

606:                                              ; preds = %603
  %607 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %608 unwind label %632

608:                                              ; preds = %606
  %609 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %610 unwind label %632

610:                                              ; preds = %608
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %69, ptr noundef nonnull %70, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %607, ptr noundef nonnull align 8 dereferenceable(56) %609)
          to label %611 unwind label %632

611:                                              ; preds = %610
  %612 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %605, ptr noundef nonnull align 8 dereferenceable(8) %69) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #13
  %613 = getelementptr inbounds i8, ptr %605, i64 8
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %72, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %613)
          to label %614 unwind label %635

614:                                              ; preds = %611
  %615 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %616 unwind label %637

616:                                              ; preds = %614
  %617 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %618 unwind label %637

618:                                              ; preds = %616
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %71, ptr noundef nonnull %72, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %615, ptr noundef nonnull align 8 dereferenceable(56) %617)
          to label %619 unwind label %637

619:                                              ; preds = %618
  %620 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %613, ptr noundef nonnull align 8 dereferenceable(8) %71) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #13
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %73, ptr noundef nonnull align 8 dereferenceable(32) %604)
          to label %621 unwind label %640

621:                                              ; preds = %619
  %622 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %605, ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %623 unwind label %642

623:                                              ; preds = %621
  br i1 %622, label %624, label %.critedge657.thread

.critedge657.thread:                              ; preds = %623
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #13
  br label %651

624:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #13
  %625 = getelementptr inbounds i8, ptr %604, i64 32
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %74, ptr noundef nonnull align 8 dereferenceable(32) %625)
          to label %626 unwind label %644

626:                                              ; preds = %624
  %627 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %613, ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %.critedge657 unwind label %646

.critedge657:                                     ; preds = %626
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #13
  br i1 %627, label %628, label %651

628:                                              ; preds = %.critedge657
  %629 = getelementptr inbounds i8, ptr %605, i64 16
  store i8 1, ptr %629, align 8, !tbaa !76
  br label %696

630:                                              ; preds = %603
  %631 = landingpad { ptr, i32 }
          cleanup
  br label %634

632:                                              ; preds = %610, %608, %606
  %633 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #13
  br label %634

634:                                              ; preds = %632, %630
  %.pn564 = phi { ptr, i32 } [ %633, %632 ], [ %631, %630 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #13
  br label %1246

635:                                              ; preds = %611
  %636 = landingpad { ptr, i32 }
          cleanup
  br label %639

637:                                              ; preds = %618, %616, %614
  %638 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #13
  br label %639

639:                                              ; preds = %637, %635
  %.pn566 = phi { ptr, i32 } [ %638, %637 ], [ %636, %635 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #13
  br label %1246

640:                                              ; preds = %619
  %641 = landingpad { ptr, i32 }
          cleanup
  br label %650

642:                                              ; preds = %621
  %643 = landingpad { ptr, i32 }
          cleanup
  br label %649

644:                                              ; preds = %624
  %645 = landingpad { ptr, i32 }
          cleanup
  br label %648

646:                                              ; preds = %626
  %647 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #13
  br label %648

648:                                              ; preds = %644, %646
  %.pn568 = phi { ptr, i32 } [ %647, %646 ], [ %645, %644 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #13
  br label %649

649:                                              ; preds = %648, %642
  %.pn568.pn = phi { ptr, i32 } [ %.pn568, %648 ], [ %643, %642 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %73) #13
  br label %650

650:                                              ; preds = %649, %640
  %.pn568.pn.pn = phi { ptr, i32 } [ %.pn568.pn, %649 ], [ %641, %640 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #13
  br label %1246

651:                                              ; preds = %.critedge657.thread, %.critedge657
  %652 = call noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3MinEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %605)
  %653 = call noundef ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3MaxEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8) %613)
  %.not572 = icmp eq ptr %652, null
  br i1 %.not572, label %657, label %654

654:                                              ; preds = %651
  %655 = getelementptr inbounds i8, ptr %652, i64 40
  %656 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %655)
          to label %657 unwind label %681

657:                                              ; preds = %651, %654
  %658 = phi ptr [ %656, %654 ], [ null, %651 ]
  %.not573 = icmp eq ptr %653, null
  br i1 %.not573, label %.critedge661.thread, label %659

659:                                              ; preds = %657
  %660 = getelementptr inbounds i8, ptr %653, i64 40
  %661 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %660)
          to label %662 unwind label %683

662:                                              ; preds = %659
  %663 = icmp ne ptr %658, null
  %664 = icmp ne ptr %661, null
  %or.cond = and i1 %663, %664
  br i1 %or.cond, label %665, label %.critedge661.thread

665:                                              ; preds = %662
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #13
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %75, ptr noundef nonnull align 8 dereferenceable(32) %604)
          to label %666 unwind label %685

666:                                              ; preds = %665
  %667 = getelementptr inbounds i8, ptr %652, i64 32
  %668 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %667, ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %669 unwind label %687

669:                                              ; preds = %666
  br i1 %668, label %670, label %.critedge661.thread689

.critedge661.thread689:                           ; preds = %669
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #13
  br label %.critedge661.thread

670:                                              ; preds = %669
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #13
  %671 = getelementptr inbounds i8, ptr %604, i64 32
  invoke void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %76, ptr noundef nonnull align 8 dereferenceable(32) %671)
          to label %672 unwind label %689

672:                                              ; preds = %670
  %673 = getelementptr inbounds i8, ptr %653, i64 32
  %674 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %673, ptr noundef nonnull align 8 dereferenceable(8) %76)
          to label %.critedge661 unwind label %691

.critedge661:                                     ; preds = %672
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #13
  br i1 %674, label %675, label %.critedge661.thread

675:                                              ; preds = %.critedge661
  %676 = getelementptr inbounds i8, ptr %605, i64 17
  store i8 1, ptr %676, align 1, !tbaa !82
  %677 = load i64, ptr %658, align 8, !tbaa !83
  %678 = getelementptr inbounds i8, ptr %605, i64 24
  store i64 %677, ptr %678, align 8, !tbaa !84
  %679 = load i64, ptr %661, align 8, !tbaa !83
  %680 = getelementptr inbounds i8, ptr %605, i64 32
  store i64 %679, ptr %680, align 8, !tbaa !85
  br label %696

681:                                              ; preds = %654
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %1246

683:                                              ; preds = %659
  %684 = landingpad { ptr, i32 }
          cleanup
  br label %1246

685:                                              ; preds = %665
  %686 = landingpad { ptr, i32 }
          cleanup
  br label %695

687:                                              ; preds = %666
  %688 = landingpad { ptr, i32 }
          cleanup
  br label %694

689:                                              ; preds = %670
  %690 = landingpad { ptr, i32 }
          cleanup
  br label %693

691:                                              ; preds = %672
  %692 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #13
  br label %693

693:                                              ; preds = %689, %691
  %.pn574 = phi { ptr, i32 } [ %692, %691 ], [ %690, %689 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #13
  br label %694

694:                                              ; preds = %687, %693
  %.pn574.pn = phi { ptr, i32 } [ %.pn574, %693 ], [ %688, %687 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #13
  br label %695

695:                                              ; preds = %685, %694
  %.pn574.pn.pn = phi { ptr, i32 } [ %.pn574.pn, %694 ], [ %686, %685 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #13
  br label %1246

.critedge661.thread:                              ; preds = %657, %662, %.critedge661.thread689, %.critedge661
  store i8 0, ptr %346, align 8, !tbaa !75
  br label %696

696:                                              ; preds = %675, %.critedge661.thread, %628
  %indvars.iv.next1099 = add nuw nsw i64 %indvars.iv1098, 1
  br label %594, !llvm.loop !86

.loopexit691:                                     ; preds = %596, %589
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #13
  %697 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule6splitsEv(ptr noundef nonnull align 8 dereferenceable(8) %414)
          to label %698 unwind label %599

698:                                              ; preds = %.loopexit691
  %699 = call noundef zeroext i1 @_ZNKSt6vectorIN6Halide8Internal5SplitESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %697) #13
  br i1 %699, label %.critedge664, label %700

700:                                              ; preds = %698
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %78) #13
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %78, ptr noundef nonnull @.str.14, i32 noundef 694, ptr noundef nonnull @.str.38, i32 noundef 1)
          to label %701 unwind label %724

701:                                              ; preds = %700
  %702 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %78)
  %703 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA11_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %702, ptr noundef nonnull align 1 dereferenceable(11) @.str.39)
          to label %704 unwind label %726

704:                                              ; preds = %701
  %705 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %706 unwind label %726

706:                                              ; preds = %704
  %707 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %703, ptr noundef nonnull align 8 dereferenceable(32) %705)
          to label %708 unwind label %726

708:                                              ; preds = %706
  %709 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA31_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %707, ptr noundef nonnull align 1 dereferenceable(31) @.str.40)
          to label %710 unwind label %726

710:                                              ; preds = %708
  %711 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA62_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %709, ptr noundef nonnull align 1 dereferenceable(62) @.str.41)
          to label %712 unwind label %726

712:                                              ; preds = %710
  %713 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA72_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %711, ptr noundef nonnull align 1 dereferenceable(72) @.str.42)
          to label %714 unwind label %726

714:                                              ; preds = %712
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %77, ptr noundef nonnull align 8 dereferenceable(380) %713)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %78)
          to label %.critedge663 unwind label %724

.critedge663:                                     ; preds = %714
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %78) #13
  br label %.critedge664

.critedge664:                                     ; preds = %698, %.critedge663
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #13
  %715 = getelementptr inbounds i8, ptr %386, i64 40
  store i8 1, ptr %715, align 8, !tbaa !87
  %716 = getelementptr inbounds i8, ptr %386, i64 16
  br label %717

717:                                              ; preds = %821, %.critedge664
  %.0474 = phi i64 [ 0, %.critedge664 ], [ %822, %821 ]
  %718 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule4dimsEv(ptr noundef nonnull align 8 dereferenceable(8) %414)
          to label %719 unwind label %729

719:                                              ; preds = %717
  %720 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal3DimESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %718) #13
  %721 = icmp ult i64 %.0474, %720
  br i1 %721, label %731, label %722

722:                                              ; preds = %719
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %85) #13
  %723 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition4argsEv(ptr noundef nonnull align 8 dereferenceable(8) %413)
          to label %826 unwind label %844

724:                                              ; preds = %714, %700
  %725 = landingpad { ptr, i32 }
          cleanup
  br label %728

726:                                              ; preds = %712, %710, %708, %706, %704, %701
  %727 = landingpad { ptr, i32 }
          cleanup
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %78)
          to label %728 unwind label %1415

728:                                              ; preds = %726, %724
  %.pn503 = phi { ptr, i32 } [ %725, %724 ], [ %727, %726 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %78) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #13
  br label %1246

729:                                              ; preds = %717
  %730 = landingpad { ptr, i32 }
          cleanup
  br label %1246

731:                                              ; preds = %719
  %732 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule4dimsEv(ptr noundef nonnull align 8 dereferenceable(8) %414)
          to label %733 unwind label %737

733:                                              ; preds = %731
  %734 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZNKSt6vectorIN6Halide8Internal3DimESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %732, i64 noundef %.0474) #13
  %735 = invoke noundef zeroext i1 @_ZNK6Halide8Internal5ScopeINS0_8IntervalEE8containsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(56) %39, ptr noundef nonnull align 8 dereferenceable(32) %734)
          to label %736 unwind label %737

736:                                              ; preds = %733
  br i1 %735, label %739, label %821

737:                                              ; preds = %733, %731
  %738 = landingpad { ptr, i32 }
          cleanup
  br label %1246

739:                                              ; preds = %736
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %79) #13
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopC2Ev(ptr noundef nonnull align 8 dereferenceable(120) %79) #13
  %740 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 8 dereferenceable(32) %734)
          to label %741 unwind label %761

741:                                              ; preds = %739
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %80) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %81) #13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %82) #13
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %82, ptr noundef nonnull align 8 dereferenceable(32) %389, ptr noundef nonnull @.str.43)
          to label %742 unwind label %763

742:                                              ; preds = %741
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %83) #13
  invoke void @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %83, i64 noundef %.0474)
          to label %743 unwind label %765

743:                                              ; preds = %742
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %81, ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 8 dereferenceable(32) %83)
          to label %744 unwind label %767

744:                                              ; preds = %743
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %80, ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull @.str.44)
          to label %745 unwind label %769

745:                                              ; preds = %744
  %746 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %179, ptr noundef nonnull align 8 dereferenceable(32) %80) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %84) #13
  invoke void @_ZNK6Halide8Internal5ScopeINS0_8IntervalEE3getIS2_vEET_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Internal::Interval") align 8 %84, ptr noundef nonnull align 8 dereferenceable(56) %38, ptr noundef nonnull align 8 dereferenceable(32) %79)
          to label %747 unwind label %774

747:                                              ; preds = %745
  %748 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %749 unwind label %776

749:                                              ; preds = %747
  %750 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(8) %181)
          to label %751 unwind label %776

751:                                              ; preds = %749
  %752 = call noundef zeroext i1 @_ZNK6Halide8Internal3Dim7is_pureEv(ptr noundef nonnull align 8 dereferenceable(44) %734)
  %753 = zext i1 %752 to i8
  store i8 %753, ptr %183, align 8, !tbaa !88
  %754 = call noundef zeroext i1 @_ZNK6Halide8Internal3Dim7is_rvarEv(ptr noundef nonnull align 8 dereferenceable(44) %734)
  %755 = zext i1 %754 to i8
  store i8 %755, ptr %184, align 1, !tbaa !90
  store i32 -1, ptr %185, align 8, !tbaa !91
  store i8 0, ptr %186, align 4, !tbaa !92
  br label %756

756:                                              ; preds = %795, %751
  %indvars.iv1101 = phi i64 [ %indvars.iv.next1102, %795 ], [ 0, %751 ]
  %757 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %758 unwind label %778

758:                                              ; preds = %756
  %759 = sext i32 %757 to i64
  %760 = icmp slt i64 %indvars.iv1101, %759
  br i1 %760, label %780, label %.loopexit

761:                                              ; preds = %739
  %762 = landingpad { ptr, i32 }
          cleanup
  br label %825

763:                                              ; preds = %741
  %764 = landingpad { ptr, i32 }
          cleanup
  br label %773

765:                                              ; preds = %742
  %766 = landingpad { ptr, i32 }
          cleanup
  br label %772

767:                                              ; preds = %743
  %768 = landingpad { ptr, i32 }
          cleanup
  br label %771

769:                                              ; preds = %744
  %770 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #13
  br label %771

771:                                              ; preds = %769, %767
  %.pn552 = phi { ptr, i32 } [ %770, %769 ], [ %768, %767 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #13
  br label %772

772:                                              ; preds = %771, %765
  %.pn552.pn = phi { ptr, i32 } [ %.pn552, %771 ], [ %766, %765 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %83) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #13
  br label %773

773:                                              ; preds = %772, %763
  %.pn552.pn.pn = phi { ptr, i32 } [ %.pn552.pn, %772 ], [ %764, %763 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %82) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %81) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %80) #13
  br label %825

774:                                              ; preds = %745
  %775 = landingpad { ptr, i32 }
          cleanup
  br label %824

776:                                              ; preds = %812, %749, %747
  %777 = landingpad { ptr, i32 }
          cleanup
  br label %823

778:                                              ; preds = %789, %785, %756
  %779 = landingpad { ptr, i32 }
          cleanup
  br label %823

780:                                              ; preds = %758
  %781 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %indvars.iv1101) #13
  %782 = 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) %79, ptr noundef nonnull align 8 dereferenceable(32) %781) #13
  br i1 %782, label %783, label %785

783:                                              ; preds = %780
  %784 = trunc nuw nsw i64 %indvars.iv1101 to i32
  store i32 %784, ptr %185, align 8, !tbaa !91
  br label %785

785:                                              ; preds = %783, %780
  %786 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %345, i64 noundef %indvars.iv1101) #13
  %787 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull align 8 dereferenceable(8) %786)
          to label %788 unwind label %778

788:                                              ; preds = %785
  br i1 %787, label %789, label %795

789:                                              ; preds = %788
  %790 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %345, i64 noundef %indvars.iv1101) #13
  %791 = getelementptr inbounds i8, ptr %790, i64 8
  %792 = invoke noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(8) %791)
          to label %793 unwind label %778

793:                                              ; preds = %789
  br i1 %792, label %.loopexit.thread, label %795

.loopexit.thread:                                 ; preds = %793
  %794 = trunc nuw nsw i64 %indvars.iv1101 to i32
  store i8 1, ptr %186, align 4, !tbaa !92
  store i32 %794, ptr %187, align 8, !tbaa !93
  br label %.loopexit._crit_edge

795:                                              ; preds = %788, %793
  %indvars.iv.next1102 = add nuw nsw i64 %indvars.iv1101, 1
  br label %756, !llvm.loop !94

.loopexit:                                        ; preds = %758
  %.pre = load i8, ptr %186, align 4, !tbaa !92, !range !95
  %796 = trunc nuw i8 %.pre to i1
  br i1 %796, label %.loopexit._crit_edge, label %797

.loopexit._crit_edge:                             ; preds = %.loopexit.thread, %.loopexit
  %.pre1107 = load i8, ptr %188, align 4, !tbaa !96, !range !95
  br label %812

797:                                              ; preds = %.loopexit
  %798 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %180)
          to label %799 unwind label %807

799:                                              ; preds = %797
  %800 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %182)
          to label %801 unwind label %809

801:                                              ; preds = %799
  %802 = icmp ne ptr %798, null
  %803 = icmp ne ptr %800, null
  %or.cond3 = and i1 %802, %803
  br i1 %or.cond3, label %804, label %811

804:                                              ; preds = %801
  store i8 1, ptr %188, align 4, !tbaa !96
  %805 = load i64, ptr %798, align 8, !tbaa !83
  store i64 %805, ptr %189, align 8, !tbaa !97
  %806 = load i64, ptr %800, align 8, !tbaa !83
  store i64 %806, ptr %190, align 8, !tbaa !98
  br label %812

807:                                              ; preds = %797
  %808 = landingpad { ptr, i32 }
          cleanup
  br label %823

809:                                              ; preds = %799
  %810 = landingpad { ptr, i32 }
          cleanup
  br label %823

811:                                              ; preds = %801
  store i8 0, ptr %188, align 4, !tbaa !96
  br label %812

812:                                              ; preds = %.loopexit._crit_edge, %804, %811
  %813 = phi i8 [ %.pre1107, %.loopexit._crit_edge ], [ 1, %804 ], [ 0, %811 ]
  %814 = trunc nuw i8 %813 to i1
  %815 = load i8, ptr %186, align 4, !range !95
  %816 = select i1 %814, i8 1, i8 %815
  %817 = load i8, ptr %715, align 8, !tbaa !87, !range !95, !noundef !99
  %818 = and i8 %816, %817
  store i8 %818, ptr %715, align 8, !tbaa !87
  %819 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %716, ptr noundef nonnull align 8 dereferenceable(120) %79)
          to label %820 unwind label %776

820:                                              ; preds = %812
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #13
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %79) #13
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %79) #13
  br label %821

821:                                              ; preds = %736, %820
  %822 = add i64 %.0474, 1
  br label %717, !llvm.loop !100

823:                                              ; preds = %807, %809, %778, %776
  %.pn558 = phi { ptr, i32 } [ %777, %776 ], [ %779, %778 ], [ %810, %809 ], [ %808, %807 ]
  call void @_ZN6Halide8Internal8IntervalD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %84) #13
  br label %824

824:                                              ; preds = %823, %774
  %.pn558.pn = phi { ptr, i32 } [ %.pn558, %823 ], [ %775, %774 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #13
  br label %825

825:                                              ; preds = %824, %773, %761
  %.pn558.pn.pn = phi { ptr, i32 } [ %.pn558.pn, %824 ], [ %.pn552.pn.pn, %773 ], [ %762, %761 ]
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %79) #13
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %79) #13
  br label %1246

826:                                              ; preds = %722
  invoke void @_ZNSt6vectorIN6Halide4ExprESaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(24) %723)
          to label %827 unwind label %844

827:                                              ; preds = %826
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %87) #13
  %828 = call ptr @_ZNSt6vectorIN6Halide4ExprESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #13
  store ptr %828, ptr %87, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide4ExprESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %87) #13
  %829 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition6valuesEv(ptr noundef nonnull align 8 dereferenceable(8) %413)
          to label %830 unwind label %846

830:                                              ; preds = %827
  %831 = call ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %829) #13
  %832 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition6valuesEv(ptr noundef nonnull align 8 dereferenceable(8) %413)
          to label %833 unwind label %846

833:                                              ; preds = %830
  %834 = call ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %832) #13
  %835 = load ptr, ptr %86, align 8
  %836 = invoke ptr @_ZNSt6vectorIN6Halide4ExprESaIS1_EE6insertIN9__gnu_cxx17__normal_iteratorIPKS1_S3_EEvEENS6_IPS1_S3_EES9_T_SC_(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr %835, ptr %831, ptr %834)
          to label %837 unwind label %846

837:                                              ; preds = %833
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #13
  %838 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal10Definition9predicateEv(ptr noundef nonnull align 8 dereferenceable(8) %413)
          to label %839 unwind label %848

839:                                              ; preds = %837
  %840 = call noundef zeroext i1 @_ZNK6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEE7definedEv(ptr noundef nonnull align 8 dereferenceable(8) %838)
  br i1 %840, label %841, label %850

841:                                              ; preds = %839
  %842 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal10Definition9predicateEv(ptr noundef nonnull align 8 dereferenceable(8) %413)
          to label %843 unwind label %848

843:                                              ; preds = %841
  invoke void @_ZNSt6vectorIN6Halide4ExprESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(8) %842)
          to label %850 unwind label %848

844:                                              ; preds = %826, %722
  %845 = landingpad { ptr, i32 }
          cleanup
  br label %1245

846:                                              ; preds = %833, %830, %827
  %847 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #13
  br label %1244

848:                                              ; preds = %843, %841, %837
  %849 = landingpad { ptr, i32 }
          cleanup
  br label %1244

850:                                              ; preds = %843, %839
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #13
  %851 = invoke { i64, ptr } @_ZN6Halide3IntEii(i32 noundef 32, i32 noundef 1)
          to label %852 unwind label %871

852:                                              ; preds = %850
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %89) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %90) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull @.str.45, ptr noundef nonnull align 1 dereferenceable(1) %90)
          to label %853 unwind label %873

853:                                              ; preds = %852
  %854 = extractvalue { i64, ptr } %851, 1
  %855 = extractvalue { i64, ptr } %851, 0
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %91, i8 0, i64 24, i1 false)
  call void @_ZN6Halide8Internal11FunctionPtrC2Ev(ptr noundef nonnull align 8 dereferenceable(20) %91) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %92, i8 0, i64 16, i1 false)
  call void @_ZN6Halide6BufferIvEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %93, i8 0, i64 16, i1 false)
  call void @_ZN6Halide8Internal9ParameterC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #13
  invoke void @_ZN6Halide8Internal4Call4makeENS_4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS_4ExprESaISC_EENS1_8CallTypeENS0_11FunctionPtrEiNS_6BufferIvEENS0_9ParameterE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %88, i64 %855, ptr %854, ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(24) %85, i32 noundef 1, ptr noundef nonnull %91, i32 noundef 0, ptr noundef nonnull %92, ptr noundef nonnull %93)
          to label %856 unwind label %875

856:                                              ; preds = %853
  call void @_ZN6Halide8Internal9ParameterD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #13
  call void @_ZN6Halide6BufferIvED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #13
  call void @_ZN6Halide8Internal11FunctionPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %91) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #13
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %94) #13
  call void @_ZN6Halide8Internal8FunctionC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %95, ptr noundef nonnull align 8 dereferenceable(24) %14) #13
  invoke void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN10CheckTypesC2ES4_(ptr noundef nonnull align 8 dereferenceable(104) %94, ptr noundef nonnull %95)
          to label %857 unwind label %878

857:                                              ; preds = %856
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #13
  invoke void @_ZNK6Halide8Internal8IRHandle6acceptEPNS0_9IRVisitorE(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull %94)
          to label %858 unwind label %880

858:                                              ; preds = %857
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #13
  %859 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition6valuesEv(ptr noundef nonnull align 8 dereferenceable(8) %413)
          to label %860 unwind label %882

860:                                              ; preds = %858
  %861 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %859, i64 noundef 0) #13
  %862 = invoke { i64, ptr } @_ZNK6Halide4Expr4typeEv(ptr noundef nonnull align 8 dereferenceable(8) %861)
          to label %863 unwind label %882

863:                                              ; preds = %860
  %864 = extractvalue { i64, ptr } %862, 0
  store i64 %864, ptr %96, align 8
  %865 = extractvalue { i64, ptr } %862, 1
  store ptr %865, ptr %191, align 8
  %866 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition6valuesEv(ptr noundef nonnull align 8 dereferenceable(8) %413)
          to label %867 unwind label %884

867:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %97) #13
  %868 = call ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %866) #13
  store ptr %868, ptr %97, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #13
  %869 = call ptr @_ZNKSt6vectorIN6Halide4ExprESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %866) #13
  store ptr %869, ptr %98, align 8
  %870 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide4ExprESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %98) #13
  br i1 %870, label %.lr.ph864, label %._crit_edge865

._crit_edge865:                                   ; preds = %911, %867
  %.0480.lcssa = phi i32 [ 0, %867 ], [ %892, %911 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #13
  br i1 %.not499, label %915, label %917

871:                                              ; preds = %850
  %872 = landingpad { ptr, i32 }
          cleanup
  br label %1243

873:                                              ; preds = %852
  %874 = landingpad { ptr, i32 }
          cleanup
  br label %877

875:                                              ; preds = %853
  %876 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal9ParameterD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #13
  call void @_ZN6Halide6BufferIvED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #13
  call void @_ZN6Halide8Internal11FunctionPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(20) %91) #13
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #13
  br label %877

877:                                              ; preds = %875, %873
  %.pn505 = phi { ptr, i32 } [ %876, %875 ], [ %874, %873 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %90) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #13
  br label %1243

878:                                              ; preds = %856
  %879 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #13
  br label %1242

880:                                              ; preds = %857
  %881 = landingpad { ptr, i32 }
          cleanup
  br label %1241

882:                                              ; preds = %860, %858
  %883 = landingpad { ptr, i32 }
          cleanup
  br label %1240

884:                                              ; preds = %863
  %885 = landingpad { ptr, i32 }
          cleanup
  br label %1240

.lr.ph864:                                        ; preds = %867, %911
  %.0480862 = phi i32 [ %892, %911 ], [ 0, %867 ]
  %886 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide4ExprESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %97) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %99) #13
  %887 = invoke { i64, ptr } @_ZNK6Halide4Expr4typeEv(ptr noundef nonnull align 8 dereferenceable(8) %886)
          to label %888 unwind label %905

888:                                              ; preds = %.lr.ph864
  %889 = extractvalue { i64, ptr } %887, 0
  store i64 %889, ptr %99, align 8
  %890 = extractvalue { i64, ptr } %887, 1
  store ptr %890, ptr %192, align 8
  %891 = call noundef i32 @_ZNK6Halide4Type5bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %99)
  %892 = add nsw i32 %891, %.0480862
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %99) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %100) #13
  %893 = invoke { i64, ptr } @_ZNK6Halide4Expr4typeEv(ptr noundef nonnull align 8 dereferenceable(8) %886)
          to label %894 unwind label %907

894:                                              ; preds = %888
  %895 = extractvalue { i64, ptr } %893, 0
  store i64 %895, ptr %100, align 8
  %896 = extractvalue { i64, ptr } %893, 1
  store ptr %896, ptr %193, align 8
  %897 = call noundef i32 @_ZNK6Halide4Type5bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %100)
  %898 = call noundef i32 @_ZNK6Halide4Type5bytesEv(ptr noundef nonnull align 8 dereferenceable(16) %96)
  %899 = icmp sgt i32 %897, %898
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #13
  br i1 %899, label %900, label %911

900:                                              ; preds = %894
  %901 = invoke { i64, ptr } @_ZNK6Halide4Expr4typeEv(ptr noundef nonnull align 8 dereferenceable(8) %886)
          to label %902 unwind label %909

902:                                              ; preds = %900
  %903 = extractvalue { i64, ptr } %901, 0
  %904 = extractvalue { i64, ptr } %901, 1
  store i64 %903, ptr %96, align 8
  store ptr %904, ptr %191, align 8, !tbaa !44
  br label %911

905:                                              ; preds = %.lr.ph864
  %906 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %99) #13
  br label %914

907:                                              ; preds = %888
  %908 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #13
  br label %914

909:                                              ; preds = %900
  %910 = landingpad { ptr, i32 }
          cleanup
  br label %914

911:                                              ; preds = %902, %894
  %912 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide4ExprESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %97) #13
  %913 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide4ExprESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %98) #13
  br i1 %913, label %.lr.ph864, label %._crit_edge865

914:                                              ; preds = %909, %907, %905
  %.pn542 = phi { ptr, i32 } [ %910, %909 ], [ %908, %907 ], [ %906, %905 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %97) #13
  br label %1240

915:                                              ; preds = %._crit_edge865
  %916 = sitofp i32 %.0480.lcssa to double
  store double %916, ptr %347, align 8, !tbaa !101
  br label %917

917:                                              ; preds = %915, %._crit_edge865
  %918 = invoke noundef i32 @_ZNK6Halide6Target19natural_vector_sizeERKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(16) %194)
          to label %919 unwind label %921

919:                                              ; preds = %917
  %920 = getelementptr inbounds i8, ptr %386, i64 44
  store i32 %918, ptr %920, align 4, !tbaa !102
  br i1 %.not499, label %926, label %923

921:                                              ; preds = %917
  %922 = landingpad { ptr, i32 }
          cleanup
  br label %1240

923:                                              ; preds = %919
  %924 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %348, ptr noundef nonnull align 4 dereferenceable(4) %920)
  %925 = load i32, ptr %924, align 4, !tbaa !103
  br label %926

926:                                              ; preds = %919, %923
  %storemerge1109 = phi i32 [ %925, %923 ], [ %918, %919 ]
  store i32 %storemerge1109, ptr %348, align 8, !tbaa !104
  store i8 0, ptr %349, align 2, !tbaa !105
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101) #13
  %927 = call ptr @_ZNKSt6vectorIN6Halide8Internal8FunctionESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #13
  store ptr %927, ptr %101, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %102) #13
  %928 = call ptr @_ZNKSt6vectorIN6Halide8Internal8FunctionESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #13
  store ptr %928, ptr %102, align 8
  %929 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %102) #13
  br i1 %929, label %.lr.ph867, label %._crit_edge868

._crit_edge868:                                   ; preds = %934, %926
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #13
  %930 = load i8, ptr %349, align 2, !tbaa !105, !range !95, !noundef !99
  %931 = trunc nuw i8 %930 to i1
  br i1 %931, label %942, label %1060

.lr.ph867:                                        ; preds = %926, %934
  %932 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %101) #13
  %933 = invoke noundef zeroext i1 @_ZNK6Halide8Internal8Function7same_asERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %932, ptr noundef nonnull align 8 dereferenceable(24) %247)
          to label %934 unwind label %940

934:                                              ; preds = %.lr.ph867
  %935 = load i8, ptr %349, align 2, !tbaa !105, !range !95, !noundef !99
  %936 = zext i1 %933 to i8
  %937 = or i8 %935, %936
  store i8 %937, ptr %349, align 2, !tbaa !105
  %938 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %101) #13
  %939 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal8FunctionESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %102) #13
  br i1 %939, label %.lr.ph867, label %._crit_edge868

940:                                              ; preds = %.lr.ph867
  %941 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #13
  br label %1240

942:                                              ; preds = %._crit_edge868
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %103) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %103) #13
  %943 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function8scheduleEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %944 unwind label %951

944:                                              ; preds = %942
  %945 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Halide8Internal12FuncSchedule9estimatesEv(ptr noundef nonnull align 8 dereferenceable(8) %943)
          to label %946 unwind label %951

946:                                              ; preds = %944
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %104) #13
  %947 = call ptr @_ZNSt6vectorIN6Halide8Internal5BoundESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %945) #13
  store ptr %947, ptr %104, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %105) #13
  %948 = call ptr @_ZNSt6vectorIN6Halide8Internal5BoundESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %945) #13
  store ptr %948, ptr %105, align 8
  %949 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(8) %105) #13
  br i1 %949, label %.lr.ph870, label %._crit_edge871

._crit_edge871:                                   ; preds = %964, %946
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #13
  %950 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function8scheduleEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %977 unwind label %983

951:                                              ; preds = %944, %942
  %952 = landingpad { ptr, i32 }
          cleanup
  br label %1059

.lr.ph870:                                        ; preds = %946, %964
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %106) #13
  %953 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %104) #13
  invoke void @_ZN6Halide8Internal5BoundC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(64) %106, ptr noundef nonnull align 8 dereferenceable(64) %953)
          to label %954 unwind label %967

954:                                              ; preds = %.lr.ph870
  %955 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %195)
          to label %956 unwind label %969

956:                                              ; preds = %954
  %957 = load i64, ptr %955, align 8, !tbaa !83
  %958 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %196)
          to label %959 unwind label %971

959:                                              ; preds = %956
  %960 = load i64, ptr %958, align 8, !tbaa !83
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %107) #13
  %961 = add i64 %957, -1
  %962 = add i64 %961, %960
  call void @_ZN6Halide8Internal13Autoscheduler4SpanC2Ellb(ptr noundef nonnull align 8 dereferenceable(17) %107, i64 noundef %957, i64 noundef %962, i1 noundef zeroext false)
  %963 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEEixERSD_(ptr noundef nonnull align 8 dereferenceable(48) %103, ptr noundef nonnull align 8 dereferenceable(32) %106)
          to label %964 unwind label %973

964:                                              ; preds = %959
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %963, ptr noundef nonnull align 8 dereferenceable(17) %107, i64 17, i1 false), !tbaa.struct !106
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %107) #13
  call void @_ZN6Halide8Internal5BoundD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %106) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %106) #13
  %965 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %104) #13
  %966 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(8) %105) #13
  br i1 %966, label %.lr.ph870, label %._crit_edge871

967:                                              ; preds = %.lr.ph870
  %968 = landingpad { ptr, i32 }
          cleanup
  br label %976

969:                                              ; preds = %954
  %970 = landingpad { ptr, i32 }
          cleanup
  br label %975

971:                                              ; preds = %956
  %972 = landingpad { ptr, i32 }
          cleanup
  br label %975

973:                                              ; preds = %959
  %974 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %107) #13
  br label %975

975:                                              ; preds = %971, %973, %969
  %.pn536.pn = phi { ptr, i32 } [ %970, %969 ], [ %974, %973 ], [ %972, %971 ]
  call void @_ZN6Halide8Internal5BoundD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %106) #13
  br label %976

976:                                              ; preds = %975, %967
  %.pn536.pn.pn = phi { ptr, i32 } [ %.pn536.pn, %975 ], [ %968, %967 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %106) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #13
  br label %1059

977:                                              ; preds = %._crit_edge871
  %978 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Halide8Internal12FuncSchedule6boundsEv(ptr noundef nonnull align 8 dereferenceable(8) %950)
          to label %979 unwind label %983

979:                                              ; preds = %977
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %108) #13
  %980 = call ptr @_ZNSt6vectorIN6Halide8Internal5BoundESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %978) #13
  store ptr %980, ptr %108, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %109) #13
  %981 = call ptr @_ZNSt6vectorIN6Halide8Internal5BoundESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %978) #13
  store ptr %981, ptr %109, align 8
  %982 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %109) #13
  br i1 %982, label %.lr.ph873, label %._crit_edge874

._crit_edge874:                                   ; preds = %1008, %979
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %112) #13
  br label %1013

983:                                              ; preds = %977, %._crit_edge871
  %984 = landingpad { ptr, i32 }
          cleanup
  br label %1059

.lr.ph873:                                        ; preds = %979, %1008
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %110) #13
  %985 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %108) #13
  invoke void @_ZN6Halide8Internal5BoundC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(64) %110, ptr noundef nonnull align 8 dereferenceable(64) %985)
          to label %986 unwind label %1000

986:                                              ; preds = %.lr.ph873
  %987 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %197)
          to label %988 unwind label %1002

988:                                              ; preds = %986
  %989 = invoke noundef ptr @_ZN6Halide8Internal12as_const_intERKNS_4ExprE(ptr noundef nonnull align 8 dereferenceable(8) %198)
          to label %990 unwind label %1004

990:                                              ; preds = %988
  %991 = icmp ne ptr %987, null
  %992 = icmp ne ptr %989, null
  %or.cond5 = and i1 %991, %992
  br i1 %or.cond5, label %993, label %1008

993:                                              ; preds = %990
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %111) #13
  %994 = load i64, ptr %987, align 8, !tbaa !83
  %995 = load i64, ptr %989, align 8, !tbaa !83
  %996 = add i64 %994, -1
  %997 = add i64 %996, %995
  call void @_ZN6Halide8Internal13Autoscheduler4SpanC2Ellb(ptr noundef nonnull align 8 dereferenceable(17) %111, i64 noundef %994, i64 noundef %997, i1 noundef zeroext true)
  %998 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEEixERSD_(ptr noundef nonnull align 8 dereferenceable(48) %103, ptr noundef nonnull align 8 dereferenceable(32) %110)
          to label %999 unwind label %1006

999:                                              ; preds = %993
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %998, ptr noundef nonnull align 8 dereferenceable(17) %111, i64 17, i1 false), !tbaa.struct !106
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %111) #13
  br label %1008

1000:                                             ; preds = %.lr.ph873
  %1001 = landingpad { ptr, i32 }
          cleanup
  br label %1012

1002:                                             ; preds = %986
  %1003 = landingpad { ptr, i32 }
          cleanup
  br label %1011

1004:                                             ; preds = %988
  %1005 = landingpad { ptr, i32 }
          cleanup
  br label %1011

1006:                                             ; preds = %993
  %1007 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %111) #13
  br label %1011

1008:                                             ; preds = %999, %990
  call void @_ZN6Halide8Internal5BoundD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %110) #13
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %110) #13
  %1009 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %108) #13
  %1010 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal5BoundESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %109) #13
  br i1 %1010, label %.lr.ph873, label %._crit_edge874

1011:                                             ; preds = %1004, %1006, %1002
  %.pn531.pn = phi { ptr, i32 } [ %1003, %1002 ], [ %1007, %1006 ], [ %1005, %1004 ]
  call void @_ZN6Halide8Internal5BoundD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %110) #13
  br label %1012

1012:                                             ; preds = %1011, %1000
  %.pn531.pn.pn = phi { ptr, i32 } [ %.pn531.pn, %1011 ], [ %1001, %1000 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %110) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #13
  br label %1059

1013:                                             ; preds = %1047, %._crit_edge874
  %storemerge = phi i32 [ 0, %._crit_edge874 ], [ %1049, %1047 ]
  store i32 %storemerge, ptr %112, align 4, !tbaa !103
  %1014 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %1015 unwind label %1018

1015:                                             ; preds = %1013
  %1016 = icmp slt i32 %storemerge, %1014
  br i1 %1016, label %1020, label %1017

1017:                                             ; preds = %1015
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %112) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %103) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %103) #13
  br label %1060

1018:                                             ; preds = %1013
  %1019 = landingpad { ptr, i32 }
          cleanup
  br label %1058

1020:                                             ; preds = %1015
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %113) #13
  %1021 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %1022 unwind label %1050

1022:                                             ; preds = %1020
  %1023 = load i32, ptr %112, align 4, !tbaa !103
  %1024 = sext i32 %1023 to i64
  %1025 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1021, i64 noundef %1024) #13
  %1026 = invoke ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEE4findERSD_(ptr noundef nonnull align 8 dereferenceable(48) %103, ptr noundef nonnull align 8 dereferenceable(32) %1025)
          to label %1027 unwind label %1050

1027:                                             ; preds = %1022
  store ptr %1026, ptr %113, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %114) #13
  %1028 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %103) #13
  store ptr %1028, ptr %114, align 8
  %1029 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanEEESF_(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull align 8 dereferenceable(8) %114) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %115) #13
  br i1 %1029, label %.critedge667, label %1030

1030:                                             ; preds = %1027
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %116) #13
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %116, ptr noundef nonnull @.str.14, i32 noundef 880, ptr noundef nonnull @.str.46, i32 noundef 1)
          to label %1031 unwind label %1052

1031:                                             ; preds = %1030
  %1032 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %116)
  %1033 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA31_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1032, ptr noundef nonnull align 1 dereferenceable(31) @.str.47)
          to label %1034 unwind label %1054

1034:                                             ; preds = %1031
  %1035 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIiEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1033, ptr noundef nonnull align 4 dereferenceable(4) %112)
          to label %1036 unwind label %1054

1036:                                             ; preds = %1034
  %1037 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA6_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1035, ptr noundef nonnull align 1 dereferenceable(6) @.str.48)
          to label %1038 unwind label %1054

1038:                                             ; preds = %1036
  %1039 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %1040 unwind label %1054

1040:                                             ; preds = %1038
  %1041 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1037, ptr noundef nonnull align 8 dereferenceable(32) %1039)
          to label %1042 unwind label %1054

1042:                                             ; preds = %1040
  %1043 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1041, ptr noundef nonnull align 1 dereferenceable(2) @.str.49)
          to label %1044 unwind label %1054

1044:                                             ; preds = %1042
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %115, ptr noundef nonnull align 8 dereferenceable(380) %1043)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %116)
          to label %.critedge666 unwind label %1052

.critedge666:                                     ; preds = %1044
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %116) #13
  br label %.critedge667

.critedge667:                                     ; preds = %1027, %.critedge666
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %115) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #13
  %1045 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %113) #13
  %1046 = getelementptr inbounds i8, ptr %1045, i64 32
  invoke void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %350, ptr noundef nonnull align 8 dereferenceable(17) %1046)
          to label %1047 unwind label %1050

1047:                                             ; preds = %.critedge667
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #13
  %1048 = load i32, ptr %112, align 4, !tbaa !103
  %1049 = add nsw i32 %1048, 1
  br label %1013, !llvm.loop !108

1050:                                             ; preds = %.critedge667, %1022, %1020
  %1051 = landingpad { ptr, i32 }
          cleanup
  br label %1057

1052:                                             ; preds = %1044, %1030
  %1053 = landingpad { ptr, i32 }
          cleanup
  br label %1056

1054:                                             ; preds = %1042, %1040, %1038, %1036, %1034, %1031
  %1055 = landingpad { ptr, i32 }
          cleanup
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %116)
          to label %1056 unwind label %1415

1056:                                             ; preds = %1054, %1052
  %.pn526 = phi { ptr, i32 } [ %1053, %1052 ], [ %1055, %1054 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %116) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %115) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114) #13
  br label %1057

1057:                                             ; preds = %1056, %1050
  %.pn528 = phi { ptr, i32 } [ %1051, %1050 ], [ %.pn526, %1056 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113) #13
  br label %1058

1058:                                             ; preds = %1057, %1018
  %.pn528.pn = phi { ptr, i32 } [ %.pn528, %1057 ], [ %1019, %1018 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %112) #13
  br label %1059

1059:                                             ; preds = %983, %1012, %951, %976, %1058
  %.pn536.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn528.pn, %1058 ], [ %.pn536.pn.pn, %976 ], [ %952, %951 ], [ %.pn531.pn.pn, %1012 ], [ %984, %983 ]
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %103) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %103) #13
  br label %1240

1060:                                             ; preds = %1017, %._crit_edge868
  %1061 = getelementptr inbounds i8, ptr %386, i64 8
  %1062 = trunc nuw nsw i64 %indvars.iv1104 to i32
  store i32 %1062, ptr %1061, align 8, !tbaa !109
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %117) #13
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %117, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %1063 unwind label %1069

1063:                                             ; preds = %1060
  %1064 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull align 8 dereferenceable(8) %117) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %117) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %118) #13
  %1065 = call ptr @_ZNSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalESt4lessIS7_ESaIS0_IKS7_SA_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %64) #13
  store ptr %1065, ptr %118, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %119) #13
  %1066 = call ptr @_ZNSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalESt4lessIS7_ESaIS0_IKS7_SA_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %64) #13
  store ptr %1066, ptr %119, align 8
  %1067 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKS0_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalEEESF_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %119) #13
  br i1 %1067, label %.lr.ph876, label %._crit_edge877

._crit_edge877:                                   ; preds = %1076, %1063
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %118) #13
  %1068 = invoke noundef zeroext i1 @_ZNK6Halide8Internal8Function21has_update_definitionEv(ptr noundef nonnull align 8 dereferenceable(24) %247)
          to label %1085 unwind label %1099

1069:                                             ; preds = %1060
  %1070 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %117) #13
  br label %1240

.lr.ph876:                                        ; preds = %1063, %1076
  %1071 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKS0_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %120) #13
  %1072 = getelementptr inbounds i8, ptr %1071, i64 40
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %120, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %1072)
          to label %1073 unwind label %1080

1073:                                             ; preds = %.lr.ph876
  %1074 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1072, ptr noundef nonnull align 8 dereferenceable(8) %120) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %120) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %121) #13
  %1075 = getelementptr inbounds i8, ptr %1071, i64 48
  invoke void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %121, ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %1075)
          to label %1076 unwind label %1082

1076:                                             ; preds = %1073
  %1077 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide4ExpraSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1075, ptr noundef nonnull align 8 dereferenceable(8) %121) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #13
  %1078 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKS0_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #13
  %1079 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKS0_INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalEEESF_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %119) #13
  br i1 %1079, label %.lr.ph876, label %._crit_edge877

1080:                                             ; preds = %.lr.ph876
  %1081 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %120) #13
  br label %1084

1082:                                             ; preds = %1073
  %1083 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %121) #13
  br label %1084

1084:                                             ; preds = %1082, %1080
  %.pn524 = phi { ptr, i32 } [ %1083, %1082 ], [ %1081, %1080 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %119) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %118) #13
  br label %1240

1085:                                             ; preds = %._crit_edge877
  %1086 = xor i1 %1068, true
  %1087 = zext i1 %1086 to i8
  store i8 %1087, ptr %351, align 1, !tbaa !110
  br i1 %1068, label %.thread690, label %1088

1088:                                             ; preds = %1085
  %1089 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %247)
          to label %1090 unwind label %1099

1090:                                             ; preds = %1088
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %122) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %123) #13
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #13
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %122, ptr noundef nonnull @.str.50, ptr noundef nonnull align 1 dereferenceable(1) %123)
          to label %1091 unwind label %1101

1091:                                             ; preds = %1090
  %1092 = invoke noundef zeroext i1 @_ZN6Halide8Internal11starts_withERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr noundef nonnull align 8 dereferenceable(32) %1089, ptr noundef nonnull align 8 dereferenceable(32) %122)
          to label %.critedge671 unwind label %1103

.thread690:                                       ; preds = %1085
  store i8 0, ptr %352, align 4, !tbaa !111
  br label %.critedge673

.critedge671:                                     ; preds = %1091
  %1093 = zext i1 %1092 to i8
  store i8 %1093, ptr %352, align 4, !tbaa !111
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #13
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %123) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %122) #13
  br label %.critedge673

.critedge673:                                     ; preds = %.thread690, %.critedge671
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %124) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef nonnull align 8 dereferenceable(8) %88) #13
  invoke void @_ZN6Halide8Internal14boxes_requiredENS_4ExprERKNS0_5ScopeINS0_8IntervalEEERKSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiES3_St4lessISF_ESaIS8_IKSF_S3_EEE(ptr dead_on_unwind nonnull writable sret(%"class.std::map.186") align 8 %124, ptr noundef nonnull %125, ptr noundef nonnull align 8 dereferenceable(56) %39, ptr noundef nonnull align 8 dereferenceable(48) %64)
          to label %1094 unwind label %1106

1094:                                             ; preds = %.critedge673
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %126) #13
  %1095 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxESt4lessIS5_ESaISt4pairIKS5_S8_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %124) #13
  store ptr %1095, ptr %126, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %127) #13
  %1096 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxESt4lessIS5_ESaISt4pairIKS5_S8_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %124) #13
  store ptr %1096, ptr %127, align 8
  %1097 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxEEESE_(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull align 8 dereferenceable(8) %127) #13
  br i1 %1097, label %.lr.ph883, label %._crit_edge884

._crit_edge884:                                   ; preds = %1219, %1094
  %.0471.lcssa = phi i8 [ 0, %1094 ], [ %.1472, %1219 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %127) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %126) #13
  %1098 = invoke noundef ptr @_ZNK6Halide8Internal8Function10is_wrapperEv(ptr noundef nonnull align 8 dereferenceable(24) %247)
          to label %1223 unwind label %1236

1099:                                             ; preds = %1088, %._crit_edge877
  %1100 = landingpad { ptr, i32 }
          cleanup
  br label %1240

1101:                                             ; preds = %1090
  %1102 = landingpad { ptr, i32 }
          cleanup
  br label %1105

1103:                                             ; preds = %1091
  %1104 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %122) #13
  br label %1105

1105:                                             ; preds = %1101, %1103
  %.pn507 = phi { ptr, i32 } [ %1104, %1103 ], [ %1102, %1101 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %123) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %123) #13
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %122) #13
  br label %1240

1106:                                             ; preds = %.critedge673
  %1107 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #13
  br label %1239

.lr.ph883:                                        ; preds = %1094, %1219
  %.0471881 = phi i8 [ %.1472, %1219 ], [ 0, %1094 ]
  %1108 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %126) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %128) #13
  %1109 = invoke ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(32) %1108)
          to label %1110 unwind label %1130

1110:                                             ; preds = %.lr.ph883
  store ptr %1109, ptr %128, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %129) #13
  %1111 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %5) #13
  store ptr %1111, ptr %129, align 8
  %1112 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionEEESE_(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(8) %129) #13
  br i1 %1112, label %1113, label %.critedge

1113:                                             ; preds = %1110
  %1114 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
          to label %1115 unwind label %1132

1115:                                             ; preds = %1113
  %1116 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA_(ptr noundef nonnull align 8 dereferenceable(32) %1108, ptr noundef nonnull align 8 dereferenceable(32) %1114) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #13
  br i1 %1116, label %1117, label %1219

1117:                                             ; preds = %1115
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %130) #13
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %130) #13
  store ptr %386, ptr %199, align 8, !tbaa !112
  %1118 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEEixERSC_(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(32) %1108)
          to label %1119 unwind label %1134

1119:                                             ; preds = %1117
  %1120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEE2atERS9_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(24) %1118)
          to label %1121 unwind label %1134

1121:                                             ; preds = %1119
  %1122 = load ptr, ptr %1120, align 8, !tbaa !44
  store ptr %1122, ptr %200, align 8, !tbaa !122
  store i8 1, ptr %201, align 4, !tbaa !123
  %1123 = getelementptr inbounds i8, ptr %1108, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %131) #13
  %1124 = call ptr @_ZNSt6vectorIN6Halide8Internal8IntervalESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1123) #13
  store ptr %1124, ptr %131, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %132) #13
  %1125 = call ptr @_ZNSt6vectorIN6Halide8Internal8IntervalESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1123) #13
  store ptr %1125, ptr %132, align 8
  %1126 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal8IntervalESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull align 8 dereferenceable(8) %132) #13
  br i1 %1126, label %.lr.ph879, label %._crit_edge880

._crit_edge880:                                   ; preds = %1174, %1121
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %131) #13
  %1127 = load ptr, ptr %200, align 8, !tbaa !122
  %1128 = getelementptr inbounds i8, ptr %1127, i64 8
  %1129 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %1128)
          to label %1209 unwind label %1134

1130:                                             ; preds = %.lr.ph883
  %1131 = landingpad { ptr, i32 }
          cleanup
  br label %1222

1132:                                             ; preds = %1113
  %1133 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #13
  br label %1222

1134:                                             ; preds = %1211, %1209, %._crit_edge880, %1119, %1117
  %1135 = landingpad { ptr, i32 }
          cleanup
  br label %1218

.lr.ph879:                                        ; preds = %1121, %1174
  %1136 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal8IntervalESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %131) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %133) #13
  %1137 = invoke noundef zeroext i1 @_ZNK6Halide8Internal8Interval10is_boundedEv(ptr noundef nonnull align 8 dereferenceable(16) %1136)
          to label %1138 unwind label %1187

1138:                                             ; preds = %.lr.ph879
  br i1 %1137, label %.critedge676, label %1139

1139:                                             ; preds = %1138
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %134) #13
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %134, ptr noundef nonnull @.str.14, i32 noundef 916, ptr noundef nonnull @.str.35, i32 noundef 0)
          to label %1140 unwind label %1189

1140:                                             ; preds = %1139
  %1141 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %134)
  %1142 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA44_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1141, ptr noundef nonnull align 1 dereferenceable(44) @.str.51)
          to label %1143 unwind label %1191

1143:                                             ; preds = %1140
  %1144 = load ptr, ptr %200, align 8, !tbaa !122
  %1145 = getelementptr inbounds i8, ptr %1144, i64 8
  %1146 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %1145)
          to label %1147 unwind label %1191

1147:                                             ; preds = %1143
  %1148 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1142, ptr noundef nonnull align 8 dereferenceable(32) %1146)
          to label %1149 unwind label %1191

1149:                                             ; preds = %1147
  %1150 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA5_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1148, ptr noundef nonnull align 1 dereferenceable(5) @.str.52)
          to label %1151 unwind label %1191

1151:                                             ; preds = %1149
  %1152 = load ptr, ptr %199, align 8, !tbaa !112
  %1153 = getelementptr inbounds i8, ptr %1152, i64 1264
  %1154 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1150, ptr noundef nonnull align 8 dereferenceable(32) %1153)
          to label %1155 unwind label %1191

1155:                                             ; preds = %1151
  %1156 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1154, ptr noundef nonnull align 1 dereferenceable(2) @.str.8)
          to label %1157 unwind label %1191

1157:                                             ; preds = %1155
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %133, ptr noundef nonnull align 8 dereferenceable(380) %1156)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %134)
          to label %.critedge675 unwind label %1189

.critedge675:                                     ; preds = %1157
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %134) #13
  br label %.critedge676

.critedge676:                                     ; preds = %1138, %.critedge675
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %133) #13
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %135) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %136) #13
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %1136) #13
  %1158 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %1159 unwind label %1194

1159:                                             ; preds = %.critedge676
  %1160 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %1161 unwind label %1194

1161:                                             ; preds = %1159
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %136, ptr noundef nonnull %137, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %1158, ptr noundef nonnull align 8 dereferenceable(56) %1160)
          to label %1162 unwind label %1194

1162:                                             ; preds = %1161
  %1163 = load ptr, ptr %199, align 8, !tbaa !112
  invoke void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoC1ERKNS_4ExprERKNS2_4Node5StageE(ptr noundef nonnull align 8 dereferenceable(34) %135, ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(1368) %1163)
          to label %1164 unwind label %1196

1164:                                             ; preds = %1162
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #13
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %138) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %139) #13
  %1165 = getelementptr inbounds i8, ptr %1136, i64 8
  call void @_ZN6Halide4ExprC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %140, ptr noundef nonnull align 8 dereferenceable(8) %1165) #13
  %1166 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_8IntervalEE11empty_scopeEv()
          to label %1167 unwind label %1199

1167:                                             ; preds = %1164
  %1168 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN6Halide8Internal5ScopeINS0_16ModulusRemainderEE11empty_scopeEv()
          to label %1169 unwind label %1199

1169:                                             ; preds = %1167
  invoke void @_ZN6Halide8Internal8simplifyENS_4ExprEbRKNS0_5ScopeINS0_8IntervalEEERKNS2_INS0_16ModulusRemainderEEE(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Expr") align 8 %139, ptr noundef nonnull %140, i1 noundef zeroext true, ptr noundef nonnull align 8 dereferenceable(56) %1166, ptr noundef nonnull align 8 dereferenceable(56) %1168)
          to label %1170 unwind label %1199

1170:                                             ; preds = %1169
  %1171 = load ptr, ptr %199, align 8, !tbaa !112
  invoke void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoC1ERKNS_4ExprERKNS2_4Node5StageE(ptr noundef nonnull align 8 dereferenceable(34) %138, ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull align 8 dereferenceable(1368) %1171)
          to label %1172 unwind label %1201

1172:                                             ; preds = %1170
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %139) #13
  %1173 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE12emplace_backIJS6_S6_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %130, ptr noundef nonnull align 8 dereferenceable(34) %135, ptr noundef nonnull align 8 dereferenceable(34) %138)
          to label %1174 unwind label %1204

1174:                                             ; preds = %1172
  %1175 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %130) #13
  %1176 = getelementptr inbounds i8, ptr %1175, i64 32
  %1177 = load i8, ptr %1176, align 8, !tbaa !124, !range !95, !noundef !99
  %1178 = load i8, ptr %201, align 4, !tbaa !123, !range !95, !noundef !99
  %1179 = and i8 %1178, %1177
  store i8 %1179, ptr %201, align 4, !tbaa !123
  %1180 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %130) #13
  %1181 = getelementptr inbounds i8, ptr %1180, i64 72
  %1182 = load i8, ptr %1181, align 8, !tbaa !127, !range !95, !noundef !99
  %1183 = load i8, ptr %201, align 4, !tbaa !123, !range !95, !noundef !99
  %1184 = and i8 %1183, %1182
  store i8 %1184, ptr %201, align 4, !tbaa !123
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(34) %138) #13
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %138) #13
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(34) %135) #13
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %135) #13
  %1185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal8IntervalESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %131) #13
  %1186 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal8IntervalESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull align 8 dereferenceable(8) %132) #13
  br i1 %1186, label %.lr.ph879, label %._crit_edge880

1187:                                             ; preds = %.lr.ph879
  %1188 = landingpad { ptr, i32 }
          cleanup
  br label %1208

1189:                                             ; preds = %1157, %1139
  %1190 = landingpad { ptr, i32 }
          cleanup
  br label %1193

1191:                                             ; preds = %1155, %1151, %1149, %1147, %1143, %1140
  %1192 = landingpad { ptr, i32 }
          cleanup
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %134)
          to label %1193 unwind label %1415

1193:                                             ; preds = %1191, %1189
  %.pn509 = phi { ptr, i32 } [ %1190, %1189 ], [ %1192, %1191 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %134) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %133) #13
  br label %1208

1194:                                             ; preds = %1161, %1159, %.critedge676
  %1195 = landingpad { ptr, i32 }
          cleanup
  br label %1198

1196:                                             ; preds = %1162
  %1197 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %136) #13
  br label %1198

1198:                                             ; preds = %1196, %1194
  %.pn511 = phi { ptr, i32 } [ %1197, %1196 ], [ %1195, %1194 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #13
  br label %1207

1199:                                             ; preds = %1169, %1167, %1164
  %1200 = landingpad { ptr, i32 }
          cleanup
  br label %1203

1201:                                             ; preds = %1170
  %1202 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #13
  br label %1203

1203:                                             ; preds = %1201, %1199
  %.pn513 = phi { ptr, i32 } [ %1202, %1201 ], [ %1200, %1199 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %139) #13
  br label %1206

1204:                                             ; preds = %1172
  %1205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(34) %138) #13
  br label %1206

1206:                                             ; preds = %1204, %1203
  %.pn515 = phi { ptr, i32 } [ %1205, %1204 ], [ %.pn513, %1203 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %138) #13
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoD2Ev(ptr noundef nonnull align 8 dereferenceable(34) %135) #13
  br label %1207

1207:                                             ; preds = %1206, %1198
  %.pn515.pn = phi { ptr, i32 } [ %.pn515, %1206 ], [ %.pn511, %1198 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %135) #13
  br label %1208

1208:                                             ; preds = %1207, %1193, %1187
  %.pn515.pn.pn = phi { ptr, i32 } [ %.pn515.pn, %1207 ], [ %.pn509, %1193 ], [ %1188, %1187 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %132) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %131) #13
  br label %1218

1209:                                             ; preds = %._crit_edge880
  %1210 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS5_ESaISt4pairIKS5_iEEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48) %202, ptr noundef nonnull align 8 dereferenceable(32) %1129)
          to label %1211 unwind label %1134

1211:                                             ; preds = %1209
  %1212 = load i32, ptr %1210, align 4, !tbaa !103
  store i32 %1212, ptr %203, align 8, !tbaa !128
  %1213 = load i8, ptr %204, align 8, !tbaa !129, !range !95, !noundef !99
  %1214 = load i8, ptr %351, align 1, !tbaa !110, !range !95, !noundef !99
  %1215 = and i8 %1214, %1213
  store i8 %1215, ptr %351, align 1, !tbaa !110
  %1216 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EE12emplace_backIJS4_EEERS4_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %161, ptr noundef nonnull align 8 dereferenceable(72) %130)
          to label %1217 unwind label %1134

1217:                                             ; preds = %1211
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %130) #13
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %130) #13
  br label %1219

1218:                                             ; preds = %1208, %1134
  %.pn515.pn.pn.pn = phi { ptr, i32 } [ %.pn515.pn.pn, %1208 ], [ %1135, %1134 ]
  call void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %130) #13
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %130) #13
  br label %1222

.critedge:                                        ; preds = %1110
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %129) #13
  br label %1219

1219:                                             ; preds = %.critedge, %1217, %1115
  %.1472 = phi i8 [ 1, %1217 ], [ %.0471881, %1115 ], [ %.0471881, %.critedge ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #13
  %1220 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %126) #13
  %1221 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxEEESE_(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull align 8 dereferenceable(8) %127) #13
  br i1 %1221, label %.lr.ph883, label %._crit_edge884

1222:                                             ; preds = %1218, %1132, %1130
  %.pn515.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn515.pn.pn.pn, %1218 ], [ %1133, %1132 ], [ %1131, %1130 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %128) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %127) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %126) #13
  br label %1238

1223:                                             ; preds = %._crit_edge884
  %1224 = icmp ne ptr %1098, null
  %1225 = zext i1 %1224 to i8
  store i8 %1225, ptr %353, align 8, !tbaa !144
  %1226 = invoke noundef zeroext i1 @_ZNK6Halide8Internal8Function21has_update_definitionEv(ptr noundef nonnull align 8 dereferenceable(24) %247)
          to label %1227 unwind label %1236

1227:                                             ; preds = %1223
  %1228 = load i8, ptr %353, align 8, !range !95
  %1229 = trunc nuw i8 %1228 to i1
  %1230 = and i8 %.0471.lcssa, 1
  %1231 = xor i8 %1230, 1
  %1232 = select i1 %1229, i8 %1231, i8 0
  %1233 = select i1 %1226, i8 0, i8 %1232
  store i8 %1233, ptr %354, align 1, !tbaa !145
  %1234 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %247)
          to label %1235 unwind label %1236

1235:                                             ; preds = %1227
  store i32 %1234, ptr %355, align 4, !tbaa !146
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxESt4lessIS5_ESaISt4pairIKS5_S8_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %124) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %124) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #13
  call void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN10CheckTypesD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %94) #13
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %94) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #13
  call void @_ZNSt6vectorIN6Halide4ExprESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %85) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %85) #13
  call void @_ZNSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalESt4lessIS7_ESaIS0_IKS7_SA_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %64) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %64) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %39) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %39) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %38) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %38) #13
  %indvars.iv.next1105 = add nuw nsw i64 %indvars.iv1104, 1
  br label %376, !llvm.loop !147

1236:                                             ; preds = %1227, %1223, %._crit_edge884
  %1237 = landingpad { ptr, i32 }
          cleanup
  br label %1238

1238:                                             ; preds = %1236, %1222
  %.pn515.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn515.pn.pn.pn.pn, %1222 ], [ %1237, %1236 ]
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal3BoxESt4lessIS5_ESaISt4pairIKS5_S8_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %124) #13
  br label %1239

1239:                                             ; preds = %1238, %1106
  %.pn515.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn515.pn.pn.pn.pn.pn, %1238 ], [ %1107, %1106 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %124) #13
  br label %1240

1240:                                             ; preds = %921, %940, %1059, %1069, %1084, %914, %884, %1105, %1239, %1099, %882
  %.pn542.pn.pn.pn = phi { ptr, i32 } [ %883, %882 ], [ %941, %940 ], [ %.pn536.pn.pn.pn.pn, %1059 ], [ %.pn524, %1084 ], [ %1070, %1069 ], [ %922, %921 ], [ %.pn542, %914 ], [ %885, %884 ], [ %.pn515.pn.pn.pn.pn.pn.pn, %1239 ], [ %.pn507, %1105 ], [ %1100, %1099 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #13
  br label %1241

1241:                                             ; preds = %1240, %880
  %.pn542.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn542.pn.pn.pn, %1240 ], [ %881, %880 ]
  call void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN10CheckTypesD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %94) #13
  br label %1242

1242:                                             ; preds = %1241, %878
  %.pn542.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn542.pn.pn.pn.pn, %1241 ], [ %879, %878 ]
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %94) #13
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #13
  br label %1243

1243:                                             ; preds = %1242, %877, %871
  %.pn542.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn542.pn.pn.pn.pn.pn, %1242 ], [ %.pn505, %877 ], [ %872, %871 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #13
  br label %1244

1244:                                             ; preds = %1243, %848, %846
  %.pn542.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn542.pn.pn.pn.pn.pn.pn, %1243 ], [ %849, %848 ], [ %847, %846 ]
  call void @_ZNSt6vectorIN6Halide4ExprESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %85) #13
  br label %1245

1245:                                             ; preds = %1244, %844
  %.pn542.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn542.pn.pn.pn.pn.pn.pn.pn, %1244 ], [ %845, %844 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %85) #13
  br label %1246

1246:                                             ; preds = %729, %825, %737, %601, %681, %695, %683, %650, %639, %634, %543, %588, %1245, %728, %599
  %.pn584.pn.pn.pn = phi { ptr, i32 } [ %.pn542.pn.pn.pn.pn.pn.pn.pn.pn, %1245 ], [ %.pn503, %728 ], [ %600, %599 ], [ %.pn584.pn, %588 ], [ %544, %543 ], [ %602, %601 ], [ %.pn568.pn.pn, %650 ], [ %.pn566, %639 ], [ %.pn564, %634 ], [ %682, %681 ], [ %.pn574.pn.pn, %695 ], [ %684, %683 ], [ %730, %729 ], [ %.pn558.pn.pn, %825 ], [ %738, %737 ]
  call void @_ZNSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEN6Halide8Internal8IntervalESt4lessIS7_ESaIS0_IKS7_SA_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %64) #13
  br label %1247

1247:                                             ; preds = %1246, %541
  %.pn584.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn584.pn.pn.pn, %1246 ], [ %542, %541 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %64) #13
  br label %1248

1248:                                             ; preds = %427, %529, %1247, %425
  %.pn606.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn584.pn.pn.pn.pn, %1247 ], [ %426, %425 ], [ %.pn606.pn.pn.pn, %529 ], [ %428, %427 ]
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %39) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %39) #13
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %38) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %38) #13
  br label %1249

1249:                                             ; preds = %.loopexit1064, %.loopexit.split-lp, %383, %421, %1248, %423, %407, %398, %362, %374
  %.pn620.pn.pn.pn = phi { ptr, i32 } [ %.pn620.pn, %362 ], [ %.pn617.pn, %374 ], [ %384, %383 ], [ %.pn500.pn, %407 ], [ %399, %398 ], [ %422, %421 ], [ %.pn606.pn.pn.pn.pn.pn, %1248 ], [ %424, %423 ], [ %lpad.loopexit, %.loopexit1064 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #13
  br label %1250

1250:                                             ; preds = %1249, %356
  %.pn620.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn620.pn.pn.pn, %1249 ], [ %357, %356 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #13
  br label %1251

1251:                                             ; preds = %256, %329, %1250
  %.pn636.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn620.pn.pn.pn.pn, %1250 ], [ %.pn636.pn.pn.pn.pn, %329 ], [ %257, %256 ]
  call void @_ZN6Halide8Internal5ScopeINS0_8IntervalEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %15) #13
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %15) #13
  call void @_ZN6Halide8Internal8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #13
  br label %1410

._crit_edge898:                                   ; preds = %._crit_edge895, %._crit_edge891
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %141) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %145) #13
  %1252 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #13
  store ptr %1252, ptr %145, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %146) #13
  %1253 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #13
  store ptr %1253, ptr %146, align 8
  %1254 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %146) #13
  br i1 %1254, label %.lr.ph906, label %._crit_edge907

.lr.ph897:                                        ; preds = %._crit_edge891, %._crit_edge895
  %1255 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %141) #13
  %1256 = invoke noalias noundef nonnull dereferenceable(88) ptr @_Znwm(i64 noundef 88) #14
          to label %1257 unwind label %1275

1257:                                             ; preds = %.lr.ph897
  %1258 = getelementptr inbounds i8, ptr %1255, i64 192
  call void @_ZN6Halide8Internal13Autoscheduler13BoundContents6LayoutC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %1256) #13
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE5resetEPS4_(ptr noundef nonnull align 8 dereferenceable(8) %1258, ptr noundef nonnull %1256) #13
  %1259 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %1258) #13
  %1260 = getelementptr inbounds i8, ptr %1255, i64 8
  %1261 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %1260)
          to label %1262 unwind label %1277

1262:                                             ; preds = %1257
  %1263 = getelementptr inbounds i8, ptr %1259, i64 60
  store i32 %1261, ptr %1263, align 4, !tbaa !148
  %1264 = invoke noundef i32 @_ZNK6Halide8Internal8Function10dimensionsEv(ptr noundef nonnull align 8 dereferenceable(24) %1260)
          to label %1265 unwind label %1277

1265:                                             ; preds = %1262
  %1266 = add nsw i32 %1264, %1261
  %1267 = getelementptr inbounds i8, ptr %1259, i64 56
  store i32 %1266, ptr %1267, align 8, !tbaa !162
  %1268 = getelementptr inbounds i8, ptr %1255, i64 120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %143) #13
  %1269 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1268) #13
  store ptr %1269, ptr %143, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %144) #13
  %1270 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1268) #13
  store ptr %1270, ptr %144, align 8
  %1271 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %144) #13
  br i1 %1271, label %.lr.ph894, label %._crit_edge895

.lr.ph894:                                        ; preds = %1265
  %1272 = getelementptr inbounds i8, ptr %1259, i64 64
  br label %1279

._crit_edge895:                                   ; preds = %1281, %1265
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %144) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #13
  %1273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %141) #13
  %1274 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull align 8 dereferenceable(8) %142) #13
  br i1 %1274, label %.lr.ph897, label %._crit_edge898

1275:                                             ; preds = %.lr.ph897
  %1276 = landingpad { ptr, i32 }
          cleanup
  br label %1291

1277:                                             ; preds = %1262, %1257
  %1278 = landingpad { ptr, i32 }
          cleanup
  br label %1291

1279:                                             ; preds = %.lr.ph894, %1281
  %1280 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %143) #13
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %1272, ptr noundef nonnull align 4 dereferenceable(4) %1267)
          to label %1281 unwind label %1289

1281:                                             ; preds = %1279
  %1282 = getelementptr inbounds i8, ptr %1280, i64 16
  %1283 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1282) #13
  %1284 = trunc i64 %1283 to i32
  %1285 = load i32, ptr %1267, align 8, !tbaa !162
  %1286 = add nsw i32 %1285, %1284
  store i32 %1286, ptr %1267, align 8, !tbaa !162
  %1287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %143) #13
  %1288 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull align 8 dereferenceable(8) %144) #13
  br i1 %1288, label %1279, label %._crit_edge895

1289:                                             ; preds = %1279
  %1290 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %144) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #13
  br label %1291

1291:                                             ; preds = %1277, %1289, %1275
  %.pn494.pn = phi { ptr, i32 } [ %1276, %1275 ], [ %1290, %1289 ], [ %1278, %1277 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %141) #13
  br label %1410

._crit_edge907:                                   ; preds = %._crit_edge902, %._crit_edge898
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %146) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %145) #13
  %1292 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %161) #13
  %.not931 = icmp eq i64 %1292, 0
  br i1 %.not931, label %._crit_edge911, label %.lr.ph910

.lr.ph906:                                        ; preds = %._crit_edge898, %._crit_edge902
  %.0450904 = phi i32 [ %.1451.lcssa, %._crit_edge902 ], [ 0, %._crit_edge898 ]
  %1293 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %145) #13
  %1294 = getelementptr inbounds i8, ptr %1293, i64 120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %147) #13
  %1295 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1294) #13
  store ptr %1295, ptr %147, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %148) #13
  %1296 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1294) #13
  store ptr %1296, ptr %148, align 8
  %1297 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull align 8 dereferenceable(8) %148) #13
  br i1 %1297, label %.lr.ph901, label %._crit_edge902

._crit_edge902:                                   ; preds = %.lr.ph901, %.lr.ph906
  %.1451.lcssa = phi i32 [ %.0450904, %.lr.ph906 ], [ %1303, %.lr.ph901 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %147) #13
  %1298 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %145) #13
  %1299 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull align 8 dereferenceable(8) %146) #13
  br i1 %1299, label %.lr.ph906, label %._crit_edge907

.lr.ph901:                                        ; preds = %.lr.ph906, %.lr.ph901
  %.1451899 = phi i32 [ %1303, %.lr.ph901 ], [ %.0450904, %.lr.ph906 ]
  %1300 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %147) #13
  %1301 = getelementptr inbounds i8, ptr %1300, i64 1296
  store i32 %.1451899, ptr %1301, align 8, !tbaa !163
  %1302 = getelementptr inbounds i8, ptr %1300, i64 1300
  store i32 %.0438.lcssa, ptr %1302, align 4, !tbaa !164
  %1303 = add nsw i32 %.1451899, 1
  %1304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %147) #13
  %1305 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull align 8 dereferenceable(8) %148) #13
  br i1 %1305, label %.lr.ph901, label %._crit_edge902

._crit_edge911:                                   ; preds = %1322, %._crit_edge907
  %1306 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #13
  %.not487925 = icmp eq i64 %1306, 0
  br i1 %.not487925, label %._crit_edge929, label %.lr.ph928

.lr.ph928:                                        ; preds = %._crit_edge911
  %1307 = getelementptr inbounds i8, ptr %155, i64 8
  %1308 = getelementptr inbounds i8, ptr %158, i64 8
  %1309 = getelementptr inbounds i8, ptr %159, i64 8
  %1310 = getelementptr inbounds i8, ptr %160, i64 8
  br label %1330

.lr.ph910:                                        ; preds = %._crit_edge907, %1322
  %.0443908 = phi i64 [ %1323, %1322 ], [ 0, %._crit_edge907 ]
  %1311 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %161, i64 noundef %.0443908) #13
  %1312 = getelementptr inbounds i8, ptr %1311, i64 24
  %1313 = load ptr, ptr %1312, align 8, !tbaa !122
  %1314 = getelementptr inbounds i8, ptr %1313, i64 144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %149) #13
  %1315 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %161, i64 noundef %.0443908) #13
  store ptr %1315, ptr %149, align 8, !tbaa !44
  invoke void @_ZNSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %1314, ptr noundef nonnull align 8 dereferenceable(8) %149)
          to label %1316 unwind label %1326

1316:                                             ; preds = %.lr.ph910
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %149) #13
  %1317 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %161, i64 noundef %.0443908) #13
  %1318 = getelementptr inbounds i8, ptr %1317, i64 32
  %1319 = load ptr, ptr %1318, align 8, !tbaa !112
  %1320 = getelementptr inbounds i8, ptr %1319, i64 1304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %150) #13
  %1321 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %161, i64 noundef %.0443908) #13
  store ptr %1321, ptr %150, align 8, !tbaa !44
  invoke void @_ZNSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %1320, ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %1322 unwind label %1328

1322:                                             ; preds = %1316
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %150) #13
  %1323 = add nuw i64 %.0443908, 1
  %1324 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %161) #13
  %1325 = icmp ult i64 %1323, %1324
  br i1 %1325, label %.lr.ph910, label %._crit_edge911, !llvm.loop !165

1326:                                             ; preds = %.lr.ph910
  %1327 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %149) #13
  br label %1410

1328:                                             ; preds = %1316
  %1329 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %150) #13
  br label %1410

._crit_edge929:                                   ; preds = %._crit_edge924, %._crit_edge911
  invoke void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG9featurizeEv(ptr noundef nonnull align 8 dereferenceable(48) %0)
          to label %1407 unwind label %1408

1330:                                             ; preds = %.lr.ph928, %._crit_edge924
  %.0442926 = phi i64 [ %1306, %.lr.ph928 ], [ %1331, %._crit_edge924 ]
  %1331 = add i64 %.0442926, -1
  %1332 = call noundef nonnull align 8 dereferenceable(200) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %1331) #13
  %1333 = getelementptr inbounds i8, ptr %1332, i64 120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %151) #13
  %1334 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1333) #13
  store ptr %1334, ptr %151, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %152) #13
  %1335 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1333) #13
  store ptr %1335, ptr %152, align 8
  %1336 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(8) %152) #13
  br i1 %1336, label %.lr.ph923, label %._crit_edge924

._crit_edge924:                                   ; preds = %._crit_edge921, %1330
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %152) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %151) #13
  %.not487 = icmp eq i64 %1331, 0
  br i1 %.not487, label %._crit_edge929, label %1330, !llvm.loop !166

.lr.ph923:                                        ; preds = %1330, %._crit_edge921
  %1337 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %151) #13
  %1338 = getelementptr inbounds i8, ptr %1337, i64 1328
  %1339 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #13
  invoke void @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40) %1338, i64 noundef %1339, i1 noundef zeroext false)
          to label %1340 unwind label %1347

1340:                                             ; preds = %.lr.ph923
  %1341 = getelementptr inbounds i8, ptr %1337, i64 1304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %153) #13
  %1342 = call ptr @_ZNSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1341) #13
  store ptr %1342, ptr %153, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %154) #13
  %1343 = call ptr @_ZNSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1341) #13
  store ptr %1343, ptr %154, align 8
  %1344 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(8) %154) #13
  br i1 %1344, label %.lr.ph920, label %._crit_edge921

._crit_edge921:                                   ; preds = %._crit_edge918, %1340
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #13
  %1345 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %151) #13
  %1346 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(8) %152) #13
  br i1 %1346, label %.lr.ph923, label %._crit_edge924

1347:                                             ; preds = %.lr.ph923
  %1348 = landingpad { ptr, i32 }
          cleanup
  br label %1406

.lr.ph920:                                        ; preds = %1340, %._crit_edge918
  %1349 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %153) #13
  %1350 = load ptr, ptr %1349, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %155) #13
  %1351 = getelementptr inbounds i8, ptr %1350, i64 24
  %1352 = load ptr, ptr %1351, align 8, !tbaa !122
  %1353 = getelementptr inbounds i8, ptr %1352, i64 172
  %1354 = load i32, ptr %1353, align 4, !tbaa !5
  %1355 = sext i32 %1354 to i64
  %1356 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1338, i64 noundef %1355)
          to label %1357 unwind label %1368

1357:                                             ; preds = %.lr.ph920
  %1358 = extractvalue { ptr, i64 } %1356, 0
  store ptr %1358, ptr %155, align 8
  %1359 = extractvalue { ptr, i64 } %1356, 1
  store i64 %1359, ptr %1307, align 8
  %1360 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %155, i1 noundef zeroext true) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %155) #13
  %1361 = load ptr, ptr %1351, align 8, !tbaa !122
  %1362 = getelementptr inbounds i8, ptr %1361, i64 120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %156) #13
  %1363 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1362) #13
  store ptr %1363, ptr %156, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %157) #13
  %1364 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1362) #13
  store ptr %1364, ptr %157, align 8
  %1365 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull align 8 dereferenceable(8) %157) #13
  br i1 %1365, label %.lr.ph917, label %._crit_edge918

._crit_edge918:                                   ; preds = %._crit_edge915, %1357
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %156) #13
  %1366 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %153) #13
  %1367 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(8) %154) #13
  br i1 %1367, label %.lr.ph920, label %._crit_edge921

1368:                                             ; preds = %.lr.ph920
  %1369 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %155) #13
  br label %1405

.lr.ph917:                                        ; preds = %1357, %._crit_edge915
  %1370 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %156) #13
  %1371 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #13
  %.not932 = icmp eq i64 %1371, 0
  br i1 %.not932, label %._crit_edge915, label %.lr.ph914

.lr.ph914:                                        ; preds = %.lr.ph917
  %1372 = getelementptr inbounds i8, ptr %1370, i64 1328
  br label %1375

._crit_edge915:                                   ; preds = %1390, %.lr.ph917
  %1373 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %156) #13
  %1374 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull align 8 dereferenceable(8) %157) #13
  br i1 %1374, label %.lr.ph917, label %._crit_edge918

1375:                                             ; preds = %.lr.ph914, %1390
  %.0912 = phi i64 [ 0, %.lr.ph914 ], [ %1394, %1390 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %158) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %159) #13
  %1376 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1338, i64 noundef %.0912)
          to label %1377 unwind label %1397

1377:                                             ; preds = %1375
  %1378 = extractvalue { ptr, i64 } %1376, 0
  store ptr %1378, ptr %158, align 8
  %1379 = extractvalue { ptr, i64 } %1376, 1
  store i64 %1379, ptr %1308, align 8
  %1380 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %158) #13
  br i1 %1380, label %1387, label %1381

1381:                                             ; preds = %1377
  %1382 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1372, i64 noundef %.0912)
          to label %1383 unwind label %1399

1383:                                             ; preds = %1381
  %1384 = extractvalue { ptr, i64 } %1382, 0
  store ptr %1384, ptr %159, align 8
  %1385 = extractvalue { ptr, i64 } %1382, 1
  store i64 %1385, ptr %1309, align 8
  %1386 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %159) #13
  br label %1387

1387:                                             ; preds = %1383, %1377
  %1388 = phi i1 [ true, %1377 ], [ %1386, %1383 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %160) #13
  %1389 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1338, i64 noundef %.0912)
          to label %1390 unwind label %1401

1390:                                             ; preds = %1387
  %1391 = extractvalue { ptr, i64 } %1389, 0
  store ptr %1391, ptr %160, align 8
  %1392 = extractvalue { ptr, i64 } %1389, 1
  store i64 %1392, ptr %1310, align 8
  %1393 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %160, i1 noundef zeroext %1388) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %160) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %159) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %158) #13
  %1394 = add nuw i64 %.0912, 1
  %1395 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #13
  %1396 = icmp ult i64 %1394, %1395
  br i1 %1396, label %1375, label %._crit_edge915, !llvm.loop !167

1397:                                             ; preds = %1375
  %1398 = landingpad { ptr, i32 }
          cleanup
  br label %1404

1399:                                             ; preds = %1381
  %1400 = landingpad { ptr, i32 }
          cleanup
  br label %1403

1401:                                             ; preds = %1387
  %1402 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %160) #13
  br label %1403

1403:                                             ; preds = %1401, %1399
  %.pn = phi { ptr, i32 } [ %1402, %1401 ], [ %1400, %1399 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %159) #13
  br label %1404

1404:                                             ; preds = %1403, %1397
  %.pn.pn = phi { ptr, i32 } [ %.pn, %1403 ], [ %1398, %1397 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %158) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %156) #13
  br label %1405

1405:                                             ; preds = %1404, %1368
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %1404 ], [ %1369, %1368 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #13
  br label %1406

1406:                                             ; preds = %1405, %1347
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %1405 ], [ %1348, %1347 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %152) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %151) #13
  br label %1410

1407:                                             ; preds = %._crit_edge929
  call void @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #13
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #13
  call void @_ZN6Halide8Internal9IRMutatorD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #13
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %5) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) #13
  ret void

1408:                                             ; preds = %._crit_edge929
  %1409 = landingpad { ptr, i32 }
          cleanup
  br label %1410

1410:                                             ; preds = %1251, %1291, %1406, %1408, %1328, %1326, %239
  %.pn645.pn = phi { ptr, i32 } [ %.pn645, %239 ], [ %.pn636.pn.pn.pn.pn.pn.pn, %1251 ], [ %.pn494.pn, %1291 ], [ %.pn.pn.pn.pn, %1406 ], [ %1409, %1408 ], [ %1329, %1328 ], [ %1327, %1326 ]
  call void @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #13
  br label %1411

1411:                                             ; preds = %1410, %209
  %.pn645.pn.pn = phi { ptr, i32 } [ %.pn645.pn, %1410 ], [ %210, %209 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #13
  br label %1412

1412:                                             ; preds = %1411, %207
  %.pn645.pn.pn.pn = phi { ptr, i32 } [ %.pn645.pn.pn, %1411 ], [ %208, %207 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #13
  call void @_ZN6Halide8Internal9IRMutatorD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #13
  br label %1413

1413:                                             ; preds = %1412, %205
  %.pn645.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn645.pn.pn.pn, %1412 ], [ %206, %205 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #13
  br label %1414

1414:                                             ; preds = %1413, %169
  %.pn651 = phi { ptr, i32 } [ %170, %169 ], [ %.pn645.pn.pn.pn.pn, %1413 ]
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %5) #13
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) #13
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %161) #13
  call void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #13
  resume { ptr, i32 } %.pn651

1415:                                             ; preds = %1191, %1054, %726, %582
  %1416 = landingpad { ptr, i32 }
          catch ptr null
  %1417 = extractvalue { ptr, i32 } %1416, 0
  call void @__clang_call_terminate(ptr %1417) #15
  unreachable
}

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

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

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

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

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

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

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

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

declare void @_ZN6Halide8Internal20populate_environmentENS0_8FunctionERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_St4lessIS8_ESaISt4pairIKS8_S1_EEE(ptr noundef, ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

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

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

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

declare void @_ZN6Halide8Internal17topological_orderERKSt6vectorINS0_8FunctionESaIS2_EERKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES2_St4lessISD_ESaISt4pairIKSD_S2_EEE(ptr dead_on_unwind writable sret(%"class.std::vector.114") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEEixERSC_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Halide3VarcvNS_4ExprEEv(ptr dead_on_unwind noalias writable sret(%"struct.Halide::Expr") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE4pushIS2_vEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12emplace_backIJS4_EEERS4_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #5 align 2

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function7updatesEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12emplace_backIJNS0_5StageEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #5 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function10definitionEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide5StageC2ENS_8Internal8FunctionENS1_10DefinitionEm(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef, ptr noundef, i64 noundef) unnamed_addr #5 align 2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function6updateEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 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 #5 align 2

; 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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) local_unnamed_addr #6

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal10Definition8scheduleEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal5ScopeINS0_8IntervalEE20set_containing_scopeEPKS3_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef) local_unnamed_addr #7 align 2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule5rvarsEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

declare void @_ZN6Halide8Internal9IRMutator6mutateERKNS_4ExprE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

declare void @_ZN6HalidemiENS_4ExprEi(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8, ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @_ZN6HalideplENS_4ExprES0_(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal8Variable4makeENS_4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"struct.Halide::Expr") align 8, i64, ptr, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { i64, ptr } @_ZN6Halide3IntEii(i32 noundef, i32 noundef) local_unnamed_addr #8

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

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

declare void @_ZN6Halide8Internal29compute_function_value_boundsERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EERKSt3mapIS7_NS0_8FunctionESt4lessIS7_ESaISt4pairIKS7_SD_EEE(ptr dead_on_unwind writable sret(%"class.std::map.137") align 8, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

declare void @_ZN6Halide8Internal23bounds_of_expr_in_scopeENS_4ExprERKNS0_5ScopeINS0_8IntervalEEERKSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiES3_St4lessISF_ESaIS8_IKSF_S3_EEEb(ptr dead_on_unwind writable sret(%"struct.Halide::Internal::Interval") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(48), i1 noundef zeroext) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition4argsEv(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 @_ZNKSt6vectorIN6Halide4ExprESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal8Interval10is_boundedEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 align 2

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

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

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

declare void @_ZN6Halide8Internal8Interval7includeERKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2

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

declare noundef zeroext i1 @_ZN6Halide8Internal5equalERKNS_4ExprES3_(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 ptr @_ZNK6Halide8Internal8IRHandle2asINS0_3MinEEEPKT_v(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7 align 2

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule6splitsEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal13StageSchedule4dimsEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_(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 @_ZNSt7__cxx119to_stringEm(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i64 noundef) local_unnamed_addr #8

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Halide8Internal5ScopeINS0_8IntervalEE3getIS2_vEET_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"struct.Halide::Internal::Interval") align 8, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal3Dim7is_pureEv(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal3Dim7is_rvarEv(ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 align 2

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal10Definition6valuesEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal10Definition9predicateEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN6Halide4ExprESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

declare void @_ZN6Halide8Internal4Call4makeENS_4TypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS_4ExprESaISC_EENS1_8CallTypeENS0_11FunctionPtrEiNS_6BufferIvEENS0_9ParameterE(ptr dead_on_unwind writable sret(%"struct.Halide::Expr") align 8, i64, ptr, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN10CheckTypesC2ES4_(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef) unnamed_addr #5 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { i64, ptr } @_ZNK6Halide4Expr4typeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #10 align 2

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

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

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

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

declare noundef i32 @_ZNK6Halide6Target19natural_vector_sizeERKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal8Function7same_asERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal8Function8scheduleEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Halide8Internal12FuncSchedule9estimatesEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEEixERSD_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Halide8Internal12FuncSchedule6boundsEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal13Autoscheduler4SpanESt4lessIS5_ESaISt4pairIKS5_S9_EEE4findERSD_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIiEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK6Halide8Internal8Function21has_update_definitionEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN6Halide8Internal11starts_withERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

declare void @_ZN6Halide8Internal14boxes_requiredENS_4ExprERKNS0_5ScopeINS0_8IntervalEEERKSt3mapISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiES3_St4lessISF_ESaIS8_IKSF_S3_EEE(ptr dead_on_unwind writable sret(%"class.std::map.186") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6Halide8Internal8FunctionESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3mapIN6Halide8Internal8FunctionEPNS1_13Autoscheduler11FunctionDAG4NodeENS2_7CompareESaISt4pairIKS2_S6_EEE2atERS9_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE12emplace_backIJS6_S6_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(34), ptr noundef nonnull align 8 dereferenceable(34)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS5_ESaISt4pairIKS5_iEEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS4_EE12emplace_backIJS4_EEERS4_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #5 align 2

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

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

declare noundef ptr @_ZNK6Halide8Internal8Function10is_wrapperEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEEN10CheckTypesD2Ev(ptr noundef nonnull align 8 dereferenceable(104)) unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE5resetEPS4_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #7 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, i1 noundef zeroext) local_unnamed_addr #5 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler11FunctionDAG9featurizeEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #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 = { 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 #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { alwaysinline 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 #11 = { 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 #12 = { 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 #13 = { nounwind }
attributes #14 = { builtin allocsize(0) }
attributes #15 = { 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, !13, i64 172}
!6 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4NodeE", !7, i64 0, !10, i64 8, !14, i64 32, !15, i64 40, !19, i64 64, !23, i64 88, !27, i64 112, !28, i64 120, !32, i64 144, !13, i64 168, !13, i64 172, !13, i64 176, !13, i64 180, !27, i64 184, !27, i64 185, !27, i64 186, !27, i64 187, !27, i64 188, !36, i64 192}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN6Halide8Internal8FunctionE", !11, i64 0}
!11 = !{!"_ZTSN6Halide8Internal11FunctionPtrE", !12, i64 0, !7, i64 8, !13, i64 16}
!12 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_13FunctionGroupEEE", !7, i64 0}
!13 = !{!"int", !8, i64 0}
!14 = !{!"double", !8, i64 0}
!15 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!19 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!23 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!27 = !{!"bool", !8, i64 0}
!28 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!32 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!36 = !{!"_ZTSSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !37, i64 0}
!37 = !{!"_ZTSSt15__uniq_ptr_dataIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_ELb1ELb1EE", !38, i64 0}
!38 = !{!"_ZTSSt15__uniq_ptr_implIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !39, i64 0}
!39 = !{!"_ZTSSt5tupleIJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !40, i64 0}
!40 = !{!"_ZTSSt11_Tuple_implILm0EJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !41, i64 0}
!41 = !{!"_ZTSSt10_Head_baseILm0EPN6Halide8Internal13Autoscheduler13BoundContents6LayoutELb0EE", !7, i64 0}
!42 = !{!6, !13, i64 176}
!43 = !{!6, !7, i64 0}
!44 = !{!7, !7, i64 0}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = distinct !{!47, !46}
!48 = distinct !{!48, !46, !49}
!49 = !{!"llvm.loop.peeled.count", i32 1}
!50 = distinct !{!50, !46}
!51 = !{!52, !7, i64 0}
!52 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageE", !7, i64 0, !13, i64 8, !53, i64 16, !27, i64 40, !13, i64 44, !57, i64 48, !58, i64 1200, !66, i64 1264, !13, i64 1296, !13, i64 1300, !32, i64 1304, !68, i64 1328}
!53 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!57 = !{!"_ZTSN6Halide8Internal16PipelineFeaturesE", !8, i64 0, !8, i64 28, !8, i64 700, !8, i64 812, !8, i64 924, !8, i64 1036}
!58 = !{!"_ZTSN6Halide5StageE", !10, i64 0, !59, i64 24, !61, i64 32, !62, i64 40}
!59 = !{!"_ZTSN6Halide8Internal10DefinitionE", !60, i64 0}
!60 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_18DefinitionContentsEEE", !7, i64 0}
!61 = !{!"long", !8, 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", !7, i64 0, !7, i64 8, !7, i64 16}
!66 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !67, i64 0, !61, i64 8, !8, i64 16}
!67 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!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, !7, i64 32}
!72 = !{!"_ZTSSt13_Bit_iterator", !73, i64 0}
!73 = !{!"_ZTSSt18_Bit_iterator_base", !7, i64 0, !13, i64 8}
!74 = distinct !{!74, !46}
!75 = !{!6, !27, i64 112}
!76 = !{!77, !27, i64 16}
!77 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoE", !78, i64 0, !27, i64 16, !27, i64 17, !61, i64 24, !61, i64 32}
!78 = !{!"_ZTSN6Halide8Internal8IntervalE", !79, i64 0, !79, i64 8}
!79 = !{!"_ZTSN6Halide4ExprE", !80, i64 0}
!80 = !{!"_ZTSN6Halide8Internal8IRHandleE", !81, i64 0}
!81 = !{!"_ZTSN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEEE", !7, i64 0}
!82 = !{!77, !27, i64 17}
!83 = !{!61, !61, i64 0}
!84 = !{!77, !61, i64 24}
!85 = !{!77, !61, i64 32}
!86 = distinct !{!86, !46}
!87 = !{!52, !27, i64 40}
!88 = !{!89, !27, i64 32}
!89 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopE", !66, i64 0, !27, i64 32, !27, i64 33, !79, i64 40, !79, i64 48, !13, i64 56, !27, i64 60, !13, i64 64, !27, i64 68, !61, i64 72, !61, i64 80, !66, i64 88}
!90 = !{!89, !27, i64 33}
!91 = !{!89, !13, i64 56}
!92 = !{!89, !27, i64 60}
!93 = !{!89, !13, i64 64}
!94 = distinct !{!94, !46}
!95 = !{i8 0, i8 2}
!96 = !{!89, !27, i64 68}
!97 = !{!89, !61, i64 72}
!98 = !{!89, !61, i64 80}
!99 = !{}
!100 = distinct !{!100, !46}
!101 = !{!6, !14, i64 32}
!102 = !{!52, !13, i64 44}
!103 = !{!13, !13, i64 0}
!104 = !{!6, !13, i64 168}
!105 = !{!6, !27, i64 186}
!106 = !{i64 0, i64 8, !83, i64 8, i64 8, !83, i64 16, i64 1, !107}
!107 = !{!27, !27, i64 0}
!108 = distinct !{!108, !46}
!109 = !{!52, !13, i64 8}
!110 = !{!6, !27, i64 187}
!111 = !{!6, !27, i64 188}
!112 = !{!113, !7, i64 32}
!113 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeE", !114, i64 0, !7, i64 24, !7, i64 32, !13, i64 40, !27, i64 44, !118, i64 48}
!114 = !{!"_ZTSSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE", !115, i64 0}
!115 = !{!"_ZTSSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE", !116, i64 0}
!116 = !{!"_ZTSNSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE12_Vector_implE", !117, i64 0}
!117 = !{!"_ZTSNSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!118 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE", !119, i64 0}
!119 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE", !120, i64 0}
!120 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE12_Vector_implE", !121, i64 0}
!121 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!122 = !{!113, !7, i64 24}
!123 = !{!113, !27, i64 44}
!124 = !{!125, !27, i64 32}
!125 = !{!"_ZTSSt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES5_E", !126, i64 0, !126, i64 40}
!126 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoE", !79, i64 0, !61, i64 8, !61, i64 16, !61, i64 24, !27, i64 32, !27, i64 33}
!127 = !{!125, !27, i64 72}
!128 = !{!113, !13, i64 40}
!129 = !{!130, !27, i64 32}
!130 = !{!"_ZTSZN6Halide8Internal13Autoscheduler11FunctionDAGC1ERKSt6vectorINS0_8FunctionESaIS4_EERKNS_13MachineParamsERKNS_6TargetEE10CheckTypes", !131, i64 0, !10, i64 8, !27, i64 32, !13, i64 36, !132, i64 40, !136, i64 56}
!131 = !{!"_ZTSN6Halide8Internal9IRVisitorE"}
!132 = !{!"_ZTSN6Halide4TypeE", !133, i64 0, !7, i64 8}
!133 = !{!"_ZTS13halide_type_t", !134, i64 0, !8, i64 1, !135, i64 2}
!134 = !{!"_ZTS18halide_type_code_t", !8, i64 0}
!135 = !{!"short", !8, i64 0}
!136 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiSt4lessIS5_ESaISt4pairIKS5_iEEE", !137, i64 0}
!137 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !138, i64 0}
!138 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_iESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !139, i64 0, !141, i64 8}
!139 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !140, i64 0}
!140 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!141 = !{!"_ZTSSt15_Rb_tree_header", !142, i64 0, !61, i64 32}
!142 = !{!"_ZTSSt18_Rb_tree_node_base", !143, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!143 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!144 = !{!6, !27, i64 184}
!145 = !{!6, !27, i64 185}
!146 = !{!6, !13, i64 180}
!147 = distinct !{!147, !46}
!148 = !{!149, !13, i64 60}
!149 = !{!"_ZTSN6Halide8Internal13Autoscheduler13BoundContents6LayoutE", !150, i64 0, !154, i64 24, !61, i64 48, !13, i64 56, !13, i64 60, !158, i64 64}
!150 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler13BoundContentsESaIS4_EE", !151, i64 0}
!151 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler13BoundContentsESaIS4_EE", !152, i64 0}
!152 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler13BoundContentsESaIS4_EE12_Vector_implE", !153, i64 0}
!153 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler13BoundContentsESaIS4_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!154 = !{!"_ZTSSt6vectorIPvSaIS0_EE", !155, i64 0}
!155 = !{!"_ZTSSt12_Vector_baseIPvSaIS0_EE", !156, i64 0}
!156 = !{!"_ZTSNSt12_Vector_baseIPvSaIS0_EE12_Vector_implE", !157, i64 0}
!157 = !{!"_ZTSNSt12_Vector_baseIPvSaIS0_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!158 = !{!"_ZTSSt6vectorIiSaIiEE", !159, i64 0}
!159 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !160, i64 0}
!160 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !161, i64 0}
!161 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!162 = !{!149, !13, i64 56}
!163 = !{!52, !13, i64 1296}
!164 = !{!52, !13, i64 1300}
!165 = distinct !{!165, !46}
!166 = distinct !{!166, !46}
!167 = distinct !{!167, !46}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass