; LLVM IR from snowberryfield/printemps :: example (sudoku)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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 }
%"class.std::locale" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::initializer_list.469" = type { ptr, i64 }
%"class.std::vector.470" = type { %"struct.std::_Vector_base.471" }
%"struct.std::_Vector_base.471" = 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 }
%"class.std::initializer_list.475" = type { ptr, i64 }
%"class.std::allocator.472" = type { i8 }
%"class.std::allocator.466" = type { i8 }
%"class.printemps::model::Model" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.476", %"class.std::vector.481", %"class.std::vector.486", %"class.printemps::model_component::Objective", %"class.std::unordered_map.516", %"class.std::vector.530", %"class.std::vector.530", %"class.std::vector.530", i8, i8, i8, i8, i8, i8, double, %"class.std::vector.535", %"struct.printemps::model_component::VariableReference", %"struct.printemps::model_component::VariableTypeReference", %"struct.printemps::model_component::ConstraintReference", %"struct.printemps::model_component::ConstraintTypeReference", %"struct.printemps::model_component::VariableReference", %"struct.printemps::model_component::VariableTypeReference", %"struct.printemps::model_component::ConstraintReference", %"struct.printemps::model_component::ConstraintTypeReference", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.545", %"class.printemps::neighborhood::Neighborhood", %"class.printemps::preprocess::ProblemSizeReducer", %"class.std::function.572" }
%"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::vector.476" = type { %"struct.std::_Vector_base.477" }
%"struct.std::_Vector_base.477" = type { %"struct.std::_Vector_base<printemps::model_component::VariableProxy<int, double>, std::allocator<printemps::model_component::VariableProxy<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::VariableProxy<int, double>, std::allocator<printemps::model_component::VariableProxy<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::VariableProxy<int, double>, std::allocator<printemps::model_component::VariableProxy<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::VariableProxy<int, double>, std::allocator<printemps::model_component::VariableProxy<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.481" = type { %"struct.std::_Vector_base.482" }
%"struct.std::_Vector_base.482" = type { %"struct.std::_Vector_base<printemps::model_component::ExpressionProxy<int, double>, std::allocator<printemps::model_component::ExpressionProxy<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::ExpressionProxy<int, double>, std::allocator<printemps::model_component::ExpressionProxy<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::ExpressionProxy<int, double>, std::allocator<printemps::model_component::ExpressionProxy<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::ExpressionProxy<int, double>, std::allocator<printemps::model_component::ExpressionProxy<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.486" = type { %"struct.std::_Vector_base.487" }
%"struct.std::_Vector_base.487" = type { %"struct.std::_Vector_base<printemps::model_component::ConstraintProxy<int, double>, std::allocator<printemps::model_component::ConstraintProxy<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::ConstraintProxy<int, double>, std::allocator<printemps::model_component::ConstraintProxy<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::ConstraintProxy<int, double>, std::allocator<printemps::model_component::ConstraintProxy<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::ConstraintProxy<int, double>, std::allocator<printemps::model_component::ConstraintProxy<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.printemps::model_component::Objective" = type { %"class.printemps::model_component::Expression", double }
%"class.printemps::model_component::Expression" = type { %"class.printemps::multi_array::AbstractMultiArrayElement", double, double, i8, %"class.std::unordered_map.491", %"class.std::unordered_map.491", %"class.std::unordered_map.491", %"class.std::unordered_map.491", %"class.std::vector.511", %"class.std::vector.511", %"class.printemps::utility::FixedSizeHashMap", i64, i64 }
%"class.printemps::multi_array::AbstractMultiArrayElement" = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::unordered_map.491" = type { %"class.std::_Hashtable.492" }
%"class.std::_Hashtable.492" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.511" = type { %"struct.std::_Vector_base.512" }
%"struct.std::_Vector_base.512" = type { %"struct.std::_Vector_base<printemps::model_component::Variable<int, double> *, std::allocator<printemps::model_component::Variable<int, double> *>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::Variable<int, double> *, std::allocator<printemps::model_component::Variable<int, double> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::Variable<int, double> *, std::allocator<printemps::model_component::Variable<int, double> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::Variable<int, double> *, std::allocator<printemps::model_component::Variable<int, double> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.printemps::utility::FixedSizeHashMap" = type { ptr, i8, i64, i64, i8, ptr, ptr, ptr }
%"class.std::unordered_map.516" = type { %"class.std::_Hashtable.517" }
%"class.std::_Hashtable.517" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.530" = type { %"struct.std::_Vector_base.531" }
%"struct.std::_Vector_base.531" = 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::vector.535" = type { %"struct.std::_Vector_base.536" }
%"struct.std::_Vector_base.536" = type { %"struct.std::_Vector_base<printemps::model_component::Selection<int, double>, std::allocator<printemps::model_component::Selection<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::Selection<int, double>, std::allocator<printemps::model_component::Selection<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::Selection<int, double>, std::allocator<printemps::model_component::Selection<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::Selection<int, double>, std::allocator<printemps::model_component::Selection<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.printemps::model_component::VariableReference" = type { %"class.std::vector.511", %"class.std::vector.511", %"class.std::vector.511" }
%"struct.printemps::model_component::VariableTypeReference" = type { %"class.std::vector.511", %"class.std::vector.511", %"class.std::vector.511", %"class.std::vector.511", %"class.std::vector.511" }
%"struct.printemps::model_component::ConstraintReference" = type { %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540" }
%"struct.printemps::model_component::ConstraintTypeReference" = type { %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540" }
%"class.std::vector.540" = type { %"struct.std::_Vector_base.541" }
%"struct.std::_Vector_base.541" = type { %"struct.std::_Vector_base<printemps::model_component::Constraint<int, double> *, std::allocator<printemps::model_component::Constraint<int, double> *>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::Constraint<int, double> *, std::allocator<printemps::model_component::Constraint<int, double> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::Constraint<int, double> *, std::allocator<printemps::model_component::Constraint<int, double> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::Constraint<int, double> *, std::allocator<printemps::model_component::Constraint<int, double> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.545" = type { %"struct.std::_Vector_base.546" }
%"struct.std::_Vector_base.546" = type { %"struct.std::_Vector_base<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>, std::allocator<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>, std::allocator<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>, std::allocator<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>, std::allocator<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.printemps::neighborhood::Neighborhood" = type { %"class.printemps::neighborhood::BinaryMoveGenerator", %"class.printemps::neighborhood::IntegerMoveGenerator", %"class.printemps::neighborhood::SelectionMoveGenerator", %"class.printemps::neighborhood::ExclusiveOrMoveGenerator", %"class.printemps::neighborhood::ExclusiveNorMoveGenerator", %"class.printemps::neighborhood::InvertedIntegersMoveGenerator", %"class.printemps::neighborhood::BalancedIntegersMoveGenerator", %"class.printemps::neighborhood::ConstantSumIntegersMoveGenerator", %"class.printemps::neighborhood::ConstantDifferenceIntegersMoveGenerator", %"class.printemps::neighborhood::ConstantRatioIntegersMoveGenerator", %"class.printemps::neighborhood::AggregationMoveGenerator", %"class.printemps::neighborhood::PrecedenceMoveGenerator", %"class.printemps::neighborhood::VariableBoundMoveGenerator", %"class.printemps::neighborhood::SoftSelectionMoveGenerator", %"class.printemps::neighborhood::TrinomialExclusiveNorMoveGenerator", %"class.printemps::neighborhood::ChainMoveGenerator", %"class.printemps::neighborhood::TwoFlipMoveGenerator", %"class.printemps::neighborhood::UserDefinedMoveGenerator", %"class.std::vector.562", %"class.std::vector.567", i64 }
%"class.printemps::neighborhood::BinaryMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::AbstractMoveGenerator.base" = type <{ %"class.std::function", %"class.std::vector.550", %"class.std::vector.555", i8 }>
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector.550" = type { %"struct.std::_Vector_base.551" }
%"struct.std::_Vector_base.551" = type { %"struct.std::_Vector_base<printemps::neighborhood::Move<int, double>, std::allocator<printemps::neighborhood::Move<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::neighborhood::Move<int, double>, std::allocator<printemps::neighborhood::Move<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::neighborhood::Move<int, double>, std::allocator<printemps::neighborhood::Move<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::neighborhood::Move<int, double>, std::allocator<printemps::neighborhood::Move<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.555" = type { %"struct.std::_Vector_base.556" }
%"struct.std::_Vector_base.556" = type { %"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl" }
%"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl" = type { %"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl_data" }
%"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.printemps::neighborhood::IntegerMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::SelectionMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ExclusiveOrMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ExclusiveNorMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::InvertedIntegersMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::BalancedIntegersMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ConstantSumIntegersMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ConstantDifferenceIntegersMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ConstantRatioIntegersMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::AggregationMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::PrecedenceMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::VariableBoundMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::SoftSelectionMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::TrinomialExclusiveNorMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ChainMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::TwoFlipMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::UserDefinedMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", %"class.std::function.560" }
%"class.std::function.560" = type { %"class.std::_Function_base", ptr }
%"class.std::vector.562" = type { %"struct.std::_Vector_base.563" }
%"struct.std::_Vector_base.563" = type { %"struct.std::_Vector_base<printemps::neighborhood::AbstractMoveGenerator<int, double> *, std::allocator<printemps::neighborhood::AbstractMoveGenerator<int, double> *>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::neighborhood::AbstractMoveGenerator<int, double> *, std::allocator<printemps::neighborhood::AbstractMoveGenerator<int, double> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::neighborhood::AbstractMoveGenerator<int, double> *, std::allocator<printemps::neighborhood::AbstractMoveGenerator<int, double> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::neighborhood::AbstractMoveGenerator<int, double> *, std::allocator<printemps::neighborhood::AbstractMoveGenerator<int, double> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.567" = type { %"struct.std::_Vector_base.568" }
%"struct.std::_Vector_base.568" = type { %"struct.std::_Vector_base<printemps::neighborhood::Move<int, double> *, std::allocator<printemps::neighborhood::Move<int, double> *>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::neighborhood::Move<int, double> *, std::allocator<printemps::neighborhood::Move<int, double> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::neighborhood::Move<int, double> *, std::allocator<printemps::neighborhood::Move<int, double> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::neighborhood::Move<int, double> *, std::allocator<printemps::neighborhood::Move<int, double> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.printemps::preprocess::ProblemSizeReducer" = type <{ ptr, i32, i32, i8, [7 x i8] }>
%"class.std::function.572" = type { %"class.std::_Function_base", ptr }
%"class.std::allocator" = type { i8 }
%"class.printemps::model_component::Constraint" = type <{ %"class.printemps::multi_array::AbstractMultiArrayElement", %"class.printemps::model_component::Expression", i32, [4 x i8], double, double, double, double, double, double, double, double, double, ptr, i64, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] }>
%"struct.printemps::option::Option" = type { %"struct.printemps::option::GeneralOption", %"struct.printemps::option::PenaltyOption", %"struct.printemps::option::ParallelOption", %"struct.printemps::option::PreprocessOption", %"struct.printemps::option::RestartOption", [4 x i8], %"struct.printemps::option::NeighborhoodOption", %"struct.printemps::option::OutputOption", [4 x i8], %"struct.printemps::option::PDLPOption", %"struct.printemps::option::LagrangeDualOption", %"struct.printemps::option::LocalSearchOption", %"struct.printemps::option::TabuSearchOption" }
%"struct.printemps::option::GeneralOption" = type <{ i32, [4 x i8], double, double, double, i32, i8, [3 x i8] }>
%"struct.printemps::option::PenaltyOption" = type <{ double, double, double, double, double, double, double, double, i32, i32, i8, i8, i8, i8, [4 x i8] }>
%"struct.printemps::option::ParallelOption" = type { i8, i8, i32, i32, i8, double }
%"struct.printemps::option::PreprocessOption" = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%"struct.printemps::option::RestartOption" = type { i32 }
%"struct.printemps::option::NeighborhoodOption" = type <{ i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i8], i32, i32, [4 x i8], double, i32, i32, i8, [7 x i8] }>
%"struct.printemps::option::OutputOption" = type <{ i32, i8, i8, [2 x i8], i32, i8, i8, i8, i8, i8, i8, i8, i8 }>
%"struct.printemps::option::PDLPOption" = type <{ i8, [3 x i8], i32, double, double, double, double, double, double, double, double, i32, i32, i32, i8, [3 x i8], i32, [4 x i8] }>
%"struct.printemps::option::LagrangeDualOption" = type { i8, i32, double, double, double, double, double, i32, i32 }
%"struct.printemps::option::LocalSearchOption" = type { i8, i32, double, double, i32, i32 }
%"struct.printemps::option::TabuSearchOption" = type <{ i32, [4 x i8], double, double, i32, i32, double, double, double, i32, [4 x i8], double, double, double, double, i8, i8, i8, i8, i8, i8, [2 x i8], i32, i32, double, double, i8, [3 x i8], i32, i32, [4 x i8] }>
%"struct.printemps::solver::Result" = type { %"class.printemps::solution::NamedSolution", %"struct.printemps::solver::Status", %"class.printemps::solution::SolutionArchive" }
%"class.printemps::solution::NamedSolution" = type <{ %"class.std::unordered_map.592", %"class.std::unordered_map.606", %"class.std::unordered_map.606", %"class.std::unordered_map.606", %"class.std::__cxx11::basic_string", i32, i32, double, double, double, i8, [7 x i8] }>
%"class.std::unordered_map.592" = type { %"class.std::_Hashtable.593" }
%"class.std::_Hashtable.593" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.606" = type { %"class.std::_Hashtable.607" }
%"class.std::_Hashtable.607" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.printemps::solver::Status" = type { ptr, ptr, %"struct.printemps::option::Option", double, double, i8, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, double, i32, i32, i64, i32, i64, double, double, double, double, %"class.std::unordered_map.606", %"class.std::unordered_map.620", %"class.std::unordered_map.620" }
%"class.std::unordered_map.620" = type { %"class.std::_Hashtable.621" }
%"class.std::_Hashtable.621" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.printemps::solution::SolutionArchive" = type <{ i32, i32, %"class.std::vector.634", %"class.std::__cxx11::basic_string", i32, i32, i8, [7 x i8] }>
%"class.std::vector.634" = type { %"struct.std::_Vector_base.635" }
%"struct.std::_Vector_base.635" = type { %"struct.std::_Vector_base<printemps::solution::SparseSolution<int, double>, std::allocator<printemps::solution::SparseSolution<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::solution::SparseSolution<int, double>, std::allocator<printemps::solution::SparseSolution<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::solution::SparseSolution<int, double>, std::allocator<printemps::solution::SparseSolution<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::solution::SparseSolution<int, double>, std::allocator<printemps::solution::SparseSolution<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@constinit = external hidden constant [9 x i32], align 4
@constinit.70 = external hidden constant [9 x i32], align 4
@constinit.71 = external hidden constant [9 x i32], align 4
@constinit.72 = external hidden constant [9 x i32], align 4
@constinit.73 = external hidden constant [9 x i32], align 4
@constinit.74 = external hidden constant [9 x i32], align 4
@constinit.75 = external hidden constant [9 x i32], align 4
@constinit.76 = external hidden constant [9 x i32], align 4
@constinit.77 = external hidden constant [9 x i32], align 4
@.str.78 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.84 = external hidden unnamed_addr constant [2 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: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 #2 align 2

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #3 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca %"class.std::vector", align 8
  %3 = alloca %"class.std::initializer_list.469", align 8
  %4 = alloca [9 x %"class.std::vector.470"], align 8
  %5 = alloca ptr, align 8
  %6 = alloca %"class.std::initializer_list.475", align 8
  %7 = alloca [9 x i32], align 4
  %8 = alloca %"class.std::allocator.472", align 1
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::initializer_list.475", align 8
  %12 = alloca [9 x i32], align 4
  %13 = alloca %"class.std::allocator.472", align 1
  %14 = alloca %"class.std::initializer_list.475", align 8
  %15 = alloca [9 x i32], align 4
  %16 = alloca %"class.std::allocator.472", align 1
  %17 = alloca %"class.std::initializer_list.475", align 8
  %18 = alloca [9 x i32], align 4
  %19 = alloca %"class.std::allocator.472", align 1
  %20 = alloca %"class.std::initializer_list.475", align 8
  %21 = alloca [9 x i32], align 4
  %22 = alloca %"class.std::allocator.472", align 1
  %23 = alloca %"class.std::initializer_list.475", align 8
  %24 = alloca [9 x i32], align 4
  %25 = alloca %"class.std::allocator.472", align 1
  %26 = alloca %"class.std::initializer_list.475", align 8
  %27 = alloca [9 x i32], align 4
  %28 = alloca %"class.std::allocator.472", align 1
  %29 = alloca %"class.std::initializer_list.475", align 8
  %30 = alloca [9 x i32], align 4
  %31 = alloca %"class.std::allocator.472", align 1
  %32 = alloca %"class.std::initializer_list.475", align 8
  %33 = alloca [9 x i32], align 4
  %34 = alloca %"class.std::allocator.472", align 1
  %35 = alloca i1, align 1
  %36 = alloca %"class.std::allocator.466", align 1
  %37 = alloca i32, align 4
  %38 = alloca %"class.printemps::model::Model", align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator", align 1
  %42 = alloca %"class.std::vector.470", align 8
  %43 = alloca %"class.std::initializer_list.475", align 8
  %44 = alloca [3 x i32], align 4
  %45 = alloca %"class.std::allocator.472", align 1
  %46 = alloca ptr, align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator", align 1
  %49 = alloca %"class.std::vector.470", align 8
  %50 = alloca %"class.std::initializer_list.475", align 8
  %51 = alloca [3 x i32], align 4
  %52 = alloca %"class.std::allocator.472", align 1
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator", align 1
  %62 = alloca %"class.std::vector.470", align 8
  %63 = alloca %"class.std::initializer_list.475", align 8
  %64 = alloca [2 x i32], align 4
  %65 = alloca %"class.std::allocator.472", align 1
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca %"class.printemps::model_component::Constraint", align 8
  %69 = alloca %"class.std::vector.470", align 8
  %70 = alloca %"class.std::initializer_list.475", align 8
  %71 = alloca [3 x i32], align 4
  %72 = alloca %"class.std::allocator.472", align 1
  %73 = alloca ptr, align 8
  %74 = alloca %"class.std::__cxx11::basic_string", align 8
  %75 = alloca %"class.std::allocator", align 1
  %76 = alloca %"class.std::vector.470", align 8
  %77 = alloca %"class.std::initializer_list.475", align 8
  %78 = alloca [2 x i32], align 4
  %79 = alloca %"class.std::allocator.472", align 1
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca %"class.printemps::model_component::Constraint", align 8
  %83 = alloca %"class.std::vector.470", align 8
  %84 = alloca %"class.std::initializer_list.475", align 8
  %85 = alloca [3 x i32], align 4
  %86 = alloca %"class.std::allocator.472", align 1
  %87 = alloca ptr, align 8
  %88 = alloca %"class.std::__cxx11::basic_string", align 8
  %89 = alloca %"class.std::allocator", align 1
  %90 = alloca %"class.std::vector.470", align 8
  %91 = alloca %"class.std::initializer_list.475", align 8
  %92 = alloca [2 x i32], align 4
  %93 = alloca %"class.std::allocator.472", align 1
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca %"class.printemps::model_component::Constraint", align 8
  %97 = alloca %"class.std::vector.470", align 8
  %98 = alloca %"class.std::initializer_list.475", align 8
  %99 = alloca [3 x i32], align 4
  %100 = alloca %"class.std::allocator.472", align 1
  %101 = alloca ptr, align 8
  %102 = alloca %"class.std::__cxx11::basic_string", align 8
  %103 = alloca %"class.std::allocator", align 1
  %104 = alloca %"class.std::vector.470", align 8
  %105 = alloca %"class.std::initializer_list.475", align 8
  %106 = alloca [3 x i32], align 4
  %107 = alloca %"class.std::allocator.472", align 1
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca %"class.printemps::model_component::Constraint", align 8
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca %"struct.printemps::option::Option", align 8
  %115 = alloca %"struct.printemps::solver::Result", align 8
  %116 = alloca %"class.std::vector", align 8
  %117 = alloca %"class.std::allocator.466", align 1
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca %"class.std::__cxx11::basic_string", align 8
  %122 = alloca %"class.std::allocator", align 1
  %123 = alloca i32, align 4
  %124 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 24, ptr %2) #9
  call void @llvm.lifetime.start.p0(i64 216, ptr %4) #9
  store i1 true, ptr %35, align 1
  store ptr %4, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr %7) #9
  call void @llvm.memset.p0.i64(ptr align 4 %7, i8 0, i64 36, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %7, ptr align 4 @constinit, i64 36, i1 false), !tbaa.struct !5
  %125 = getelementptr inbounds %"class.std::initializer_list.475", ptr %6, i32 0, i32 0
  store ptr %7, ptr %125, align 8, !tbaa !9
  %126 = getelementptr inbounds %"class.std::initializer_list.475", ptr %6, i32 0, i32 1
  store i64 9, ptr %126, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  %127 = getelementptr inbounds { ptr, i64 }, ptr %6, i32 0, i32 0
  %128 = load ptr, ptr %127, align 8
  %129 = getelementptr inbounds { ptr, i64 }, ptr %6, i32 0, i32 1
  %130 = load i64, ptr %129, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr %128, i64 %130, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %131 unwind label %249

131:                                              ; preds = %0
  %132 = getelementptr inbounds %"class.std::vector.470", ptr %4, i64 1
  store ptr %132, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr %12) #9
  call void @llvm.memset.p0.i64(ptr align 4 %12, i8 0, i64 36, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %12, ptr align 4 @constinit.70, i64 36, i1 false), !tbaa.struct !5
  %133 = getelementptr inbounds %"class.std::initializer_list.475", ptr %11, i32 0, i32 0
  store ptr %12, ptr %133, align 8, !tbaa !9
  %134 = getelementptr inbounds %"class.std::initializer_list.475", ptr %11, i32 0, i32 1
  store i64 9, ptr %134, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  %135 = getelementptr inbounds { ptr, i64 }, ptr %11, i32 0, i32 0
  %136 = load ptr, ptr %135, align 8
  %137 = getelementptr inbounds { ptr, i64 }, ptr %11, i32 0, i32 1
  %138 = load i64, ptr %137, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %132, ptr %136, i64 %138, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %139 unwind label %253

139:                                              ; preds = %131
  %140 = getelementptr inbounds %"class.std::vector.470", ptr %4, i64 2
  store ptr %140, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr %15) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %15, ptr align 4 @constinit.71, i64 36, i1 false), !tbaa.struct !5
  %141 = getelementptr inbounds %"class.std::initializer_list.475", ptr %14, i32 0, i32 0
  store ptr %15, ptr %141, align 8, !tbaa !9
  %142 = getelementptr inbounds %"class.std::initializer_list.475", ptr %14, i32 0, i32 1
  store i64 9, ptr %142, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  %143 = getelementptr inbounds { ptr, i64 }, ptr %14, i32 0, i32 0
  %144 = load ptr, ptr %143, align 8
  %145 = getelementptr inbounds { ptr, i64 }, ptr %14, i32 0, i32 1
  %146 = load i64, ptr %145, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %140, ptr %144, i64 %146, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %147 unwind label %257

147:                                              ; preds = %139
  %148 = getelementptr inbounds %"class.std::vector.470", ptr %4, i64 3
  store ptr %148, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr %18) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 4 @constinit.72, i64 36, i1 false), !tbaa.struct !5
  %149 = getelementptr inbounds %"class.std::initializer_list.475", ptr %17, i32 0, i32 0
  store ptr %18, ptr %149, align 8, !tbaa !9
  %150 = getelementptr inbounds %"class.std::initializer_list.475", ptr %17, i32 0, i32 1
  store i64 9, ptr %150, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  %151 = getelementptr inbounds { ptr, i64 }, ptr %17, i32 0, i32 0
  %152 = load ptr, ptr %151, align 8
  %153 = getelementptr inbounds { ptr, i64 }, ptr %17, i32 0, i32 1
  %154 = load i64, ptr %153, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %148, ptr %152, i64 %154, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %155 unwind label %261

155:                                              ; preds = %147
  %156 = getelementptr inbounds %"class.std::vector.470", ptr %4, i64 4
  store ptr %156, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr %21) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %21, ptr align 4 @constinit.73, i64 36, i1 false), !tbaa.struct !5
  %157 = getelementptr inbounds %"class.std::initializer_list.475", ptr %20, i32 0, i32 0
  store ptr %21, ptr %157, align 8, !tbaa !9
  %158 = getelementptr inbounds %"class.std::initializer_list.475", ptr %20, i32 0, i32 1
  store i64 9, ptr %158, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  %159 = getelementptr inbounds { ptr, i64 }, ptr %20, i32 0, i32 0
  %160 = load ptr, ptr %159, align 8
  %161 = getelementptr inbounds { ptr, i64 }, ptr %20, i32 0, i32 1
  %162 = load i64, ptr %161, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %156, ptr %160, i64 %162, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %163 unwind label %265

163:                                              ; preds = %155
  %164 = getelementptr inbounds %"class.std::vector.470", ptr %4, i64 5
  store ptr %164, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr %24) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %24, ptr align 4 @constinit.74, i64 36, i1 false), !tbaa.struct !5
  %165 = getelementptr inbounds %"class.std::initializer_list.475", ptr %23, i32 0, i32 0
  store ptr %24, ptr %165, align 8, !tbaa !9
  %166 = getelementptr inbounds %"class.std::initializer_list.475", ptr %23, i32 0, i32 1
  store i64 9, ptr %166, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  %167 = getelementptr inbounds { ptr, i64 }, ptr %23, i32 0, i32 0
  %168 = load ptr, ptr %167, align 8
  %169 = getelementptr inbounds { ptr, i64 }, ptr %23, i32 0, i32 1
  %170 = load i64, ptr %169, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %164, ptr %168, i64 %170, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %171 unwind label %269

171:                                              ; preds = %163
  %172 = getelementptr inbounds %"class.std::vector.470", ptr %4, i64 6
  store ptr %172, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr %27) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %27, ptr align 4 @constinit.75, i64 36, i1 false), !tbaa.struct !5
  %173 = getelementptr inbounds %"class.std::initializer_list.475", ptr %26, i32 0, i32 0
  store ptr %27, ptr %173, align 8, !tbaa !9
  %174 = getelementptr inbounds %"class.std::initializer_list.475", ptr %26, i32 0, i32 1
  store i64 9, ptr %174, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  %175 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 0
  %176 = load ptr, ptr %175, align 8
  %177 = getelementptr inbounds { ptr, i64 }, ptr %26, i32 0, i32 1
  %178 = load i64, ptr %177, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %172, ptr %176, i64 %178, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %179 unwind label %273

179:                                              ; preds = %171
  %180 = getelementptr inbounds %"class.std::vector.470", ptr %4, i64 7
  store ptr %180, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr %30) #9
  call void @llvm.memset.p0.i64(ptr align 4 %30, i8 0, i64 36, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 4 @constinit.76, i64 36, i1 false), !tbaa.struct !5
  %181 = getelementptr inbounds %"class.std::initializer_list.475", ptr %29, i32 0, i32 0
  store ptr %30, ptr %181, align 8, !tbaa !9
  %182 = getelementptr inbounds %"class.std::initializer_list.475", ptr %29, i32 0, i32 1
  store i64 9, ptr %182, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  %183 = getelementptr inbounds { ptr, i64 }, ptr %29, i32 0, i32 0
  %184 = load ptr, ptr %183, align 8
  %185 = getelementptr inbounds { ptr, i64 }, ptr %29, i32 0, i32 1
  %186 = load i64, ptr %185, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %180, ptr %184, i64 %186, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %187 unwind label %277

187:                                              ; preds = %179
  %188 = getelementptr inbounds %"class.std::vector.470", ptr %4, i64 8
  store ptr %188, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 36, ptr %33) #9
  call void @llvm.memset.p0.i64(ptr align 4 %33, i8 0, i64 36, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %33, ptr align 4 @constinit.77, i64 36, i1 false), !tbaa.struct !5
  %189 = getelementptr inbounds %"class.std::initializer_list.475", ptr %32, i32 0, i32 0
  store ptr %33, ptr %189, align 8, !tbaa !9
  %190 = getelementptr inbounds %"class.std::initializer_list.475", ptr %32, i32 0, i32 1
  store i64 9, ptr %190, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  %191 = getelementptr inbounds { ptr, i64 }, ptr %32, i32 0, i32 0
  %192 = load ptr, ptr %191, align 8
  %193 = getelementptr inbounds { ptr, i64 }, ptr %32, i32 0, i32 1
  %194 = load i64, ptr %193, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %188, ptr %192, i64 %194, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %195 unwind label %281

195:                                              ; preds = %187
  store i1 false, ptr %35, align 1
  %196 = getelementptr inbounds %"class.std::initializer_list.469", ptr %3, i32 0, i32 0
  store ptr %4, ptr %196, align 8, !tbaa !14
  %197 = getelementptr inbounds %"class.std::initializer_list.469", ptr %3, i32 0, i32 1
  store i64 9, ptr %197, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #9
  call void @_ZNSaISt6vectorIiSaIiEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  %198 = getelementptr inbounds { ptr, i64 }, ptr %3, i32 0, i32 0
  %199 = load ptr, ptr %198, align 8
  %200 = getelementptr inbounds { ptr, i64 }, ptr %3, i32 0, i32 1
  %201 = load i64, ptr %200, align 8
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %199, i64 %201, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %202 unwind label %285

202:                                              ; preds = %195
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  %203 = getelementptr inbounds [9 x %"class.std::vector.470"], ptr %4, i32 0, i32 0
  %204 = getelementptr inbounds %"class.std::vector.470", ptr %203, i64 9
  br label %205

205:                                              ; preds = %205, %202
  %206 = phi ptr [ %204, %202 ], [ %207, %205 ]
  %207 = getelementptr inbounds %"class.std::vector.470", ptr %206, i64 -1
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %207) #9
  %208 = icmp eq ptr %207, %203
  br i1 %208, label %209, label %205

209:                                              ; preds = %205
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %33) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %30) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %27) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %24) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %21) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %18) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %15) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %12) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 216, ptr %4) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  store i32 9, ptr %37, align 4, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4584, ptr %38) #9
  invoke void @_ZN9printemps5model5ModelIidEC2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %38)
          to label %210 unwind label %315

210:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %211 unwind label %319

211:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 24, ptr %42) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %44) #9
  %212 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %212, ptr %44, align 4, !tbaa !17
  %213 = getelementptr inbounds i32, ptr %44, i64 1
  %214 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %214, ptr %213, align 4, !tbaa !17
  %215 = getelementptr inbounds i32, ptr %44, i64 2
  %216 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %216, ptr %215, align 4, !tbaa !17
  %217 = getelementptr inbounds %"class.std::initializer_list.475", ptr %43, i32 0, i32 0
  store ptr %44, ptr %217, align 8, !tbaa !9
  %218 = getelementptr inbounds %"class.std::initializer_list.475", ptr %43, i32 0, i32 1
  store i64 3, ptr %218, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  %219 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 0
  %220 = load ptr, ptr %219, align 8
  %221 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 1
  %222 = load i64, ptr %221, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr %220, i64 %222, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %223 unwind label %323

223:                                              ; preds = %211
  %224 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE16create_variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEEii(ptr noundef nonnull align 8 dereferenceable(4584) %38, ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(24) %42, i32 noundef 0, i32 noundef 1)
          to label %225 unwind label %327

225:                                              ; preds = %223
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  store ptr %224, ptr %39, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.79, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %226 unwind label %333

226:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %51) #9
  %227 = load i32, ptr %37, align 4, !tbaa !17
  %228 = sdiv i32 %227, 3
  store i32 %228, ptr %51, align 4, !tbaa !17
  %229 = getelementptr inbounds i32, ptr %51, i64 1
  %230 = load i32, ptr %37, align 4, !tbaa !17
  %231 = sdiv i32 %230, 3
  store i32 %231, ptr %229, align 4, !tbaa !17
  %232 = getelementptr inbounds i32, ptr %51, i64 2
  %233 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %233, ptr %232, align 4, !tbaa !17
  %234 = getelementptr inbounds %"class.std::initializer_list.475", ptr %50, i32 0, i32 0
  store ptr %51, ptr %234, align 8, !tbaa !9
  %235 = getelementptr inbounds %"class.std::initializer_list.475", ptr %50, i32 0, i32 1
  store i64 3, ptr %235, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #9
  %236 = getelementptr inbounds { ptr, i64 }, ptr %50, i32 0, i32 0
  %237 = load ptr, ptr %236, align 8
  %238 = getelementptr inbounds { ptr, i64 }, ptr %50, i32 0, i32 1
  %239 = load i64, ptr %238, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr %237, i64 %239, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %240 unwind label %337

240:                                              ; preds = %226
  %241 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_expressionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584) %38, ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(24) %49)
          to label %242 unwind label %341

242:                                              ; preds = %240
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  store ptr %241, ptr %46, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  store i32 0, ptr %53, align 4, !tbaa !17
  br label %243

243:                                              ; preds = %423, %242
  %244 = load i32, ptr %53, align 4, !tbaa !17
  %245 = load i32, ptr %37, align 4, !tbaa !17
  %246 = sdiv i32 %245, 3
  %247 = icmp slt i32 %244, %246
  br i1 %247, label %347, label %248

248:                                              ; preds = %243
  store i32 2, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  br label %426

249:                                              ; preds = %0
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %9, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %10, align 4
  br label %304

253:                                              ; preds = %131
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %9, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %10, align 4
  br label %303

257:                                              ; preds = %139
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %9, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %10, align 4
  br label %302

261:                                              ; preds = %147
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %9, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %10, align 4
  br label %301

265:                                              ; preds = %155
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %9, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %10, align 4
  br label %300

269:                                              ; preds = %163
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %9, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %10, align 4
  br label %299

273:                                              ; preds = %171
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %9, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %10, align 4
  br label %298

277:                                              ; preds = %179
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %9, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %10, align 4
  br label %297

281:                                              ; preds = %187
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %9, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %10, align 4
  br label %296

285:                                              ; preds = %195
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %9, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %10, align 4
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  %289 = getelementptr inbounds [9 x %"class.std::vector.470"], ptr %4, i32 0, i32 0
  %290 = getelementptr inbounds %"class.std::vector.470", ptr %289, i64 9
  br label %291

291:                                              ; preds = %291, %285
  %292 = phi ptr [ %290, %285 ], [ %293, %291 ]
  %293 = getelementptr inbounds %"class.std::vector.470", ptr %292, i64 -1
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %293) #9
  %294 = icmp eq ptr %293, %289
  br i1 %294, label %295, label %291

295:                                              ; preds = %291
  br label %296

296:                                              ; preds = %295, %281
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %33) #9
  br label %297

297:                                              ; preds = %296, %277
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %30) #9
  br label %298

298:                                              ; preds = %297, %273
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %27) #9
  br label %299

299:                                              ; preds = %298, %269
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %24) #9
  br label %300

300:                                              ; preds = %299, %265
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %21) #9
  br label %301

301:                                              ; preds = %300, %261
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %18) #9
  br label %302

302:                                              ; preds = %301, %257
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %15) #9
  br label %303

303:                                              ; preds = %302, %253
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %12) #9
  br label %304

304:                                              ; preds = %303, %249
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %7) #9
  %305 = load i1, ptr %35, align 1
  br i1 %305, label %306, label %314

306:                                              ; preds = %304
  %307 = load ptr, ptr %5, align 8
  %308 = icmp eq ptr %4, %307
  br i1 %308, label %313, label %309

309:                                              ; preds = %309, %306
  %310 = phi ptr [ %307, %306 ], [ %311, %309 ]
  %311 = getelementptr inbounds %"class.std::vector.470", ptr %310, i64 -1
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %311) #9
  %312 = icmp eq ptr %311, %4
  br i1 %312, label %313, label %309

313:                                              ; preds = %309, %306
  br label %314

314:                                              ; preds = %313, %304
  call void @llvm.lifetime.end.p0(i64 216, ptr %4) #9
  br label %958

315:                                              ; preds = %209
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %9, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %10, align 4
  br label %957

319:                                              ; preds = %210
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %9, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %10, align 4
  br label %332

323:                                              ; preds = %211
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %9, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %10, align 4
  br label %331

327:                                              ; preds = %223
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %9, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %10, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  br label %331

331:                                              ; preds = %327, %323
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  br label %332

332:                                              ; preds = %331, %319
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  br label %956

333:                                              ; preds = %225
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %9, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %10, align 4
  br label %346

337:                                              ; preds = %226
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %9, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %10, align 4
  br label %345

341:                                              ; preds = %240
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %9, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %10, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #9
  br label %345

345:                                              ; preds = %341, %337
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  br label %346

346:                                              ; preds = %345, %333
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  br label %955

347:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  store i32 0, ptr %55, align 4, !tbaa !17
  br label %348

348:                                              ; preds = %419, %347
  %349 = load i32, ptr %55, align 4, !tbaa !17
  %350 = load i32, ptr %37, align 4, !tbaa !17
  %351 = sdiv i32 %350, 3
  %352 = icmp slt i32 %349, %351
  br i1 %352, label %354, label %353

353:                                              ; preds = %348
  store i32 5, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  br label %422

354:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  store i32 0, ptr %56, align 4, !tbaa !17
  br label %355

355:                                              ; preds = %415, %354
  %356 = load i32, ptr %56, align 4, !tbaa !17
  %357 = load i32, ptr %37, align 4, !tbaa !17
  %358 = icmp slt i32 %356, %357
  br i1 %358, label %360, label %359

359:                                              ; preds = %355
  store i32 8, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  br label %418

360:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #9
  %361 = load i32, ptr %53, align 4, !tbaa !17
  %362 = load i32, ptr %37, align 4, !tbaa !17
  %363 = mul nsw i32 %361, %362
  %364 = sdiv i32 %363, 3
  store i32 %364, ptr %57, align 4, !tbaa !17
  br label %365

365:                                              ; preds = %411, %360
  %366 = load i32, ptr %57, align 4, !tbaa !17
  %367 = load i32, ptr %53, align 4, !tbaa !17
  %368 = add nsw i32 %367, 1
  %369 = load i32, ptr %37, align 4, !tbaa !17
  %370 = mul nsw i32 %368, %369
  %371 = sdiv i32 %370, 3
  %372 = icmp slt i32 %366, %371
  br i1 %372, label %374, label %373

373:                                              ; preds = %365
  store i32 11, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  br label %414

374:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #9
  %375 = load i32, ptr %55, align 4, !tbaa !17
  %376 = load i32, ptr %37, align 4, !tbaa !17
  %377 = mul nsw i32 %375, %376
  %378 = sdiv i32 %377, 3
  store i32 %378, ptr %58, align 4, !tbaa !17
  br label %379

379:                                              ; preds = %403, %374
  %380 = load i32, ptr %58, align 4, !tbaa !17
  %381 = load i32, ptr %55, align 4, !tbaa !17
  %382 = add nsw i32 %381, 1
  %383 = load i32, ptr %37, align 4, !tbaa !17
  %384 = mul nsw i32 %382, %383
  %385 = sdiv i32 %384, 3
  %386 = icmp slt i32 %380, %385
  br i1 %386, label %388, label %387

387:                                              ; preds = %379
  store i32 14, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  br label %410

388:                                              ; preds = %379
  %389 = load ptr, ptr %39, align 8, !tbaa !19
  %390 = load i32, ptr %57, align 4, !tbaa !17
  %391 = load i32, ptr %58, align 4, !tbaa !17
  %392 = load i32, ptr %56, align 4, !tbaa !17
  %393 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %389, i32 noundef %390, i32 noundef %391, i32 noundef %392)
          to label %394 unwind label %406

394:                                              ; preds = %388
  %395 = load ptr, ptr %46, align 8, !tbaa !19
  %396 = load i32, ptr %53, align 4, !tbaa !17
  %397 = load i32, ptr %55, align 4, !tbaa !17
  %398 = load i32, ptr %56, align 4, !tbaa !17
  %399 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %395, i32 noundef %396, i32 noundef %397, i32 noundef %398)
          to label %400 unwind label %406

400:                                              ; preds = %394
  %401 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392) %399, ptr noundef nonnull align 8 dereferenceable(62) %393)
          to label %402 unwind label %406

402:                                              ; preds = %400
  br label %403

403:                                              ; preds = %402
  %404 = load i32, ptr %58, align 4, !tbaa !17
  %405 = add nsw i32 %404, 1
  store i32 %405, ptr %58, align 4, !tbaa !17
  br label %379, !llvm.loop !20

406:                                              ; preds = %400, %394, %388
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %9, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  br label %955

410:                                              ; preds = %387
  br label %411

411:                                              ; preds = %410
  %412 = load i32, ptr %57, align 4, !tbaa !17
  %413 = add nsw i32 %412, 1
  store i32 %413, ptr %57, align 4, !tbaa !17
  br label %365, !llvm.loop !22

414:                                              ; preds = %373
  br label %415

415:                                              ; preds = %414
  %416 = load i32, ptr %56, align 4, !tbaa !17
  %417 = add nsw i32 %416, 1
  store i32 %417, ptr %56, align 4, !tbaa !17
  br label %355, !llvm.loop !23

418:                                              ; preds = %359
  br label %419

419:                                              ; preds = %418
  %420 = load i32, ptr %55, align 4, !tbaa !17
  %421 = add nsw i32 %420, 1
  store i32 %421, ptr %55, align 4, !tbaa !17
  br label %348, !llvm.loop !24

422:                                              ; preds = %353
  br label %423

423:                                              ; preds = %422
  %424 = load i32, ptr %53, align 4, !tbaa !17
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %53, align 4, !tbaa !17
  br label %243, !llvm.loop !25

426:                                              ; preds = %248
  %427 = load ptr, ptr %46, align 8, !tbaa !19
  invoke void @_ZN9printemps15model_component15ExpressionProxyIidE7disableEv(ptr noundef nonnull align 8 dereferenceable(88) %427)
          to label %428 unwind label %447

428:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %429 unwind label %451

429:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 24, ptr %62) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %430 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %430, ptr %64, align 4, !tbaa !17
  %431 = getelementptr inbounds i32, ptr %64, i64 1
  %432 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %432, ptr %431, align 4, !tbaa !17
  %433 = getelementptr inbounds %"class.std::initializer_list.475", ptr %63, i32 0, i32 0
  store ptr %64, ptr %433, align 8, !tbaa !9
  %434 = getelementptr inbounds %"class.std::initializer_list.475", ptr %63, i32 0, i32 1
  store i64 2, ptr %434, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #9
  %435 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 0
  %436 = load ptr, ptr %435, align 8
  %437 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 1
  %438 = load i64, ptr %437, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr %436, i64 %438, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %439 unwind label %455

439:                                              ; preds = %429
  %440 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584) %38, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(24) %62)
          to label %441 unwind label %459

441:                                              ; preds = %439
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %62) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #9
  store ptr %440, ptr %59, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #9
  store i32 0, ptr %66, align 4, !tbaa !17
  br label %442

442:                                              ; preds = %510, %441
  %443 = load i32, ptr %66, align 4, !tbaa !17
  %444 = load i32, ptr %37, align 4, !tbaa !17
  %445 = icmp slt i32 %443, %444
  br i1 %445, label %465, label %446

446:                                              ; preds = %442
  store i32 17, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  br label %513

447:                                              ; preds = %426
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %9, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %10, align 4
  br label %955

451:                                              ; preds = %428
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %9, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %10, align 4
  br label %464

455:                                              ; preds = %429
  %456 = landingpad { ptr, i32 }
          cleanup
  %457 = extractvalue { ptr, i32 } %456, 0
  store ptr %457, ptr %9, align 8
  %458 = extractvalue { ptr, i32 } %456, 1
  store i32 %458, ptr %10, align 4
  br label %463

459:                                              ; preds = %439
  %460 = landingpad { ptr, i32 }
          cleanup
  %461 = extractvalue { ptr, i32 } %460, 0
  store ptr %461, ptr %9, align 8
  %462 = extractvalue { ptr, i32 } %460, 1
  store i32 %462, ptr %10, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #9
  br label %463

463:                                              ; preds = %459, %455
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %65) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %62) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  br label %464

464:                                              ; preds = %463, %451
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #9
  br label %954

465:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #9
  store i32 0, ptr %67, align 4, !tbaa !17
  br label %466

466:                                              ; preds = %492, %465
  %467 = load i32, ptr %67, align 4, !tbaa !17
  %468 = load i32, ptr %37, align 4, !tbaa !17
  %469 = icmp slt i32 %467, %468
  br i1 %469, label %471, label %470

470:                                              ; preds = %466
  store i32 20, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #9
  br label %509

471:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 544, ptr %68) #9
  %472 = load ptr, ptr %39, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 24, ptr %69) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %71) #9
  %473 = load i32, ptr %66, align 4, !tbaa !17
  store i32 %473, ptr %71, align 4, !tbaa !17
  %474 = getelementptr inbounds i32, ptr %71, i64 1
  %475 = load i32, ptr %67, align 4, !tbaa !17
  store i32 %475, ptr %474, align 4, !tbaa !17
  %476 = getelementptr inbounds i32, ptr %71, i64 2
  store i32 -1, ptr %476, align 4, !tbaa !17
  %477 = getelementptr inbounds %"class.std::initializer_list.475", ptr %70, i32 0, i32 0
  store ptr %71, ptr %477, align 8, !tbaa !9
  %478 = getelementptr inbounds %"class.std::initializer_list.475", ptr %70, i32 0, i32 1
  store i64 3, ptr %478, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #9
  %479 = getelementptr inbounds { ptr, i64 }, ptr %70, i32 0, i32 0
  %480 = load ptr, ptr %479, align 8
  %481 = getelementptr inbounds { ptr, i64 }, ptr %70, i32 0, i32 1
  %482 = load i64, ptr %481, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr %480, i64 %482, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %483 unwind label %495

483:                                              ; preds = %471
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Constraint") align 8 %68, ptr noundef nonnull align 8 dereferenceable(88) %472, ptr noundef nonnull align 8 dereferenceable(24) %69)
          to label %484 unwind label %499

484:                                              ; preds = %483
  %485 = load ptr, ptr %59, align 8, !tbaa !19
  %486 = load i32, ptr %66, align 4, !tbaa !17
  %487 = load i32, ptr %67, align 4, !tbaa !17
  %488 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %485, i32 noundef %486, i32 noundef %487)
          to label %489 unwind label %503

489:                                              ; preds = %484
  %490 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %488, ptr noundef nonnull align 8 dereferenceable(542) %68)
          to label %491 unwind label %503

491:                                              ; preds = %489
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %68) #9
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %71) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 544, ptr %68) #9
  br label %492

492:                                              ; preds = %491
  %493 = load i32, ptr %67, align 4, !tbaa !17
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %67, align 4, !tbaa !17
  br label %466, !llvm.loop !26

495:                                              ; preds = %471
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %9, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %10, align 4
  br label %508

499:                                              ; preds = %483
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %9, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %10, align 4
  br label %507

503:                                              ; preds = %489, %484
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %9, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %10, align 4
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %68) #9
  br label %507

507:                                              ; preds = %503, %499
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #9
  br label %508

508:                                              ; preds = %507, %495
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %72) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %71) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 544, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  br label %954

509:                                              ; preds = %470
  br label %510

510:                                              ; preds = %509
  %511 = load i32, ptr %66, align 4, !tbaa !17
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr %66, align 4, !tbaa !17
  br label %442, !llvm.loop !27

513:                                              ; preds = %446
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef @.str.81, ptr noundef nonnull align 1 dereferenceable(1) %75)
          to label %514 unwind label %532

514:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 24, ptr %76) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #9
  %515 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %515, ptr %78, align 4, !tbaa !17
  %516 = getelementptr inbounds i32, ptr %78, i64 1
  %517 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %517, ptr %516, align 4, !tbaa !17
  %518 = getelementptr inbounds %"class.std::initializer_list.475", ptr %77, i32 0, i32 0
  store ptr %78, ptr %518, align 8, !tbaa !9
  %519 = getelementptr inbounds %"class.std::initializer_list.475", ptr %77, i32 0, i32 1
  store i64 2, ptr %519, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #9
  %520 = getelementptr inbounds { ptr, i64 }, ptr %77, i32 0, i32 0
  %521 = load ptr, ptr %520, align 8
  %522 = getelementptr inbounds { ptr, i64 }, ptr %77, i32 0, i32 1
  %523 = load i64, ptr %522, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %76, ptr %521, i64 %523, ptr noundef nonnull align 1 dereferenceable(1) %79)
          to label %524 unwind label %536

524:                                              ; preds = %514
  %525 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584) %38, ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(24) %76)
          to label %526 unwind label %540

526:                                              ; preds = %524
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %76) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #9
  store ptr %525, ptr %73, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #9
  store i32 0, ptr %80, align 4, !tbaa !17
  br label %527

527:                                              ; preds = %591, %526
  %528 = load i32, ptr %80, align 4, !tbaa !17
  %529 = load i32, ptr %37, align 4, !tbaa !17
  %530 = icmp slt i32 %528, %529
  br i1 %530, label %546, label %531

531:                                              ; preds = %527
  store i32 23, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #9
  br label %594

532:                                              ; preds = %513
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %9, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %10, align 4
  br label %545

536:                                              ; preds = %514
  %537 = landingpad { ptr, i32 }
          cleanup
  %538 = extractvalue { ptr, i32 } %537, 0
  store ptr %538, ptr %9, align 8
  %539 = extractvalue { ptr, i32 } %537, 1
  store i32 %539, ptr %10, align 4
  br label %544

540:                                              ; preds = %524
  %541 = landingpad { ptr, i32 }
          cleanup
  %542 = extractvalue { ptr, i32 } %541, 0
  store ptr %542, ptr %9, align 8
  %543 = extractvalue { ptr, i32 } %541, 1
  store i32 %543, ptr %10, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  br label %544

544:                                              ; preds = %540, %536
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %79) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %76) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  br label %545

545:                                              ; preds = %544, %532
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %75) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #9
  br label %953

546:                                              ; preds = %527
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #9
  store i32 0, ptr %81, align 4, !tbaa !17
  br label %547

547:                                              ; preds = %573, %546
  %548 = load i32, ptr %81, align 4, !tbaa !17
  %549 = load i32, ptr %37, align 4, !tbaa !17
  %550 = icmp slt i32 %548, %549
  br i1 %550, label %552, label %551

551:                                              ; preds = %547
  store i32 26, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #9
  br label %590

552:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 544, ptr %82) #9
  %553 = load ptr, ptr %39, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 24, ptr %83) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %85) #9
  store i32 -1, ptr %85, align 4, !tbaa !17
  %554 = getelementptr inbounds i32, ptr %85, i64 1
  %555 = load i32, ptr %80, align 4, !tbaa !17
  store i32 %555, ptr %554, align 4, !tbaa !17
  %556 = getelementptr inbounds i32, ptr %85, i64 2
  %557 = load i32, ptr %81, align 4, !tbaa !17
  store i32 %557, ptr %556, align 4, !tbaa !17
  %558 = getelementptr inbounds %"class.std::initializer_list.475", ptr %84, i32 0, i32 0
  store ptr %85, ptr %558, align 8, !tbaa !9
  %559 = getelementptr inbounds %"class.std::initializer_list.475", ptr %84, i32 0, i32 1
  store i64 3, ptr %559, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #9
  %560 = getelementptr inbounds { ptr, i64 }, ptr %84, i32 0, i32 0
  %561 = load ptr, ptr %560, align 8
  %562 = getelementptr inbounds { ptr, i64 }, ptr %84, i32 0, i32 1
  %563 = load i64, ptr %562, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr %561, i64 %563, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %564 unwind label %576

564:                                              ; preds = %552
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Constraint") align 8 %82, ptr noundef nonnull align 8 dereferenceable(88) %553, ptr noundef nonnull align 8 dereferenceable(24) %83)
          to label %565 unwind label %580

565:                                              ; preds = %564
  %566 = load ptr, ptr %73, align 8, !tbaa !19
  %567 = load i32, ptr %80, align 4, !tbaa !17
  %568 = load i32, ptr %81, align 4, !tbaa !17
  %569 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %566, i32 noundef %567, i32 noundef %568)
          to label %570 unwind label %584

570:                                              ; preds = %565
  %571 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %569, ptr noundef nonnull align 8 dereferenceable(542) %82)
          to label %572 unwind label %584

572:                                              ; preds = %570
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %82) #9
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 544, ptr %82) #9
  br label %573

573:                                              ; preds = %572
  %574 = load i32, ptr %81, align 4, !tbaa !17
  %575 = add nsw i32 %574, 1
  store i32 %575, ptr %81, align 4, !tbaa !17
  br label %547, !llvm.loop !28

576:                                              ; preds = %552
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %9, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %10, align 4
  br label %589

580:                                              ; preds = %564
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %9, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %10, align 4
  br label %588

584:                                              ; preds = %570, %565
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %9, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %10, align 4
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %82) #9
  br label %588

588:                                              ; preds = %584, %580
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #9
  br label %589

589:                                              ; preds = %588, %576
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 544, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #9
  br label %953

590:                                              ; preds = %551
  br label %591

591:                                              ; preds = %590
  %592 = load i32, ptr %80, align 4, !tbaa !17
  %593 = add nsw i32 %592, 1
  store i32 %593, ptr %80, align 4, !tbaa !17
  br label %527, !llvm.loop !29

594:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %88) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef @.str.82, ptr noundef nonnull align 1 dereferenceable(1) %89)
          to label %595 unwind label %613

595:                                              ; preds = %594
  call void @llvm.lifetime.start.p0(i64 24, ptr %90) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #9
  %596 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %596, ptr %92, align 4, !tbaa !17
  %597 = getelementptr inbounds i32, ptr %92, i64 1
  %598 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %598, ptr %597, align 4, !tbaa !17
  %599 = getelementptr inbounds %"class.std::initializer_list.475", ptr %91, i32 0, i32 0
  store ptr %92, ptr %599, align 8, !tbaa !9
  %600 = getelementptr inbounds %"class.std::initializer_list.475", ptr %91, i32 0, i32 1
  store i64 2, ptr %600, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #9
  %601 = getelementptr inbounds { ptr, i64 }, ptr %91, i32 0, i32 0
  %602 = load ptr, ptr %601, align 8
  %603 = getelementptr inbounds { ptr, i64 }, ptr %91, i32 0, i32 1
  %604 = load i64, ptr %603, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr %602, i64 %604, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %605 unwind label %617

605:                                              ; preds = %595
  %606 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584) %38, ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 8 dereferenceable(24) %90)
          to label %607 unwind label %621

607:                                              ; preds = %605
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %90) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #9
  store ptr %606, ptr %87, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #9
  store i32 0, ptr %94, align 4, !tbaa !17
  br label %608

608:                                              ; preds = %672, %607
  %609 = load i32, ptr %94, align 4, !tbaa !17
  %610 = load i32, ptr %37, align 4, !tbaa !17
  %611 = icmp slt i32 %609, %610
  br i1 %611, label %627, label %612

612:                                              ; preds = %608
  store i32 29, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #9
  br label %675

613:                                              ; preds = %594
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %9, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %10, align 4
  br label %626

617:                                              ; preds = %595
  %618 = landingpad { ptr, i32 }
          cleanup
  %619 = extractvalue { ptr, i32 } %618, 0
  store ptr %619, ptr %9, align 8
  %620 = extractvalue { ptr, i32 } %618, 1
  store i32 %620, ptr %10, align 4
  br label %625

621:                                              ; preds = %605
  %622 = landingpad { ptr, i32 }
          cleanup
  %623 = extractvalue { ptr, i32 } %622, 0
  store ptr %623, ptr %9, align 8
  %624 = extractvalue { ptr, i32 } %622, 1
  store i32 %624, ptr %10, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #9
  br label %625

625:                                              ; preds = %621, %617
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %93) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %90) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #9
  br label %626

626:                                              ; preds = %625, %613
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %89) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %88) #9
  br label %952

627:                                              ; preds = %608
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #9
  store i32 0, ptr %95, align 4, !tbaa !17
  br label %628

628:                                              ; preds = %654, %627
  %629 = load i32, ptr %95, align 4, !tbaa !17
  %630 = load i32, ptr %37, align 4, !tbaa !17
  %631 = icmp slt i32 %629, %630
  br i1 %631, label %633, label %632

632:                                              ; preds = %628
  store i32 32, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #9
  br label %671

633:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 544, ptr %96) #9
  %634 = load ptr, ptr %39, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 24, ptr %97) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %99) #9
  %635 = load i32, ptr %94, align 4, !tbaa !17
  store i32 %635, ptr %99, align 4, !tbaa !17
  %636 = getelementptr inbounds i32, ptr %99, i64 1
  store i32 -1, ptr %636, align 4, !tbaa !17
  %637 = getelementptr inbounds i32, ptr %99, i64 2
  %638 = load i32, ptr %95, align 4, !tbaa !17
  store i32 %638, ptr %637, align 4, !tbaa !17
  %639 = getelementptr inbounds %"class.std::initializer_list.475", ptr %98, i32 0, i32 0
  store ptr %99, ptr %639, align 8, !tbaa !9
  %640 = getelementptr inbounds %"class.std::initializer_list.475", ptr %98, i32 0, i32 1
  store i64 3, ptr %640, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  %641 = getelementptr inbounds { ptr, i64 }, ptr %98, i32 0, i32 0
  %642 = load ptr, ptr %641, align 8
  %643 = getelementptr inbounds { ptr, i64 }, ptr %98, i32 0, i32 1
  %644 = load i64, ptr %643, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %97, ptr %642, i64 %644, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %645 unwind label %657

645:                                              ; preds = %633
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Constraint") align 8 %96, ptr noundef nonnull align 8 dereferenceable(88) %634, ptr noundef nonnull align 8 dereferenceable(24) %97)
          to label %646 unwind label %661

646:                                              ; preds = %645
  %647 = load ptr, ptr %87, align 8, !tbaa !19
  %648 = load i32, ptr %94, align 4, !tbaa !17
  %649 = load i32, ptr %95, align 4, !tbaa !17
  %650 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %647, i32 noundef %648, i32 noundef %649)
          to label %651 unwind label %665

651:                                              ; preds = %646
  %652 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %650, ptr noundef nonnull align 8 dereferenceable(542) %96)
          to label %653 unwind label %665

653:                                              ; preds = %651
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %96) #9
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 544, ptr %96) #9
  br label %654

654:                                              ; preds = %653
  %655 = load i32, ptr %95, align 4, !tbaa !17
  %656 = add nsw i32 %655, 1
  store i32 %656, ptr %95, align 4, !tbaa !17
  br label %628, !llvm.loop !30

657:                                              ; preds = %633
  %658 = landingpad { ptr, i32 }
          cleanup
  %659 = extractvalue { ptr, i32 } %658, 0
  store ptr %659, ptr %9, align 8
  %660 = extractvalue { ptr, i32 } %658, 1
  store i32 %660, ptr %10, align 4
  br label %670

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

665:                                              ; preds = %651, %646
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %9, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %10, align 4
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %96) #9
  br label %669

669:                                              ; preds = %665, %661
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #9
  br label %670

670:                                              ; preds = %669, %657
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %100) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 544, ptr %96) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #9
  br label %952

671:                                              ; preds = %632
  br label %672

672:                                              ; preds = %671
  %673 = load i32, ptr %94, align 4, !tbaa !17
  %674 = add nsw i32 %673, 1
  store i32 %674, ptr %94, align 4, !tbaa !17
  br label %608, !llvm.loop !31

675:                                              ; preds = %612
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %102) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %103) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %103)
          to label %676 unwind label %699

676:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 24, ptr %104) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr %106) #9
  %677 = load i32, ptr %37, align 4, !tbaa !17
  %678 = sdiv i32 %677, 3
  store i32 %678, ptr %106, align 4, !tbaa !17
  %679 = getelementptr inbounds i32, ptr %106, i64 1
  %680 = load i32, ptr %37, align 4, !tbaa !17
  %681 = sdiv i32 %680, 3
  store i32 %681, ptr %679, align 4, !tbaa !17
  %682 = getelementptr inbounds i32, ptr %106, i64 2
  %683 = load i32, ptr %37, align 4, !tbaa !17
  store i32 %683, ptr %682, align 4, !tbaa !17
  %684 = getelementptr inbounds %"class.std::initializer_list.475", ptr %105, i32 0, i32 0
  store ptr %106, ptr %684, align 8, !tbaa !9
  %685 = getelementptr inbounds %"class.std::initializer_list.475", ptr %105, i32 0, i32 1
  store i64 3, ptr %685, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #9
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #9
  %686 = getelementptr inbounds { ptr, i64 }, ptr %105, i32 0, i32 0
  %687 = load ptr, ptr %686, align 8
  %688 = getelementptr inbounds { ptr, i64 }, ptr %105, i32 0, i32 1
  %689 = load i64, ptr %688, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %104, ptr %687, i64 %689, ptr noundef nonnull align 1 dereferenceable(1) %107)
          to label %690 unwind label %703

690:                                              ; preds = %676
  %691 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584) %38, ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(24) %104)
          to label %692 unwind label %707

692:                                              ; preds = %690
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #9
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %104) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #9
  store ptr %691, ptr %101, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #9
  store i32 0, ptr %108, align 4, !tbaa !17
  br label %693

693:                                              ; preds = %759, %692
  %694 = load i32, ptr %108, align 4, !tbaa !17
  %695 = load i32, ptr %37, align 4, !tbaa !17
  %696 = sdiv i32 %695, 3
  %697 = icmp slt i32 %694, %696
  br i1 %697, label %713, label %698

698:                                              ; preds = %693
  store i32 35, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #9
  br label %762

699:                                              ; preds = %675
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %9, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %10, align 4
  br label %712

703:                                              ; preds = %676
  %704 = landingpad { ptr, i32 }
          cleanup
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %9, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %10, align 4
  br label %711

707:                                              ; preds = %690
  %708 = landingpad { ptr, i32 }
          cleanup
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %9, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %10, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #9
  br label %711

711:                                              ; preds = %707, %703
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %107) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %104) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  br label %712

712:                                              ; preds = %711, %699
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %103) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %103) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #9
  br label %951

713:                                              ; preds = %693
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #9
  store i32 0, ptr %109, align 4, !tbaa !17
  br label %714

714:                                              ; preds = %755, %713
  %715 = load i32, ptr %109, align 4, !tbaa !17
  %716 = load i32, ptr %37, align 4, !tbaa !17
  %717 = sdiv i32 %716, 3
  %718 = icmp slt i32 %715, %717
  br i1 %718, label %720, label %719

719:                                              ; preds = %714
  store i32 38, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #9
  br label %758

720:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #9
  store i32 0, ptr %110, align 4, !tbaa !17
  br label %721

721:                                              ; preds = %742, %720
  %722 = load i32, ptr %110, align 4, !tbaa !17
  %723 = load i32, ptr %37, align 4, !tbaa !17
  %724 = icmp slt i32 %722, %723
  br i1 %724, label %726, label %725

725:                                              ; preds = %721
  store i32 41, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #9
  br label %754

726:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 544, ptr %111) #9
  %727 = load ptr, ptr %46, align 8, !tbaa !19
  %728 = load i32, ptr %108, align 4, !tbaa !17
  %729 = load i32, ptr %109, align 4, !tbaa !17
  %730 = load i32, ptr %110, align 4, !tbaa !17
  %731 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %727, i32 noundef %728, i32 noundef %729, i32 noundef %730)
          to label %732 unwind label %745

732:                                              ; preds = %726
  invoke void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Constraint") align 8 %111, ptr noundef nonnull align 8 dereferenceable(392) %731, i32 noundef 1)
          to label %733 unwind label %745

733:                                              ; preds = %732
  %734 = load ptr, ptr %101, align 8, !tbaa !19
  %735 = load i32, ptr %108, align 4, !tbaa !17
  %736 = load i32, ptr %109, align 4, !tbaa !17
  %737 = load i32, ptr %110, align 4, !tbaa !17
  %738 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %734, i32 noundef %735, i32 noundef %736, i32 noundef %737)
          to label %739 unwind label %749

739:                                              ; preds = %733
  %740 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %738, ptr noundef nonnull align 8 dereferenceable(542) %111)
          to label %741 unwind label %749

741:                                              ; preds = %739
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %111) #9
  call void @llvm.lifetime.end.p0(i64 544, ptr %111) #9
  br label %742

742:                                              ; preds = %741
  %743 = load i32, ptr %110, align 4, !tbaa !17
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr %110, align 4, !tbaa !17
  br label %721, !llvm.loop !32

745:                                              ; preds = %732, %726
  %746 = landingpad { ptr, i32 }
          cleanup
  %747 = extractvalue { ptr, i32 } %746, 0
  store ptr %747, ptr %9, align 8
  %748 = extractvalue { ptr, i32 } %746, 1
  store i32 %748, ptr %10, align 4
  br label %753

749:                                              ; preds = %739, %733
  %750 = landingpad { ptr, i32 }
          cleanup
  %751 = extractvalue { ptr, i32 } %750, 0
  store ptr %751, ptr %9, align 8
  %752 = extractvalue { ptr, i32 } %750, 1
  store i32 %752, ptr %10, align 4
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %111) #9
  br label %753

753:                                              ; preds = %749, %745
  call void @llvm.lifetime.end.p0(i64 544, ptr %111) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #9
  br label %951

754:                                              ; preds = %725
  br label %755

755:                                              ; preds = %754
  %756 = load i32, ptr %109, align 4, !tbaa !17
  %757 = add nsw i32 %756, 1
  store i32 %757, ptr %109, align 4, !tbaa !17
  br label %714, !llvm.loop !33

758:                                              ; preds = %719
  br label %759

759:                                              ; preds = %758
  %760 = load i32, ptr %108, align 4, !tbaa !17
  %761 = add nsw i32 %760, 1
  store i32 %761, ptr %108, align 4, !tbaa !17
  br label %693, !llvm.loop !34

762:                                              ; preds = %698
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #9
  store i32 0, ptr %112, align 4, !tbaa !17
  br label %763

763:                                              ; preds = %807, %762
  %764 = load i32, ptr %112, align 4, !tbaa !17
  %765 = load i32, ptr %37, align 4, !tbaa !17
  %766 = icmp slt i32 %764, %765
  br i1 %766, label %768, label %767

767:                                              ; preds = %763
  store i32 44, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #9
  br label %810

768:                                              ; preds = %763
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #9
  store i32 0, ptr %113, align 4, !tbaa !17
  br label %769

769:                                              ; preds = %803, %768
  %770 = load i32, ptr %113, align 4, !tbaa !17
  %771 = load i32, ptr %37, align 4, !tbaa !17
  %772 = icmp slt i32 %770, %771
  br i1 %772, label %774, label %773

773:                                              ; preds = %769
  store i32 47, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #9
  br label %806

774:                                              ; preds = %769
  %775 = load i32, ptr %112, align 4, !tbaa !17
  %776 = sext i32 %775 to i64
  %777 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %776) #9
  %778 = load i32, ptr %113, align 4, !tbaa !17
  %779 = sext i32 %778 to i64
  %780 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %777, i64 noundef %779) #9
  %781 = load i32, ptr %780, align 4, !tbaa !17
  %782 = icmp sgt i32 %781, 0
  br i1 %782, label %783, label %802

783:                                              ; preds = %774
  %784 = load ptr, ptr %39, align 8, !tbaa !19
  %785 = load i32, ptr %112, align 4, !tbaa !17
  %786 = load i32, ptr %113, align 4, !tbaa !17
  %787 = load i32, ptr %112, align 4, !tbaa !17
  %788 = sext i32 %787 to i64
  %789 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %788) #9
  %790 = load i32, ptr %113, align 4, !tbaa !17
  %791 = sext i32 %790 to i64
  %792 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %789, i64 noundef %791) #9
  %793 = load i32, ptr %792, align 4, !tbaa !17
  %794 = sub nsw i32 %793, 1
  %795 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %784, i32 noundef %785, i32 noundef %786, i32 noundef %794)
          to label %796 unwind label %798

796:                                              ; preds = %783
  invoke void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62) %795, i32 noundef 1)
          to label %797 unwind label %798

797:                                              ; preds = %796
  br label %802

798:                                              ; preds = %796, %783
  %799 = landingpad { ptr, i32 }
          cleanup
  %800 = extractvalue { ptr, i32 } %799, 0
  store ptr %800, ptr %9, align 8
  %801 = extractvalue { ptr, i32 } %799, 1
  store i32 %801, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #9
  br label %951

802:                                              ; preds = %797, %774
  br label %803

803:                                              ; preds = %802
  %804 = load i32, ptr %113, align 4, !tbaa !17
  %805 = add nsw i32 %804, 1
  store i32 %805, ptr %113, align 4, !tbaa !17
  br label %769, !llvm.loop !35

806:                                              ; preds = %773
  br label %807

807:                                              ; preds = %806
  %808 = load i32, ptr %112, align 4, !tbaa !17
  %809 = add nsw i32 %808, 1
  store i32 %809, ptr %112, align 4, !tbaa !17
  br label %763, !llvm.loop !36

810:                                              ; preds = %767
  call void @llvm.lifetime.start.p0(i64 576, ptr %114) #9
  invoke void @_ZN9printemps6option6OptionC2Ev(ptr noundef nonnull align 8 dereferenceable(576) %114)
          to label %811 unwind label %827

811:                                              ; preds = %810
  %812 = getelementptr inbounds %"struct.printemps::option::Option", ptr %114, i32 0, i32 7
  %813 = getelementptr inbounds %"struct.printemps::option::OutputOption", ptr %812, i32 0, i32 0
  store i32 4, ptr %813, align 8, !tbaa !37
  %814 = getelementptr inbounds %"struct.printemps::option::Option", ptr %114, i32 0, i32 12
  %815 = getelementptr inbounds %"struct.printemps::option::TabuSearchOption", ptr %814, i32 0, i32 5
  store i32 5, ptr %815, align 4, !tbaa !58
  %816 = getelementptr inbounds %"struct.printemps::option::Option", ptr %114, i32 0, i32 0
  %817 = getelementptr inbounds %"struct.printemps::option::GeneralOption", ptr %816, i32 0, i32 0
  store i32 1000, ptr %817, align 8, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 1336, ptr %115) #9
  invoke void @_ZN9printemps6solver5solveIidEENS0_6ResultIT_T0_EEPNS_5model5ModelIS3_S4_EERKNS_6option6OptionE(ptr dead_on_unwind writable sret(%"struct.printemps::solver::Result") align 8 %115, ptr noundef %38, ptr noundef nonnull align 8 dereferenceable(576) %114)
          to label %818 unwind label %831

818:                                              ; preds = %811
  call void @llvm.lifetime.start.p0(i64 24, ptr %116) #9
  %819 = load i32, ptr %37, align 4, !tbaa !17
  %820 = sext i32 %819 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %117) #9
  call void @_ZNSaISt6vectorIiSaIiEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #9
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %116, i64 noundef %820, ptr noundef nonnull align 1 dereferenceable(1) %117)
          to label %821 unwind label %835

821:                                              ; preds = %818
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %117) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #9
  store i32 0, ptr %118, align 4, !tbaa !17
  br label %822

822:                                              ; preds = %899, %821
  %823 = load i32, ptr %118, align 4, !tbaa !17
  %824 = load i32, ptr %37, align 4, !tbaa !17
  %825 = icmp slt i32 %823, %824
  br i1 %825, label %839, label %826

826:                                              ; preds = %822
  store i32 50, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #9
  br label %903

827:                                              ; preds = %810
  %828 = landingpad { ptr, i32 }
          cleanup
  %829 = extractvalue { ptr, i32 } %828, 0
  store ptr %829, ptr %9, align 8
  %830 = extractvalue { ptr, i32 } %828, 1
  store i32 %830, ptr %10, align 4
  br label %950

831:                                              ; preds = %811
  %832 = landingpad { ptr, i32 }
          cleanup
  %833 = extractvalue { ptr, i32 } %832, 0
  store ptr %833, ptr %9, align 8
  %834 = extractvalue { ptr, i32 } %832, 1
  store i32 %834, ptr %10, align 4
  br label %949

835:                                              ; preds = %818
  %836 = landingpad { ptr, i32 }
          cleanup
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %9, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %10, align 4
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %117) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %117) #9
  br label %948

839:                                              ; preds = %822
  %840 = load i32, ptr %118, align 4, !tbaa !17
  %841 = sext i32 %840 to i64
  %842 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %116, i64 noundef %841) #9
  %843 = load i32, ptr %37, align 4, !tbaa !17
  %844 = sext i32 %843 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %842, i64 noundef %844)
          to label %845 unwind label %851

845:                                              ; preds = %839
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #9
  store i32 0, ptr %119, align 4, !tbaa !17
  br label %846

846:                                              ; preds = %895, %845
  %847 = load i32, ptr %119, align 4, !tbaa !17
  %848 = load i32, ptr %37, align 4, !tbaa !17
  %849 = icmp slt i32 %847, %848
  br i1 %849, label %855, label %850

850:                                              ; preds = %846
  store i32 53, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #9
  br label %898

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

855:                                              ; preds = %846
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #9
  store i32 0, ptr %120, align 4, !tbaa !17
  br label %856

856:                                              ; preds = %882, %855
  %857 = load i32, ptr %120, align 4, !tbaa !17
  %858 = load i32, ptr %37, align 4, !tbaa !17
  %859 = icmp slt i32 %857, %858
  br i1 %859, label %861, label %860

860:                                              ; preds = %856
  store i32 56, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #9
  br label %894

861:                                              ; preds = %856
  %862 = load i32, ptr %120, align 4, !tbaa !17
  %863 = add nsw i32 %862, 1
  %864 = getelementptr inbounds %"struct.printemps::solver::Result", ptr %115, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %121) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %122) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %122)
          to label %865 unwind label %885

865:                                              ; preds = %861
  %866 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289) %864, ptr noundef nonnull align 8 dereferenceable(32) %121)
          to label %867 unwind label %889

867:                                              ; preds = %865
  %868 = load i32, ptr %118, align 4, !tbaa !17
  %869 = load i32, ptr %119, align 4, !tbaa !17
  %870 = load i32, ptr %120, align 4, !tbaa !17
  %871 = invoke noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112) %866, i32 noundef %868, i32 noundef %869, i32 noundef %870)
          to label %872 unwind label %889

872:                                              ; preds = %867
  %873 = mul nsw i32 %863, %871
  %874 = load i32, ptr %118, align 4, !tbaa !17
  %875 = sext i32 %874 to i64
  %876 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %116, i64 noundef %875) #9
  %877 = load i32, ptr %119, align 4, !tbaa !17
  %878 = sext i32 %877 to i64
  %879 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %876, i64 noundef %878) #9
  %880 = load i32, ptr %879, align 4, !tbaa !17
  %881 = add nsw i32 %880, %873
  store i32 %881, ptr %879, align 4, !tbaa !17
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #9
  br label %882

882:                                              ; preds = %872
  %883 = load i32, ptr %120, align 4, !tbaa !17
  %884 = add nsw i32 %883, 1
  store i32 %884, ptr %120, align 4, !tbaa !17
  br label %856, !llvm.loop !60

885:                                              ; preds = %861
  %886 = landingpad { ptr, i32 }
          cleanup
  %887 = extractvalue { ptr, i32 } %886, 0
  store ptr %887, ptr %9, align 8
  %888 = extractvalue { ptr, i32 } %886, 1
  store i32 %888, ptr %10, align 4
  br label %893

889:                                              ; preds = %867, %865
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %9, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  br label %893

893:                                              ; preds = %889, %885
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %122) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %122) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %121) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #9
  br label %902

894:                                              ; preds = %860
  br label %895

895:                                              ; preds = %894
  %896 = load i32, ptr %119, align 4, !tbaa !17
  %897 = add nsw i32 %896, 1
  store i32 %897, ptr %119, align 4, !tbaa !17
  br label %846, !llvm.loop !61

898:                                              ; preds = %850
  br label %899

899:                                              ; preds = %898
  %900 = load i32, ptr %118, align 4, !tbaa !17
  %901 = add nsw i32 %900, 1
  store i32 %901, ptr %118, align 4, !tbaa !17
  br label %822, !llvm.loop !62

902:                                              ; preds = %893, %851
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #9
  br label %947

903:                                              ; preds = %826
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #9
  store i32 0, ptr %123, align 4, !tbaa !17
  br label %904

904:                                              ; preds = %937, %903
  %905 = load i32, ptr %123, align 4, !tbaa !17
  %906 = load i32, ptr %37, align 4, !tbaa !17
  %907 = icmp slt i32 %905, %906
  br i1 %907, label %909, label %908

908:                                              ; preds = %904
  store i32 59, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #9
  br label %945

909:                                              ; preds = %904
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #9
  store i32 0, ptr %124, align 4, !tbaa !17
  br label %910

910:                                              ; preds = %927, %909
  %911 = load i32, ptr %124, align 4, !tbaa !17
  %912 = load i32, ptr %37, align 4, !tbaa !17
  %913 = icmp slt i32 %911, %912
  br i1 %913, label %915, label %914

914:                                              ; preds = %910
  store i32 62, ptr %54, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #9
  br label %934

915:                                              ; preds = %910
  %916 = load i32, ptr %123, align 4, !tbaa !17
  %917 = sext i32 %916 to i64
  %918 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %116, i64 noundef %917) #9
  %919 = load i32, ptr %124, align 4, !tbaa !17
  %920 = sext i32 %919 to i64
  %921 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %918, i64 noundef %920) #9
  %922 = load i32, ptr %921, align 4, !tbaa !17
  %923 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %922)
          to label %924 unwind label %930

924:                                              ; preds = %915
  %925 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %923, ptr noundef @.str.84)
          to label %926 unwind label %930

926:                                              ; preds = %924
  br label %927

927:                                              ; preds = %926
  %928 = load i32, ptr %124, align 4, !tbaa !17
  %929 = add nsw i32 %928, 1
  store i32 %929, ptr %124, align 4, !tbaa !17
  br label %910, !llvm.loop !63

930:                                              ; preds = %924, %915
  %931 = landingpad { ptr, i32 }
          cleanup
  %932 = extractvalue { ptr, i32 } %931, 0
  store ptr %932, ptr %9, align 8
  %933 = extractvalue { ptr, i32 } %931, 1
  store i32 %933, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #9
  br label %944

934:                                              ; preds = %914
  %935 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %936 unwind label %940

936:                                              ; preds = %934
  br label %937

937:                                              ; preds = %936
  %938 = load i32, ptr %123, align 4, !tbaa !17
  %939 = add nsw i32 %938, 1
  store i32 %939, ptr %123, align 4, !tbaa !17
  br label %904, !llvm.loop !64

940:                                              ; preds = %934
  %941 = landingpad { ptr, i32 }
          cleanup
  %942 = extractvalue { ptr, i32 } %941, 0
  store ptr %942, ptr %9, align 8
  %943 = extractvalue { ptr, i32 } %941, 1
  store i32 %943, ptr %10, align 4
  br label %944

944:                                              ; preds = %940, %930
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #9
  br label %947

945:                                              ; preds = %908
  store i32 0, ptr %1, align 4
  store i32 1, ptr %54, align 4
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %116) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %116) #9
  call void @_ZN9printemps6solver6ResultIidED2Ev(ptr noundef nonnull align 8 dereferenceable(1336) %115) #9
  call void @llvm.lifetime.end.p0(i64 1336, ptr %115) #9
  call void @llvm.lifetime.end.p0(i64 576, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @_ZN9printemps5model5ModelIidED2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %38) #9
  call void @llvm.lifetime.end.p0(i64 4584, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %2) #9
  %946 = load i32, ptr %1, align 4
  ret i32 %946

947:                                              ; preds = %944, %902
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %116) #9
  br label %948

948:                                              ; preds = %947, %835
  call void @llvm.lifetime.end.p0(i64 24, ptr %116) #9
  call void @_ZN9printemps6solver6ResultIidED2Ev(ptr noundef nonnull align 8 dereferenceable(1336) %115) #9
  br label %949

949:                                              ; preds = %948, %831
  call void @llvm.lifetime.end.p0(i64 1336, ptr %115) #9
  br label %950

950:                                              ; preds = %949, %827
  call void @llvm.lifetime.end.p0(i64 576, ptr %114) #9
  br label %951

951:                                              ; preds = %950, %798, %753, %712
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  br label %952

952:                                              ; preds = %951, %670, %626
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  br label %953

953:                                              ; preds = %952, %589, %545
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  br label %954

954:                                              ; preds = %953, %508, %464
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  br label %955

955:                                              ; preds = %954, %447, %406, %346
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %956

956:                                              ; preds = %955, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @_ZN9printemps5model5ModelIidED2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %38) #9
  br label %957

957:                                              ; preds = %956, %315
  call void @llvm.lifetime.end.p0(i64 4584, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  br label %958

958:                                              ; preds = %957, %314
  call void @llvm.lifetime.end.p0(i64 24, ptr %2) #9
  br label %959

959:                                              ; preds = %958
  %960 = load ptr, ptr %9, align 8
  %961 = load i32, ptr %10, align 4
  %962 = insertvalue { ptr, i32 } poison, ptr %960, 0
  %963 = insertvalue { ptr, i32 } %962, i32 %961, 1
  resume { ptr, i32 } %963
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

; 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) #5

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE16create_variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEEii(ptr noundef nonnull align 8 dereferenceable(4584), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_expressionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, i32 noundef, i32 noundef) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, i32 noundef, i32 noundef) #6 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9printemps15model_component15ExpressionProxyIidE7disableEv(ptr noundef nonnull align 8 dereferenceable(88)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind noalias writable sret(%"class.printemps::model_component::Constraint") align 8, ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, i32 noundef) #6 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind noalias writable sret(%"class.printemps::model_component::Constraint") align 8, ptr noundef nonnull align 8 dereferenceable(392), i32 noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, i32 noundef, i32 noundef) #6 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62), i32 noundef) #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9printemps6solver5solveIidEENS0_6ResultIT_T0_EEPNS_5model5ModelIS3_S4_EERKNS_6option6OptionE(ptr dead_on_unwind noalias writable sret(%"struct.printemps::solver::Result") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(576)) #6

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289), ptr noundef nonnull align 8 dereferenceable(32)) #6 align 2

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { 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 #7 = { 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 #8 = { "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 = { 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 = !{i64 0, i64 36, !6}
!6 = !{!7, !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTSSt16initializer_listIiE", !11, i64 0, !12, i64 8}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!10, !12, i64 8}
!14 = !{!15, !11, i64 0}
!15 = !{!"_ZTSSt16initializer_listISt6vectorIiSaIiEEE", !11, i64 0, !12, i64 8}
!16 = !{!15, !12, i64 8}
!17 = !{!18, !18, i64 0}
!18 = !{!"int", !7, i64 0}
!19 = !{!11, !11, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = distinct !{!22, !21}
!23 = distinct !{!23, !21}
!24 = distinct !{!24, !21}
!25 = distinct !{!25, !21}
!26 = distinct !{!26, !21}
!27 = distinct !{!27, !21}
!28 = distinct !{!28, !21}
!29 = distinct !{!29, !21}
!30 = distinct !{!30, !21}
!31 = distinct !{!31, !21}
!32 = distinct !{!32, !21}
!33 = distinct !{!33, !21}
!34 = distinct !{!34, !21}
!35 = distinct !{!35, !21}
!36 = distinct !{!36, !21}
!37 = !{!38, !52, i64 224}
!38 = !{!"_ZTSN9printemps6option6OptionE", !39, i64 0, !42, i64 40, !43, i64 120, !44, i64 144, !45, i64 160, !47, i64 168, !51, i64 224, !53, i64 248, !54, i64 344, !55, i64 400, !56, i64 432}
!39 = !{!"_ZTSN9printemps6option13GeneralOptionE", !18, i64 0, !40, i64 8, !40, i64 16, !40, i64 24, !18, i64 32, !41, i64 36}
!40 = !{!"double", !7, i64 0}
!41 = !{!"bool", !7, i64 0}
!42 = !{!"_ZTSN9printemps6option13PenaltyOptionE", !40, i64 0, !40, i64 8, !40, i64 16, !40, i64 24, !40, i64 32, !40, i64 40, !40, i64 48, !40, i64 56, !18, i64 64, !18, i64 68, !41, i64 72, !41, i64 73, !41, i64 74, !41, i64 75}
!43 = !{!"_ZTSN9printemps6option14ParallelOptionE", !41, i64 0, !41, i64 1, !18, i64 4, !18, i64 8, !41, i64 12, !40, i64 16}
!44 = !{!"_ZTSN9printemps6option16PreprocessOptionE", !41, i64 0, !41, i64 1, !41, i64 2, !41, i64 3, !41, i64 4, !41, i64 5, !41, i64 6, !41, i64 7, !41, i64 8, !41, i64 9, !41, i64 10, !41, i64 11, !41, i64 12, !41, i64 13, !41, i64 14}
!45 = !{!"_ZTSN9printemps6option13RestartOptionE", !46, i64 0}
!46 = !{!"_ZTSN9printemps6option12restart_mode11RestartModeE", !7, i64 0}
!47 = !{!"_ZTSN9printemps6option18NeighborhoodOptionE", !41, i64 0, !41, i64 1, !41, i64 2, !41, i64 3, !41, i64 4, !41, i64 5, !41, i64 6, !41, i64 7, !41, i64 8, !41, i64 9, !41, i64 10, !41, i64 11, !41, i64 12, !41, i64 13, !41, i64 14, !41, i64 15, !41, i64 16, !18, i64 20, !48, i64 24, !40, i64 32, !49, i64 40, !50, i64 44, !41, i64 48}
!48 = !{!"_ZTSN9printemps6option22chain_move_reduce_mode19ChainMoveReduceModeE", !7, i64 0}
!49 = !{!"_ZTSN9printemps6option14selection_mode13SelectionModeE", !7, i64 0}
!50 = !{!"_ZTSN9printemps6option28improvability_screening_mode26ImprovabilityScreeningModeE", !7, i64 0}
!51 = !{!"_ZTSN9printemps6option12OutputOptionE", !52, i64 0, !41, i64 4, !41, i64 5, !18, i64 8, !41, i64 12, !41, i64 13, !41, i64 14, !41, i64 15, !41, i64 16, !41, i64 17, !41, i64 18}
!52 = !{!"_ZTSN9printemps6option7verbose7VerboseE", !7, i64 0}
!53 = !{!"_ZTSN9printemps6option10PDLPOptionE", !41, i64 0, !18, i64 4, !40, i64 8, !40, i64 16, !40, i64 24, !40, i64 32, !40, i64 40, !40, i64 48, !40, i64 56, !40, i64 64, !18, i64 72, !18, i64 76, !18, i64 80, !41, i64 84, !18, i64 88}
!54 = !{!"_ZTSN9printemps6option18LagrangeDualOptionE", !41, i64 0, !18, i64 4, !40, i64 8, !40, i64 16, !40, i64 24, !40, i64 32, !40, i64 40, !18, i64 48, !18, i64 52}
!55 = !{!"_ZTSN9printemps6option17LocalSearchOptionE", !41, i64 0, !18, i64 4, !40, i64 8, !40, i64 16, !18, i64 24, !18, i64 28}
!56 = !{!"_ZTSN9printemps6option16TabuSearchOptionE", !18, i64 0, !40, i64 8, !40, i64 16, !18, i64 24, !18, i64 28, !40, i64 32, !40, i64 40, !40, i64 48, !57, i64 56, !40, i64 64, !40, i64 72, !40, i64 80, !40, i64 88, !41, i64 96, !41, i64 97, !41, i64 98, !41, i64 99, !41, i64 100, !41, i64 101, !18, i64 104, !18, i64 108, !40, i64 112, !40, i64 120, !41, i64 128, !18, i64 132, !18, i64 136}
!57 = !{!"_ZTSN9printemps6option9tabu_mode8TabuModeE", !7, i64 0}
!58 = !{!38, !18, i64 460}
!59 = !{!38, !18, i64 0}
!60 = distinct !{!60, !21}
!61 = distinct !{!61, !21}
!62 = distinct !{!62, !21}
!63 = distinct !{!63, !21}
!64 = distinct !{!64, !21}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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 }
%"class.std::locale" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<int>, std::allocator<std::vector<int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.470" = type { %"struct.std::_Vector_base.471" }
%"struct.std::_Vector_base.471" = 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 }
%"class.std::allocator.472" = type { i8 }
%"class.std::allocator.466" = type { i8 }
%"class.printemps::model::Model" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.476", %"class.std::vector.481", %"class.std::vector.486", %"class.printemps::model_component::Objective", %"class.std::unordered_map.516", %"class.std::vector.530", %"class.std::vector.530", %"class.std::vector.530", i8, i8, i8, i8, i8, i8, double, %"class.std::vector.535", %"struct.printemps::model_component::VariableReference", %"struct.printemps::model_component::VariableTypeReference", %"struct.printemps::model_component::ConstraintReference", %"struct.printemps::model_component::ConstraintTypeReference", %"struct.printemps::model_component::VariableReference", %"struct.printemps::model_component::VariableTypeReference", %"struct.printemps::model_component::ConstraintReference", %"struct.printemps::model_component::ConstraintTypeReference", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.545", %"class.printemps::neighborhood::Neighborhood", %"class.printemps::preprocess::ProblemSizeReducer", %"class.std::function.572" }
%"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::vector.476" = type { %"struct.std::_Vector_base.477" }
%"struct.std::_Vector_base.477" = type { %"struct.std::_Vector_base<printemps::model_component::VariableProxy<int, double>, std::allocator<printemps::model_component::VariableProxy<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::VariableProxy<int, double>, std::allocator<printemps::model_component::VariableProxy<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::VariableProxy<int, double>, std::allocator<printemps::model_component::VariableProxy<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::VariableProxy<int, double>, std::allocator<printemps::model_component::VariableProxy<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.481" = type { %"struct.std::_Vector_base.482" }
%"struct.std::_Vector_base.482" = type { %"struct.std::_Vector_base<printemps::model_component::ExpressionProxy<int, double>, std::allocator<printemps::model_component::ExpressionProxy<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::ExpressionProxy<int, double>, std::allocator<printemps::model_component::ExpressionProxy<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::ExpressionProxy<int, double>, std::allocator<printemps::model_component::ExpressionProxy<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::ExpressionProxy<int, double>, std::allocator<printemps::model_component::ExpressionProxy<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.486" = type { %"struct.std::_Vector_base.487" }
%"struct.std::_Vector_base.487" = type { %"struct.std::_Vector_base<printemps::model_component::ConstraintProxy<int, double>, std::allocator<printemps::model_component::ConstraintProxy<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::ConstraintProxy<int, double>, std::allocator<printemps::model_component::ConstraintProxy<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::ConstraintProxy<int, double>, std::allocator<printemps::model_component::ConstraintProxy<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::ConstraintProxy<int, double>, std::allocator<printemps::model_component::ConstraintProxy<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.printemps::model_component::Objective" = type { %"class.printemps::model_component::Expression", double }
%"class.printemps::model_component::Expression" = type { %"class.printemps::multi_array::AbstractMultiArrayElement", double, double, i8, %"class.std::unordered_map.491", %"class.std::unordered_map.491", %"class.std::unordered_map.491", %"class.std::unordered_map.491", %"class.std::vector.511", %"class.std::vector.511", %"class.printemps::utility::FixedSizeHashMap", i64, i64 }
%"class.printemps::multi_array::AbstractMultiArrayElement" = type { %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.std::unordered_map.491" = type { %"class.std::_Hashtable.492" }
%"class.std::_Hashtable.492" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.511" = type { %"struct.std::_Vector_base.512" }
%"struct.std::_Vector_base.512" = type { %"struct.std::_Vector_base<printemps::model_component::Variable<int, double> *, std::allocator<printemps::model_component::Variable<int, double> *>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::Variable<int, double> *, std::allocator<printemps::model_component::Variable<int, double> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::Variable<int, double> *, std::allocator<printemps::model_component::Variable<int, double> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::Variable<int, double> *, std::allocator<printemps::model_component::Variable<int, double> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.printemps::utility::FixedSizeHashMap" = type { ptr, i8, i64, i64, i8, ptr, ptr, ptr }
%"class.std::unordered_map.516" = type { %"class.std::_Hashtable.517" }
%"class.std::_Hashtable.517" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.530" = type { %"struct.std::_Vector_base.531" }
%"struct.std::_Vector_base.531" = 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::vector.535" = type { %"struct.std::_Vector_base.536" }
%"struct.std::_Vector_base.536" = type { %"struct.std::_Vector_base<printemps::model_component::Selection<int, double>, std::allocator<printemps::model_component::Selection<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::Selection<int, double>, std::allocator<printemps::model_component::Selection<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::Selection<int, double>, std::allocator<printemps::model_component::Selection<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::Selection<int, double>, std::allocator<printemps::model_component::Selection<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.printemps::model_component::VariableReference" = type { %"class.std::vector.511", %"class.std::vector.511", %"class.std::vector.511" }
%"struct.printemps::model_component::VariableTypeReference" = type { %"class.std::vector.511", %"class.std::vector.511", %"class.std::vector.511", %"class.std::vector.511", %"class.std::vector.511" }
%"struct.printemps::model_component::ConstraintReference" = type { %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540" }
%"struct.printemps::model_component::ConstraintTypeReference" = type { %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540", %"class.std::vector.540" }
%"class.std::vector.540" = type { %"struct.std::_Vector_base.541" }
%"struct.std::_Vector_base.541" = type { %"struct.std::_Vector_base<printemps::model_component::Constraint<int, double> *, std::allocator<printemps::model_component::Constraint<int, double> *>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::model_component::Constraint<int, double> *, std::allocator<printemps::model_component::Constraint<int, double> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::model_component::Constraint<int, double> *, std::allocator<printemps::model_component::Constraint<int, double> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::model_component::Constraint<int, double> *, std::allocator<printemps::model_component::Constraint<int, double> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.545" = type { %"struct.std::_Vector_base.546" }
%"struct.std::_Vector_base.546" = type { %"struct.std::_Vector_base<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>, std::allocator<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>, std::allocator<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>, std::allocator<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>, std::allocator<std::pair<printemps::model_component::Variable<int, double> *, printemps::model_component::Variable<int, double> *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.printemps::neighborhood::Neighborhood" = type { %"class.printemps::neighborhood::BinaryMoveGenerator", %"class.printemps::neighborhood::IntegerMoveGenerator", %"class.printemps::neighborhood::SelectionMoveGenerator", %"class.printemps::neighborhood::ExclusiveOrMoveGenerator", %"class.printemps::neighborhood::ExclusiveNorMoveGenerator", %"class.printemps::neighborhood::InvertedIntegersMoveGenerator", %"class.printemps::neighborhood::BalancedIntegersMoveGenerator", %"class.printemps::neighborhood::ConstantSumIntegersMoveGenerator", %"class.printemps::neighborhood::ConstantDifferenceIntegersMoveGenerator", %"class.printemps::neighborhood::ConstantRatioIntegersMoveGenerator", %"class.printemps::neighborhood::AggregationMoveGenerator", %"class.printemps::neighborhood::PrecedenceMoveGenerator", %"class.printemps::neighborhood::VariableBoundMoveGenerator", %"class.printemps::neighborhood::SoftSelectionMoveGenerator", %"class.printemps::neighborhood::TrinomialExclusiveNorMoveGenerator", %"class.printemps::neighborhood::ChainMoveGenerator", %"class.printemps::neighborhood::TwoFlipMoveGenerator", %"class.printemps::neighborhood::UserDefinedMoveGenerator", %"class.std::vector.562", %"class.std::vector.567", i64 }
%"class.printemps::neighborhood::BinaryMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::AbstractMoveGenerator.base" = type <{ %"class.std::function", %"class.std::vector.550", %"class.std::vector.555", i8 }>
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector.550" = type { %"struct.std::_Vector_base.551" }
%"struct.std::_Vector_base.551" = type { %"struct.std::_Vector_base<printemps::neighborhood::Move<int, double>, std::allocator<printemps::neighborhood::Move<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::neighborhood::Move<int, double>, std::allocator<printemps::neighborhood::Move<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::neighborhood::Move<int, double>, std::allocator<printemps::neighborhood::Move<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::neighborhood::Move<int, double>, std::allocator<printemps::neighborhood::Move<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.555" = type { %"struct.std::_Vector_base.556" }
%"struct.std::_Vector_base.556" = type { %"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl" }
%"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl" = type { %"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl_data" }
%"struct.std::_Vector_base<short, std::allocator<short>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.printemps::neighborhood::IntegerMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::SelectionMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ExclusiveOrMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ExclusiveNorMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::InvertedIntegersMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::BalancedIntegersMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ConstantSumIntegersMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ConstantDifferenceIntegersMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ConstantRatioIntegersMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::AggregationMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::PrecedenceMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::VariableBoundMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::SoftSelectionMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::TrinomialExclusiveNorMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::ChainMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::TwoFlipMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", [7 x i8] }
%"class.printemps::neighborhood::UserDefinedMoveGenerator" = type { %"class.printemps::neighborhood::AbstractMoveGenerator.base", %"class.std::function.560" }
%"class.std::function.560" = type { %"class.std::_Function_base", ptr }
%"class.std::vector.562" = type { %"struct.std::_Vector_base.563" }
%"struct.std::_Vector_base.563" = type { %"struct.std::_Vector_base<printemps::neighborhood::AbstractMoveGenerator<int, double> *, std::allocator<printemps::neighborhood::AbstractMoveGenerator<int, double> *>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::neighborhood::AbstractMoveGenerator<int, double> *, std::allocator<printemps::neighborhood::AbstractMoveGenerator<int, double> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::neighborhood::AbstractMoveGenerator<int, double> *, std::allocator<printemps::neighborhood::AbstractMoveGenerator<int, double> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::neighborhood::AbstractMoveGenerator<int, double> *, std::allocator<printemps::neighborhood::AbstractMoveGenerator<int, double> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.567" = type { %"struct.std::_Vector_base.568" }
%"struct.std::_Vector_base.568" = type { %"struct.std::_Vector_base<printemps::neighborhood::Move<int, double> *, std::allocator<printemps::neighborhood::Move<int, double> *>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::neighborhood::Move<int, double> *, std::allocator<printemps::neighborhood::Move<int, double> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::neighborhood::Move<int, double> *, std::allocator<printemps::neighborhood::Move<int, double> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::neighborhood::Move<int, double> *, std::allocator<printemps::neighborhood::Move<int, double> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.printemps::preprocess::ProblemSizeReducer" = type <{ ptr, i32, i32, i8, [7 x i8] }>
%"class.std::function.572" = type { %"class.std::_Function_base", ptr }
%"class.std::allocator" = type { i8 }
%"class.printemps::model_component::Constraint" = type <{ %"class.printemps::multi_array::AbstractMultiArrayElement", %"class.printemps::model_component::Expression", i32, [4 x i8], double, double, double, double, double, double, double, double, double, ptr, i64, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [2 x i8] }>
%"struct.printemps::option::Option" = type { %"struct.printemps::option::GeneralOption", %"struct.printemps::option::PenaltyOption", %"struct.printemps::option::ParallelOption", %"struct.printemps::option::PreprocessOption", %"struct.printemps::option::RestartOption", [4 x i8], %"struct.printemps::option::NeighborhoodOption", %"struct.printemps::option::OutputOption", [4 x i8], %"struct.printemps::option::PDLPOption", %"struct.printemps::option::LagrangeDualOption", %"struct.printemps::option::LocalSearchOption", %"struct.printemps::option::TabuSearchOption" }
%"struct.printemps::option::GeneralOption" = type <{ i32, [4 x i8], double, double, double, i32, i8, [3 x i8] }>
%"struct.printemps::option::PenaltyOption" = type <{ double, double, double, double, double, double, double, double, i32, i32, i8, i8, i8, i8, [4 x i8] }>
%"struct.printemps::option::ParallelOption" = type { i8, i8, i32, i32, i8, double }
%"struct.printemps::option::PreprocessOption" = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%"struct.printemps::option::RestartOption" = type { i32 }
%"struct.printemps::option::NeighborhoodOption" = type <{ i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, [3 x i8], i32, i32, [4 x i8], double, i32, i32, i8, [7 x i8] }>
%"struct.printemps::option::OutputOption" = type <{ i32, i8, i8, [2 x i8], i32, i8, i8, i8, i8, i8, i8, i8, i8 }>
%"struct.printemps::option::PDLPOption" = type <{ i8, [3 x i8], i32, double, double, double, double, double, double, double, double, i32, i32, i32, i8, [3 x i8], i32, [4 x i8] }>
%"struct.printemps::option::LagrangeDualOption" = type { i8, i32, double, double, double, double, double, i32, i32 }
%"struct.printemps::option::LocalSearchOption" = type { i8, i32, double, double, i32, i32 }
%"struct.printemps::option::TabuSearchOption" = type <{ i32, [4 x i8], double, double, i32, i32, double, double, double, i32, [4 x i8], double, double, double, double, i8, i8, i8, i8, i8, i8, [2 x i8], i32, i32, double, double, i8, [3 x i8], i32, i32, [4 x i8] }>
%"struct.printemps::solver::Result" = type { %"class.printemps::solution::NamedSolution", %"struct.printemps::solver::Status", %"class.printemps::solution::SolutionArchive" }
%"class.printemps::solution::NamedSolution" = type <{ %"class.std::unordered_map.592", %"class.std::unordered_map.606", %"class.std::unordered_map.606", %"class.std::unordered_map.606", %"class.std::__cxx11::basic_string", i32, i32, double, double, double, i8, [7 x i8] }>
%"class.std::unordered_map.592" = type { %"class.std::_Hashtable.593" }
%"class.std::_Hashtable.593" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.606" = type { %"class.std::_Hashtable.607" }
%"class.std::_Hashtable.607" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.printemps::solver::Status" = type { ptr, ptr, %"struct.printemps::option::Option", double, double, i8, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, double, i32, i32, i64, i32, i64, double, double, double, double, %"class.std::unordered_map.606", %"class.std::unordered_map.620", %"class.std::unordered_map.620" }
%"class.std::unordered_map.620" = type { %"class.std::_Hashtable.621" }
%"class.std::_Hashtable.621" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.printemps::solution::SolutionArchive" = type <{ i32, i32, %"class.std::vector.634", %"class.std::__cxx11::basic_string", i32, i32, i8, [7 x i8] }>
%"class.std::vector.634" = type { %"struct.std::_Vector_base.635" }
%"struct.std::_Vector_base.635" = type { %"struct.std::_Vector_base<printemps::solution::SparseSolution<int, double>, std::allocator<printemps::solution::SparseSolution<int, double>>>::_Vector_impl" }
%"struct.std::_Vector_base<printemps::solution::SparseSolution<int, double>, std::allocator<printemps::solution::SparseSolution<int, double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<printemps::solution::SparseSolution<int, double>, std::allocator<printemps::solution::SparseSolution<int, double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<printemps::solution::SparseSolution<int, double>, std::allocator<printemps::solution::SparseSolution<int, double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@constinit = external hidden local_unnamed_addr constant [9 x i32], align 4
@constinit.70 = external hidden local_unnamed_addr constant [9 x i32], align 4
@constinit.71 = external hidden local_unnamed_addr constant [9 x i32], align 4
@constinit.72 = external hidden local_unnamed_addr constant [9 x i32], align 4
@constinit.73 = external hidden local_unnamed_addr constant [9 x i32], align 4
@constinit.74 = external hidden local_unnamed_addr constant [9 x i32], align 4
@constinit.75 = external hidden local_unnamed_addr constant [9 x i32], align 4
@constinit.76 = external hidden local_unnamed_addr constant [9 x i32], align 4
@constinit.77 = external hidden local_unnamed_addr constant [9 x i32], align 4
@.str.78 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.84 = external hidden unnamed_addr constant [2 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 nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 #2 align 2

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %1 = alloca %"class.std::vector", align 8
  %2 = alloca [9 x %"class.std::vector.470"], align 8
  %3 = alloca [9 x i32], align 4
  %4 = alloca %"class.std::allocator.472", align 1
  %5 = alloca [9 x i32], align 4
  %6 = alloca %"class.std::allocator.472", align 1
  %7 = alloca [9 x i32], align 4
  %8 = alloca %"class.std::allocator.472", align 1
  %9 = alloca [9 x i32], align 4
  %10 = alloca %"class.std::allocator.472", align 1
  %11 = alloca [9 x i32], align 4
  %12 = alloca %"class.std::allocator.472", align 1
  %13 = alloca [9 x i32], align 4
  %14 = alloca %"class.std::allocator.472", align 1
  %15 = alloca [9 x i32], align 4
  %16 = alloca %"class.std::allocator.472", align 1
  %17 = alloca [9 x i32], align 4
  %18 = alloca %"class.std::allocator.472", align 1
  %19 = alloca [9 x i32], align 4
  %20 = alloca %"class.std::allocator.472", align 1
  %21 = alloca %"class.std::allocator.466", align 1
  %22 = alloca %"class.printemps::model::Model", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca %"class.std::vector.470", align 8
  %26 = alloca [3 x i32], align 4
  %27 = alloca %"class.std::allocator.472", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator", align 1
  %30 = alloca %"class.std::vector.470", align 8
  %31 = alloca [3 x i32], align 4
  %32 = alloca %"class.std::allocator.472", align 1
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca %"class.std::vector.470", align 8
  %36 = alloca [2 x i32], align 4
  %37 = alloca %"class.std::allocator.472", align 1
  %38 = alloca %"class.printemps::model_component::Constraint", align 8
  %39 = alloca %"class.std::vector.470", align 8
  %40 = alloca [3 x i32], align 4
  %41 = alloca %"class.std::allocator.472", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator", align 1
  %44 = alloca %"class.std::vector.470", align 8
  %45 = alloca [2 x i32], align 4
  %46 = alloca %"class.std::allocator.472", align 1
  %47 = alloca %"class.printemps::model_component::Constraint", align 8
  %48 = alloca %"class.std::vector.470", align 8
  %49 = alloca [3 x i32], align 4
  %50 = alloca %"class.std::allocator.472", align 1
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator", align 1
  %53 = alloca %"class.std::vector.470", align 8
  %54 = alloca [2 x i32], align 4
  %55 = alloca %"class.std::allocator.472", align 1
  %56 = alloca %"class.printemps::model_component::Constraint", align 8
  %57 = alloca %"class.std::vector.470", align 8
  %58 = alloca [3 x i32], align 4
  %59 = alloca %"class.std::allocator.472", align 1
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator", align 1
  %62 = alloca %"class.std::vector.470", align 8
  %63 = alloca [3 x i32], align 4
  %64 = alloca %"class.std::allocator.472", align 1
  %65 = alloca %"class.printemps::model_component::Constraint", align 8
  %66 = alloca %"struct.printemps::option::Option", align 8
  %67 = alloca %"struct.printemps::solver::Result", align 8
  %68 = alloca %"class.std::vector", align 8
  %69 = alloca %"class.std::allocator.466", align 1
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator", align 1
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) #8
  call void @llvm.lifetime.start.p0(i64 216, ptr nonnull %2) #8
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %3) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %3, ptr noundef nonnull align 4 dereferenceable(36) @constinit, i64 36, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr nonnull %3, i64 9, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %72 unwind label %.thread

72:                                               ; preds = %0
  %73 = getelementptr inbounds i8, ptr %2, i64 24
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %5) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %5, ptr noundef nonnull align 4 dereferenceable(36) @constinit.70, i64 36, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr nonnull %5, i64 9, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %74 unwind label %173

74:                                               ; preds = %72
  %75 = getelementptr inbounds i8, ptr %2, i64 48
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %7) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %7, ptr noundef nonnull align 4 dereferenceable(36) @constinit.71, i64 36, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr nonnull %7, i64 9, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %76 unwind label %175

76:                                               ; preds = %74
  %77 = getelementptr inbounds i8, ptr %2, i64 72
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %9) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %9, ptr noundef nonnull align 4 dereferenceable(36) @constinit.72, i64 36, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %77, ptr nonnull %9, i64 9, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %78 unwind label %177

78:                                               ; preds = %76
  %79 = getelementptr inbounds i8, ptr %2, i64 96
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %11) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %11, ptr noundef nonnull align 4 dereferenceable(36) @constinit.73, i64 36, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %79, ptr nonnull %11, i64 9, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %80 unwind label %179

80:                                               ; preds = %78
  %81 = getelementptr inbounds i8, ptr %2, i64 120
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %13) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %13, ptr noundef nonnull align 4 dereferenceable(36) @constinit.74, i64 36, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %81, ptr nonnull %13, i64 9, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %82 unwind label %181

82:                                               ; preds = %80
  %83 = getelementptr inbounds i8, ptr %2, i64 144
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %15) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %15, ptr noundef nonnull align 4 dereferenceable(36) @constinit.75, i64 36, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr nonnull %15, i64 9, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %84 unwind label %183

84:                                               ; preds = %82
  %85 = getelementptr inbounds i8, ptr %2, i64 168
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %17) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %17, ptr noundef nonnull align 4 dereferenceable(36) @constinit.76, i64 36, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr nonnull %17, i64 9, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %86 unwind label %185

86:                                               ; preds = %84
  %87 = getelementptr inbounds i8, ptr %2, i64 192
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %19) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %19, ptr noundef nonnull align 4 dereferenceable(36) @constinit.77, i64 36, i1 false), !tbaa.struct !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %87, ptr nonnull %19, i64 9, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %88 unwind label %187

88:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #8
  call void @_ZNSaISt6vectorIiSaIiEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EEC2ESt16initializer_listIS1_ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr nonnull %2, i64 9, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %89 unwind label %.loopexit334.loopexit

89:                                               ; preds = %88
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #8
  %90 = getelementptr inbounds i8, ptr %2, i64 192
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #8
  %91 = getelementptr inbounds i8, ptr %2, i64 168
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #8
  %92 = getelementptr inbounds i8, ptr %2, i64 144
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #8
  %93 = getelementptr inbounds i8, ptr %2, i64 120
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %93) #8
  %94 = getelementptr inbounds i8, ptr %2, i64 96
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #8
  %95 = getelementptr inbounds i8, ptr %2, i64 72
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %95) #8
  %96 = getelementptr inbounds i8, ptr %2, i64 48
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #8
  %97 = getelementptr inbounds i8, ptr %2, i64 24
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %19) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %17) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %15) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %13) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %11) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %9) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %7) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %5) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %2) #8
  call void @llvm.lifetime.start.p0(i64 4584, ptr nonnull %22) #8
  invoke void @_ZN9printemps5model5ModelIidEC2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %22)
          to label %98 unwind label %210

98:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %99 unwind label %212

99:                                               ; preds = %98
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %26) #8
  store i32 9, ptr %26, align 4, !tbaa !9
  %100 = getelementptr inbounds i8, ptr %26, i64 4
  store i32 9, ptr %100, align 4, !tbaa !9
  %101 = getelementptr inbounds i8, ptr %26, i64 8
  store i32 9, ptr %101, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr nonnull %26, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %102 unwind label %214

102:                                              ; preds = %99
  %103 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE16create_variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEEii(ptr noundef nonnull align 8 dereferenceable(4584) %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(24) %25, i32 noundef 0, i32 noundef 1)
          to label %104 unwind label %216

104:                                              ; preds = %102
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.79, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %105 unwind label %220

105:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %31) #8
  store i32 3, ptr %31, align 4, !tbaa !9
  %106 = getelementptr inbounds i8, ptr %31, i64 4
  store i32 3, ptr %106, align 4, !tbaa !9
  %107 = getelementptr inbounds i8, ptr %31, i64 8
  store i32 9, ptr %107, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr nonnull %31, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %108 unwind label %222

108:                                              ; preds = %105
  %109 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_expressionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584) %22, ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(24) %30)
          to label %110 unwind label %224

110:                                              ; preds = %108
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  br label %.preheader331.us.preheader

.preheader331.us.preheader:                       ; preds = %.split353.us, %110
  %.0250354 = phi i32 [ 0, %110 ], [ %228, %.split353.us ]
  %111 = mul nuw nsw i32 %.0250354, 3
  %112 = add nuw nsw i32 %111, 1
  %113 = add nuw nsw i32 %111, 2
  br label %.lr.ph338.us.us.us.preheader

.lr.ph338.us.us.us.preheader:                     ; preds = %.split.us345.us, %.preheader331.us.preheader
  %.0251346.us = phi i32 [ %117, %.split.us345.us ], [ 0, %.preheader331.us.preheader ]
  %114 = mul nuw nsw i32 %.0251346.us, 3
  %115 = add nuw nsw i32 %114, 1
  %116 = add nuw nsw i32 %114, 2
  br label %.lr.ph338.us.us.us

.split.us345.us:                                  ; preds = %._crit_edge.us.us.us.us.2
  %117 = add nuw nsw i32 %.0251346.us, 1
  %exitcond375.not = icmp eq i32 %117, 3
  br i1 %exitcond375.not, label %.split353.us, label %.lr.ph338.us.us.us.preheader, !llvm.loop !11

.lr.ph338.us.us.us:                               ; preds = %.lr.ph338.us.us.us.preheader, %._crit_edge.us.us.us.us.2
  %.0252340.us.us.us = phi i32 [ %169, %._crit_edge.us.us.us.us.2 ], [ 0, %.lr.ph338.us.us.us.preheader ]
  %118 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %111, i32 noundef %114, i32 noundef %.0252340.us.us.us)
          to label %119 unwind label %.split.us.split.us.split.us.split.us

119:                                              ; preds = %.lr.ph338.us.us.us
  %120 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0250354, i32 noundef %.0251346.us, i32 noundef %.0252340.us.us.us)
          to label %121 unwind label %.split.us.split.us.split.us.split.us

121:                                              ; preds = %119
  %122 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392) %120, ptr noundef nonnull align 8 dereferenceable(62) %118)
          to label %123 unwind label %.split.us.split.us.split.us.split.us

123:                                              ; preds = %121
  %124 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %111, i32 noundef %115, i32 noundef %.0252340.us.us.us)
          to label %125 unwind label %.split.us.split.us.split.us.split.us

125:                                              ; preds = %123
  %126 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0250354, i32 noundef %.0251346.us, i32 noundef %.0252340.us.us.us)
          to label %127 unwind label %.split.us.split.us.split.us.split.us

127:                                              ; preds = %125
  %128 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392) %126, ptr noundef nonnull align 8 dereferenceable(62) %124)
          to label %129 unwind label %.split.us.split.us.split.us.split.us

129:                                              ; preds = %127
  %130 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %111, i32 noundef %116, i32 noundef %.0252340.us.us.us)
          to label %131 unwind label %.split.us.split.us.split.us.split.us

131:                                              ; preds = %129
  %132 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0250354, i32 noundef %.0251346.us, i32 noundef %.0252340.us.us.us)
          to label %133 unwind label %.split.us.split.us.split.us.split.us

133:                                              ; preds = %131
  %134 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392) %132, ptr noundef nonnull align 8 dereferenceable(62) %130)
          to label %._crit_edge.us.us.us.us unwind label %.split.us.split.us.split.us.split.us

._crit_edge.us.us.us.us:                          ; preds = %133
  %135 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %112, i32 noundef %114, i32 noundef %.0252340.us.us.us)
          to label %136 unwind label %.split.us.split.us.split.us.split.us

136:                                              ; preds = %._crit_edge.us.us.us.us
  %137 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0250354, i32 noundef %.0251346.us, i32 noundef %.0252340.us.us.us)
          to label %138 unwind label %.split.us.split.us.split.us.split.us

138:                                              ; preds = %136
  %139 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392) %137, ptr noundef nonnull align 8 dereferenceable(62) %135)
          to label %140 unwind label %.split.us.split.us.split.us.split.us

140:                                              ; preds = %138
  %141 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %112, i32 noundef %115, i32 noundef %.0252340.us.us.us)
          to label %142 unwind label %.split.us.split.us.split.us.split.us

142:                                              ; preds = %140
  %143 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0250354, i32 noundef %.0251346.us, i32 noundef %.0252340.us.us.us)
          to label %144 unwind label %.split.us.split.us.split.us.split.us

144:                                              ; preds = %142
  %145 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392) %143, ptr noundef nonnull align 8 dereferenceable(62) %141)
          to label %146 unwind label %.split.us.split.us.split.us.split.us

146:                                              ; preds = %144
  %147 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %112, i32 noundef %116, i32 noundef %.0252340.us.us.us)
          to label %148 unwind label %.split.us.split.us.split.us.split.us

148:                                              ; preds = %146
  %149 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0250354, i32 noundef %.0251346.us, i32 noundef %.0252340.us.us.us)
          to label %150 unwind label %.split.us.split.us.split.us.split.us

150:                                              ; preds = %148
  %151 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392) %149, ptr noundef nonnull align 8 dereferenceable(62) %147)
          to label %._crit_edge.us.us.us.us.1 unwind label %.split.us.split.us.split.us.split.us

._crit_edge.us.us.us.us.1:                        ; preds = %150
  %152 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %113, i32 noundef %114, i32 noundef %.0252340.us.us.us)
          to label %153 unwind label %.split.us.split.us.split.us.split.us

153:                                              ; preds = %._crit_edge.us.us.us.us.1
  %154 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0250354, i32 noundef %.0251346.us, i32 noundef %.0252340.us.us.us)
          to label %155 unwind label %.split.us.split.us.split.us.split.us

155:                                              ; preds = %153
  %156 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392) %154, ptr noundef nonnull align 8 dereferenceable(62) %152)
          to label %157 unwind label %.split.us.split.us.split.us.split.us

157:                                              ; preds = %155
  %158 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %113, i32 noundef %115, i32 noundef %.0252340.us.us.us)
          to label %159 unwind label %.split.us.split.us.split.us.split.us

159:                                              ; preds = %157
  %160 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0250354, i32 noundef %.0251346.us, i32 noundef %.0252340.us.us.us)
          to label %161 unwind label %.split.us.split.us.split.us.split.us

161:                                              ; preds = %159
  %162 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392) %160, ptr noundef nonnull align 8 dereferenceable(62) %158)
          to label %163 unwind label %.split.us.split.us.split.us.split.us

163:                                              ; preds = %161
  %164 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %113, i32 noundef %116, i32 noundef %.0252340.us.us.us)
          to label %165 unwind label %.split.us.split.us.split.us.split.us

165:                                              ; preds = %163
  %166 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0250354, i32 noundef %.0251346.us, i32 noundef %.0252340.us.us.us)
          to label %167 unwind label %.split.us.split.us.split.us.split.us

167:                                              ; preds = %165
  %168 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392) %166, ptr noundef nonnull align 8 dereferenceable(62) %164)
          to label %._crit_edge.us.us.us.us.2 unwind label %.split.us.split.us.split.us.split.us

._crit_edge.us.us.us.us.2:                        ; preds = %167
  %169 = add nuw nsw i32 %.0252340.us.us.us, 1
  %exitcond.not = icmp eq i32 %169, 9
  br i1 %exitcond.not, label %.split.us345.us, label %.lr.ph338.us.us.us, !llvm.loop !13

.split.us.split.us.split.us.split.us:             ; preds = %167, %165, %163, %161, %159, %157, %155, %153, %._crit_edge.us.us.us.us.1, %150, %148, %146, %144, %142, %140, %138, %136, %._crit_edge.us.us.us.us, %133, %131, %129, %127, %125, %123, %121, %119, %.lr.ph338.us.us.us
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %860

171:                                              ; preds = %.split353.us
  invoke void @_ZN9printemps15model_component15ExpressionProxyIidE7disableEv(ptr noundef nonnull align 8 dereferenceable(88) %109)
          to label %229 unwind label %238

.thread:                                          ; preds = %0
  %172 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %3) #8
  br label %.loopexit

173:                                              ; preds = %72
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %205

175:                                              ; preds = %74
  %176 = landingpad { ptr, i32 }
          cleanup
  br label %204

177:                                              ; preds = %76
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %203

179:                                              ; preds = %78
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %202

181:                                              ; preds = %80
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %201

183:                                              ; preds = %82
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %200

185:                                              ; preds = %84
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %199

187:                                              ; preds = %86
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit334

.loopexit334.loopexit:                            ; preds = %88
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #8
  %190 = getelementptr inbounds i8, ptr %2, i64 192
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %190) #8
  %191 = getelementptr inbounds i8, ptr %2, i64 168
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %191) #8
  %192 = getelementptr inbounds i8, ptr %2, i64 144
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %192) #8
  %193 = getelementptr inbounds i8, ptr %2, i64 120
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %193) #8
  %194 = getelementptr inbounds i8, ptr %2, i64 96
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %194) #8
  %195 = getelementptr inbounds i8, ptr %2, i64 72
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %195) #8
  %196 = getelementptr inbounds i8, ptr %2, i64 48
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %196) #8
  %197 = getelementptr inbounds i8, ptr %2, i64 24
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %197) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #8
  br label %.loopexit334

.loopexit334:                                     ; preds = %.loopexit334.loopexit, %187
  %198 = phi i1 [ false, %187 ], [ true, %.loopexit334.loopexit ]
  %.pn = phi { ptr, i32 } [ %188, %187 ], [ %189, %.loopexit334.loopexit ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %19) #8
  br label %199

199:                                              ; preds = %.loopexit334, %185
  %.1240 = phi i1 [ %198, %.loopexit334 ], [ false, %185 ]
  %.pn.pn = phi { ptr, i32 } [ %.pn, %.loopexit334 ], [ %186, %185 ]
  %.0187 = phi ptr [ %87, %.loopexit334 ], [ %85, %185 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %17) #8
  br label %200

200:                                              ; preds = %199, %183
  %.2241 = phi i1 [ %.1240, %199 ], [ false, %183 ]
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %199 ], [ %184, %183 ]
  %.1 = phi ptr [ %.0187, %199 ], [ %83, %183 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %15) #8
  br label %201

201:                                              ; preds = %200, %181
  %.3242 = phi i1 [ %.2241, %200 ], [ false, %181 ]
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %200 ], [ %182, %181 ]
  %.2 = phi ptr [ %.1, %200 ], [ %81, %181 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %13) #8
  br label %202

202:                                              ; preds = %201, %179
  %.4243 = phi i1 [ %.3242, %201 ], [ false, %179 ]
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %201 ], [ %180, %179 ]
  %.3 = phi ptr [ %.2, %201 ], [ %79, %179 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %11) #8
  br label %203

203:                                              ; preds = %202, %177
  %.5244 = phi i1 [ %.4243, %202 ], [ false, %177 ]
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %202 ], [ %178, %177 ]
  %.4 = phi ptr [ %.3, %202 ], [ %77, %177 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %9) #8
  br label %204

204:                                              ; preds = %203, %175
  %.6245 = phi i1 [ %.5244, %203 ], [ false, %175 ]
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %203 ], [ %176, %175 ]
  %.5 = phi ptr [ %.4, %203 ], [ %75, %175 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %7) #8
  br label %205

205:                                              ; preds = %173, %204
  %.7246 = phi i1 [ %.6245, %204 ], [ false, %173 ]
  %.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %204 ], [ %174, %173 ]
  %.6 = phi ptr [ %.5, %204 ], [ %73, %173 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %5) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %3) #8
  %206 = icmp eq ptr %2, %.6
  %or.cond = select i1 %.7246, i1 true, i1 %206
  br i1 %or.cond, label %.loopexit, label %.preheader333

.preheader333:                                    ; preds = %205, %.preheader333
  %207 = phi ptr [ %208, %.preheader333 ], [ %.6, %205 ]
  %208 = getelementptr inbounds i8, ptr %207, i64 -24
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %208) #8
  %209 = icmp eq ptr %208, %2
  br i1 %209, label %.loopexit, label %.preheader333

.loopexit:                                        ; preds = %.preheader333, %.thread, %205
  %.pn.pn.pn.pn.pn.pn.pn.pn.pn320 = phi { ptr, i32 } [ %172, %.thread ], [ %.pn.pn.pn.pn.pn.pn.pn.pn, %205 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn, %.preheader333 ]
  call void @llvm.lifetime.end.p0(i64 216, ptr nonnull %2) #8
  br label %862

210:                                              ; preds = %89
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %861

212:                                              ; preds = %98
  %213 = landingpad { ptr, i32 }
          cleanup
  br label %219

214:                                              ; preds = %99
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %218

216:                                              ; preds = %102
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  br label %218

218:                                              ; preds = %216, %214
  %.pn269 = phi { ptr, i32 } [ %217, %216 ], [ %215, %214 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %219

219:                                              ; preds = %218, %212
  %.pn269.pn = phi { ptr, i32 } [ %.pn269, %218 ], [ %213, %212 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  br label %860

220:                                              ; preds = %104
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %227

222:                                              ; preds = %105
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %226

224:                                              ; preds = %108
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  br label %226

226:                                              ; preds = %224, %222
  %.pn272 = phi { ptr, i32 } [ %225, %224 ], [ %223, %222 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  br label %227

227:                                              ; preds = %226, %220
  %.pn272.pn = phi { ptr, i32 } [ %.pn272, %226 ], [ %221, %220 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #8
  br label %860

.split353.us:                                     ; preds = %.split.us345.us
  %228 = add nuw nsw i32 %.0250354, 1
  %exitcond376.not = icmp eq i32 %228, 3
  br i1 %exitcond376.not, label %171, label %.preheader331.us.preheader, !llvm.loop !14

229:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.80, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %230 unwind label %240

230:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %35) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  store i32 9, ptr %36, align 4, !tbaa !9
  %231 = getelementptr inbounds i8, ptr %36, i64 4
  store i32 9, ptr %231, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr nonnull %36, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %232 unwind label %242

232:                                              ; preds = %230
  %233 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584) %22, ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(24) %35)
          to label %234 unwind label %244

234:                                              ; preds = %232
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #8
  %235 = getelementptr inbounds i8, ptr %40, i64 4
  %236 = getelementptr inbounds i8, ptr %40, i64 8
  br label %.preheader330

.preheader330:                                    ; preds = %234, %301
  %.0257356 = phi i32 [ 0, %234 ], [ %302, %301 ]
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #8
  store i32 %.0257356, ptr %40, align 4, !tbaa !9
  store i32 0, ptr %235, align 4, !tbaa !9
  store i32 -1, ptr %236, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr nonnull %40, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %248 unwind label %303

237:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull @.str.81, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %311 unwind label %319

238:                                              ; preds = %171
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %860

240:                                              ; preds = %229
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %247

242:                                              ; preds = %230
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %246

244:                                              ; preds = %232
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #8
  br label %246

246:                                              ; preds = %244, %242
  %.pn275 = phi { ptr, i32 } [ %245, %244 ], [ %243, %242 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %247

247:                                              ; preds = %246, %240
  %.pn275.pn = phi { ptr, i32 } [ %.pn275, %246 ], [ %241, %240 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #8
  br label %860

248:                                              ; preds = %.preheader330
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %38, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %249 unwind label %305

249:                                              ; preds = %248
  %250 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %233, i32 noundef %.0257356, i32 noundef 0)
          to label %251 unwind label %307

251:                                              ; preds = %249
  %252 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %250, ptr noundef nonnull align 8 dereferenceable(542) %38)
          to label %253 unwind label %307

253:                                              ; preds = %251
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #8
  store i32 %.0257356, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %235, align 4, !tbaa !9
  store i32 -1, ptr %236, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr nonnull %40, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %254 unwind label %303

254:                                              ; preds = %253
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %38, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %255 unwind label %305

255:                                              ; preds = %254
  %256 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %233, i32 noundef %.0257356, i32 noundef 1)
          to label %257 unwind label %307

257:                                              ; preds = %255
  %258 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %256, ptr noundef nonnull align 8 dereferenceable(542) %38)
          to label %259 unwind label %307

259:                                              ; preds = %257
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #8
  store i32 %.0257356, ptr %40, align 4, !tbaa !9
  store i32 2, ptr %235, align 4, !tbaa !9
  store i32 -1, ptr %236, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr nonnull %40, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %260 unwind label %303

260:                                              ; preds = %259
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %38, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %261 unwind label %305

261:                                              ; preds = %260
  %262 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %233, i32 noundef %.0257356, i32 noundef 2)
          to label %263 unwind label %307

263:                                              ; preds = %261
  %264 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %262, ptr noundef nonnull align 8 dereferenceable(542) %38)
          to label %265 unwind label %307

265:                                              ; preds = %263
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #8
  store i32 %.0257356, ptr %40, align 4, !tbaa !9
  store i32 3, ptr %235, align 4, !tbaa !9
  store i32 -1, ptr %236, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr nonnull %40, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %266 unwind label %303

266:                                              ; preds = %265
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %38, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %267 unwind label %305

267:                                              ; preds = %266
  %268 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %233, i32 noundef %.0257356, i32 noundef 3)
          to label %269 unwind label %307

269:                                              ; preds = %267
  %270 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %268, ptr noundef nonnull align 8 dereferenceable(542) %38)
          to label %271 unwind label %307

271:                                              ; preds = %269
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #8
  store i32 %.0257356, ptr %40, align 4, !tbaa !9
  store i32 4, ptr %235, align 4, !tbaa !9
  store i32 -1, ptr %236, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr nonnull %40, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %272 unwind label %303

272:                                              ; preds = %271
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %38, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %273 unwind label %305

273:                                              ; preds = %272
  %274 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %233, i32 noundef %.0257356, i32 noundef 4)
          to label %275 unwind label %307

275:                                              ; preds = %273
  %276 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %274, ptr noundef nonnull align 8 dereferenceable(542) %38)
          to label %277 unwind label %307

277:                                              ; preds = %275
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #8
  store i32 %.0257356, ptr %40, align 4, !tbaa !9
  store i32 5, ptr %235, align 4, !tbaa !9
  store i32 -1, ptr %236, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr nonnull %40, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %278 unwind label %303

278:                                              ; preds = %277
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %38, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %279 unwind label %305

279:                                              ; preds = %278
  %280 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %233, i32 noundef %.0257356, i32 noundef 5)
          to label %281 unwind label %307

281:                                              ; preds = %279
  %282 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %280, ptr noundef nonnull align 8 dereferenceable(542) %38)
          to label %283 unwind label %307

283:                                              ; preds = %281
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #8
  store i32 %.0257356, ptr %40, align 4, !tbaa !9
  store i32 6, ptr %235, align 4, !tbaa !9
  store i32 -1, ptr %236, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr nonnull %40, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %284 unwind label %303

284:                                              ; preds = %283
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %38, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %285 unwind label %305

285:                                              ; preds = %284
  %286 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %233, i32 noundef %.0257356, i32 noundef 6)
          to label %287 unwind label %307

287:                                              ; preds = %285
  %288 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %286, ptr noundef nonnull align 8 dereferenceable(542) %38)
          to label %289 unwind label %307

289:                                              ; preds = %287
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #8
  store i32 %.0257356, ptr %40, align 4, !tbaa !9
  store i32 7, ptr %235, align 4, !tbaa !9
  store i32 -1, ptr %236, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr nonnull %40, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %290 unwind label %303

290:                                              ; preds = %289
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %38, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %291 unwind label %305

291:                                              ; preds = %290
  %292 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %233, i32 noundef %.0257356, i32 noundef 7)
          to label %293 unwind label %307

293:                                              ; preds = %291
  %294 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %292, ptr noundef nonnull align 8 dereferenceable(542) %38)
          to label %295 unwind label %307

295:                                              ; preds = %293
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #8
  store i32 %.0257356, ptr %40, align 4, !tbaa !9
  store i32 8, ptr %235, align 4, !tbaa !9
  store i32 -1, ptr %236, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr nonnull %40, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %296 unwind label %303

296:                                              ; preds = %295
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %38, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %297 unwind label %305

297:                                              ; preds = %296
  %298 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %233, i32 noundef %.0257356, i32 noundef 8)
          to label %299 unwind label %307

299:                                              ; preds = %297
  %300 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %298, ptr noundef nonnull align 8 dereferenceable(542) %38)
          to label %301 unwind label %307

301:                                              ; preds = %299
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %38) #8
  %302 = add nuw nsw i32 %.0257356, 1
  %exitcond378.not = icmp eq i32 %302, 9
  br i1 %exitcond378.not, label %237, label %.preheader330, !llvm.loop !15

303:                                              ; preds = %295, %289, %283, %277, %271, %265, %259, %253, %.preheader330
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %310

305:                                              ; preds = %296, %290, %284, %278, %272, %266, %260, %254, %248
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %309

307:                                              ; preds = %299, %297, %293, %291, %287, %285, %281, %279, %275, %273, %269, %267, %263, %261, %257, %255, %251, %249
  %308 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #8
  br label %309

309:                                              ; preds = %307, %305
  %.pn307 = phi { ptr, i32 } [ %308, %307 ], [ %306, %305 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #8
  br label %310

310:                                              ; preds = %309, %303
  %.pn307.pn = phi { ptr, i32 } [ %.pn307, %309 ], [ %304, %303 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %38) #8
  br label %860

311:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %44) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #8
  store i32 9, ptr %45, align 4, !tbaa !9
  %312 = getelementptr inbounds i8, ptr %45, i64 4
  store i32 9, ptr %312, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %46) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr nonnull %45, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %313 unwind label %321

313:                                              ; preds = %311
  %314 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584) %22, ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(24) %44)
          to label %315 unwind label %323

315:                                              ; preds = %313
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #8
  %316 = getelementptr inbounds i8, ptr %49, i64 4
  %317 = getelementptr inbounds i8, ptr %49, i64 8
  br label %.preheader329

.preheader329:                                    ; preds = %315, %380
  %.0255358 = phi i32 [ 0, %315 ], [ %381, %380 ]
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #8
  store i32 -1, ptr %49, align 4, !tbaa !9
  store i32 %.0255358, ptr %316, align 4, !tbaa !9
  store i32 0, ptr %317, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr nonnull %49, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %327 unwind label %382

318:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %51) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %52) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull @.str.82, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %390 unwind label %398

319:                                              ; preds = %237
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %326

321:                                              ; preds = %311
  %322 = landingpad { ptr, i32 }
          cleanup
  br label %325

323:                                              ; preds = %313
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #8
  br label %325

325:                                              ; preds = %323, %321
  %.pn278 = phi { ptr, i32 } [ %324, %323 ], [ %322, %321 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  br label %326

326:                                              ; preds = %325, %319
  %.pn278.pn = phi { ptr, i32 } [ %.pn278, %325 ], [ %320, %319 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #8
  br label %860

327:                                              ; preds = %.preheader329
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %47, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %328 unwind label %384

328:                                              ; preds = %327
  %329 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %314, i32 noundef %.0255358, i32 noundef 0)
          to label %330 unwind label %386

330:                                              ; preds = %328
  %331 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %329, ptr noundef nonnull align 8 dereferenceable(542) %47)
          to label %332 unwind label %386

332:                                              ; preds = %330
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #8
  store i32 -1, ptr %49, align 4, !tbaa !9
  store i32 %.0255358, ptr %316, align 4, !tbaa !9
  store i32 1, ptr %317, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr nonnull %49, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %333 unwind label %382

333:                                              ; preds = %332
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %47, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %334 unwind label %384

334:                                              ; preds = %333
  %335 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %314, i32 noundef %.0255358, i32 noundef 1)
          to label %336 unwind label %386

336:                                              ; preds = %334
  %337 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %335, ptr noundef nonnull align 8 dereferenceable(542) %47)
          to label %338 unwind label %386

338:                                              ; preds = %336
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #8
  store i32 -1, ptr %49, align 4, !tbaa !9
  store i32 %.0255358, ptr %316, align 4, !tbaa !9
  store i32 2, ptr %317, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr nonnull %49, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %339 unwind label %382

339:                                              ; preds = %338
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %47, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %340 unwind label %384

340:                                              ; preds = %339
  %341 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %314, i32 noundef %.0255358, i32 noundef 2)
          to label %342 unwind label %386

342:                                              ; preds = %340
  %343 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %341, ptr noundef nonnull align 8 dereferenceable(542) %47)
          to label %344 unwind label %386

344:                                              ; preds = %342
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #8
  store i32 -1, ptr %49, align 4, !tbaa !9
  store i32 %.0255358, ptr %316, align 4, !tbaa !9
  store i32 3, ptr %317, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr nonnull %49, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %345 unwind label %382

345:                                              ; preds = %344
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %47, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %346 unwind label %384

346:                                              ; preds = %345
  %347 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %314, i32 noundef %.0255358, i32 noundef 3)
          to label %348 unwind label %386

348:                                              ; preds = %346
  %349 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %347, ptr noundef nonnull align 8 dereferenceable(542) %47)
          to label %350 unwind label %386

350:                                              ; preds = %348
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #8
  store i32 -1, ptr %49, align 4, !tbaa !9
  store i32 %.0255358, ptr %316, align 4, !tbaa !9
  store i32 4, ptr %317, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr nonnull %49, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %351 unwind label %382

351:                                              ; preds = %350
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %47, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %352 unwind label %384

352:                                              ; preds = %351
  %353 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %314, i32 noundef %.0255358, i32 noundef 4)
          to label %354 unwind label %386

354:                                              ; preds = %352
  %355 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %353, ptr noundef nonnull align 8 dereferenceable(542) %47)
          to label %356 unwind label %386

356:                                              ; preds = %354
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #8
  store i32 -1, ptr %49, align 4, !tbaa !9
  store i32 %.0255358, ptr %316, align 4, !tbaa !9
  store i32 5, ptr %317, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr nonnull %49, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %357 unwind label %382

357:                                              ; preds = %356
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %47, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %358 unwind label %384

358:                                              ; preds = %357
  %359 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %314, i32 noundef %.0255358, i32 noundef 5)
          to label %360 unwind label %386

360:                                              ; preds = %358
  %361 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %359, ptr noundef nonnull align 8 dereferenceable(542) %47)
          to label %362 unwind label %386

362:                                              ; preds = %360
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #8
  store i32 -1, ptr %49, align 4, !tbaa !9
  store i32 %.0255358, ptr %316, align 4, !tbaa !9
  store i32 6, ptr %317, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr nonnull %49, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %363 unwind label %382

363:                                              ; preds = %362
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %47, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %364 unwind label %384

364:                                              ; preds = %363
  %365 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %314, i32 noundef %.0255358, i32 noundef 6)
          to label %366 unwind label %386

366:                                              ; preds = %364
  %367 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %365, ptr noundef nonnull align 8 dereferenceable(542) %47)
          to label %368 unwind label %386

368:                                              ; preds = %366
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #8
  store i32 -1, ptr %49, align 4, !tbaa !9
  store i32 %.0255358, ptr %316, align 4, !tbaa !9
  store i32 7, ptr %317, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr nonnull %49, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %369 unwind label %382

369:                                              ; preds = %368
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %47, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %370 unwind label %384

370:                                              ; preds = %369
  %371 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %314, i32 noundef %.0255358, i32 noundef 7)
          to label %372 unwind label %386

372:                                              ; preds = %370
  %373 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %371, ptr noundef nonnull align 8 dereferenceable(542) %47)
          to label %374 unwind label %386

374:                                              ; preds = %372
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %47) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %49) #8
  store i32 -1, ptr %49, align 4, !tbaa !9
  store i32 %.0255358, ptr %316, align 4, !tbaa !9
  store i32 8, ptr %317, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr nonnull %49, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %375 unwind label %382

375:                                              ; preds = %374
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %47, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %376 unwind label %384

376:                                              ; preds = %375
  %377 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %314, i32 noundef %.0255358, i32 noundef 8)
          to label %378 unwind label %386

378:                                              ; preds = %376
  %379 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %377, ptr noundef nonnull align 8 dereferenceable(542) %47)
          to label %380 unwind label %386

380:                                              ; preds = %378
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %47) #8
  %381 = add nuw nsw i32 %.0255358, 1
  %exitcond380.not = icmp eq i32 %381, 9
  br i1 %exitcond380.not, label %318, label %.preheader329, !llvm.loop !16

382:                                              ; preds = %374, %368, %362, %356, %350, %344, %338, %332, %.preheader329
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %389

384:                                              ; preds = %375, %369, %363, %357, %351, %345, %339, %333, %327
  %385 = landingpad { ptr, i32 }
          cleanup
  br label %388

386:                                              ; preds = %378, %376, %372, %370, %366, %364, %360, %358, %354, %352, %348, %346, %342, %340, %336, %334, %330, %328
  %387 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #8
  br label %388

388:                                              ; preds = %386, %384
  %.pn303 = phi { ptr, i32 } [ %387, %386 ], [ %385, %384 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  br label %389

389:                                              ; preds = %388, %382
  %.pn303.pn = phi { ptr, i32 } [ %.pn303, %388 ], [ %383, %382 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %47) #8
  br label %860

390:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %53) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #8
  store i32 9, ptr %54, align 4, !tbaa !9
  %391 = getelementptr inbounds i8, ptr %54, i64 4
  store i32 9, ptr %391, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %55) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr nonnull %54, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %392 unwind label %400

392:                                              ; preds = %390
  %393 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584) %22, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(24) %53)
          to label %394 unwind label %402

394:                                              ; preds = %392
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #8
  %395 = getelementptr inbounds i8, ptr %58, i64 4
  %396 = getelementptr inbounds i8, ptr %58, i64 8
  br label %.preheader328

.preheader328:                                    ; preds = %394, %459
  %.0249360 = phi i32 [ 0, %394 ], [ %460, %459 ]
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #8
  store i32 %.0249360, ptr %58, align 4, !tbaa !9
  store i32 -1, ptr %395, align 4, !tbaa !9
  store i32 0, ptr %396, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr nonnull %58, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %406 unwind label %461

397:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %61) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %469 unwind label %475

398:                                              ; preds = %318
  %399 = landingpad { ptr, i32 }
          cleanup
  br label %405

400:                                              ; preds = %390
  %401 = landingpad { ptr, i32 }
          cleanup
  br label %404

402:                                              ; preds = %392
  %403 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  br label %404

404:                                              ; preds = %402, %400
  %.pn281 = phi { ptr, i32 } [ %403, %402 ], [ %401, %400 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  br label %405

405:                                              ; preds = %404, %398
  %.pn281.pn = phi { ptr, i32 } [ %.pn281, %404 ], [ %399, %398 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %51) #8
  br label %860

406:                                              ; preds = %.preheader328
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %56, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %407 unwind label %463

407:                                              ; preds = %406
  %408 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %393, i32 noundef %.0249360, i32 noundef 0)
          to label %409 unwind label %465

409:                                              ; preds = %407
  %410 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %408, ptr noundef nonnull align 8 dereferenceable(542) %56)
          to label %411 unwind label %465

411:                                              ; preds = %409
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %56) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #8
  store i32 %.0249360, ptr %58, align 4, !tbaa !9
  store i32 -1, ptr %395, align 4, !tbaa !9
  store i32 1, ptr %396, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr nonnull %58, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %412 unwind label %461

412:                                              ; preds = %411
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %56, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %413 unwind label %463

413:                                              ; preds = %412
  %414 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %393, i32 noundef %.0249360, i32 noundef 1)
          to label %415 unwind label %465

415:                                              ; preds = %413
  %416 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %414, ptr noundef nonnull align 8 dereferenceable(542) %56)
          to label %417 unwind label %465

417:                                              ; preds = %415
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %56) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #8
  store i32 %.0249360, ptr %58, align 4, !tbaa !9
  store i32 -1, ptr %395, align 4, !tbaa !9
  store i32 2, ptr %396, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr nonnull %58, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %418 unwind label %461

418:                                              ; preds = %417
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %56, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %419 unwind label %463

419:                                              ; preds = %418
  %420 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %393, i32 noundef %.0249360, i32 noundef 2)
          to label %421 unwind label %465

421:                                              ; preds = %419
  %422 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %420, ptr noundef nonnull align 8 dereferenceable(542) %56)
          to label %423 unwind label %465

423:                                              ; preds = %421
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %56) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #8
  store i32 %.0249360, ptr %58, align 4, !tbaa !9
  store i32 -1, ptr %395, align 4, !tbaa !9
  store i32 3, ptr %396, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr nonnull %58, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %424 unwind label %461

424:                                              ; preds = %423
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %56, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %425 unwind label %463

425:                                              ; preds = %424
  %426 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %393, i32 noundef %.0249360, i32 noundef 3)
          to label %427 unwind label %465

427:                                              ; preds = %425
  %428 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %426, ptr noundef nonnull align 8 dereferenceable(542) %56)
          to label %429 unwind label %465

429:                                              ; preds = %427
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %56) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #8
  store i32 %.0249360, ptr %58, align 4, !tbaa !9
  store i32 -1, ptr %395, align 4, !tbaa !9
  store i32 4, ptr %396, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr nonnull %58, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %430 unwind label %461

430:                                              ; preds = %429
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %56, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %431 unwind label %463

431:                                              ; preds = %430
  %432 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %393, i32 noundef %.0249360, i32 noundef 4)
          to label %433 unwind label %465

433:                                              ; preds = %431
  %434 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %432, ptr noundef nonnull align 8 dereferenceable(542) %56)
          to label %435 unwind label %465

435:                                              ; preds = %433
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %56) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #8
  store i32 %.0249360, ptr %58, align 4, !tbaa !9
  store i32 -1, ptr %395, align 4, !tbaa !9
  store i32 5, ptr %396, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr nonnull %58, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %436 unwind label %461

436:                                              ; preds = %435
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %56, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %437 unwind label %463

437:                                              ; preds = %436
  %438 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %393, i32 noundef %.0249360, i32 noundef 5)
          to label %439 unwind label %465

439:                                              ; preds = %437
  %440 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %438, ptr noundef nonnull align 8 dereferenceable(542) %56)
          to label %441 unwind label %465

441:                                              ; preds = %439
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %56) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #8
  store i32 %.0249360, ptr %58, align 4, !tbaa !9
  store i32 -1, ptr %395, align 4, !tbaa !9
  store i32 6, ptr %396, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr nonnull %58, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %442 unwind label %461

442:                                              ; preds = %441
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %56, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %443 unwind label %463

443:                                              ; preds = %442
  %444 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %393, i32 noundef %.0249360, i32 noundef 6)
          to label %445 unwind label %465

445:                                              ; preds = %443
  %446 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %444, ptr noundef nonnull align 8 dereferenceable(542) %56)
          to label %447 unwind label %465

447:                                              ; preds = %445
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %56) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #8
  store i32 %.0249360, ptr %58, align 4, !tbaa !9
  store i32 -1, ptr %395, align 4, !tbaa !9
  store i32 7, ptr %396, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr nonnull %58, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %448 unwind label %461

448:                                              ; preds = %447
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %56, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %449 unwind label %463

449:                                              ; preds = %448
  %450 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %393, i32 noundef %.0249360, i32 noundef 7)
          to label %451 unwind label %465

451:                                              ; preds = %449
  %452 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %450, ptr noundef nonnull align 8 dereferenceable(542) %56)
          to label %453 unwind label %465

453:                                              ; preds = %451
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %56) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %56) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %58) #8
  store i32 %.0249360, ptr %58, align 4, !tbaa !9
  store i32 -1, ptr %395, align 4, !tbaa !9
  store i32 8, ptr %396, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr nonnull %58, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %454 unwind label %461

454:                                              ; preds = %453
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %56, ptr noundef nonnull align 8 dereferenceable(88) %103, ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %455 unwind label %463

455:                                              ; preds = %454
  %456 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %393, i32 noundef %.0249360, i32 noundef 8)
          to label %457 unwind label %465

457:                                              ; preds = %455
  %458 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %456, ptr noundef nonnull align 8 dereferenceable(542) %56)
          to label %459 unwind label %465

459:                                              ; preds = %457
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %56) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %56) #8
  %460 = add nuw nsw i32 %.0249360, 1
  %exitcond382.not = icmp eq i32 %460, 9
  br i1 %exitcond382.not, label %397, label %.preheader328, !llvm.loop !17

461:                                              ; preds = %453, %447, %441, %435, %429, %423, %417, %411, %.preheader328
  %462 = landingpad { ptr, i32 }
          cleanup
  br label %468

463:                                              ; preds = %454, %448, %442, %436, %430, %424, %418, %412, %406
  %464 = landingpad { ptr, i32 }
          cleanup
  br label %467

465:                                              ; preds = %457, %455, %451, %449, %445, %443, %439, %437, %433, %431, %427, %425, %421, %419, %415, %413, %409, %407
  %466 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %56) #8
  br label %467

467:                                              ; preds = %465, %463
  %.pn299 = phi { ptr, i32 } [ %466, %465 ], [ %464, %463 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  br label %468

468:                                              ; preds = %467, %461
  %.pn299.pn = phi { ptr, i32 } [ %.pn299, %467 ], [ %462, %461 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %58) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %56) #8
  br label %860

469:                                              ; preds = %397
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %62) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %63) #8
  store i32 3, ptr %63, align 4, !tbaa !9
  %470 = getelementptr inbounds i8, ptr %63, i64 4
  store i32 3, ptr %470, align 4, !tbaa !9
  %471 = getelementptr inbounds i8, ptr %63, i64 8
  store i32 9, ptr %471, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #8
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr nonnull %63, i64 3, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %472 unwind label %477

472:                                              ; preds = %469
  %473 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584) %22, ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(24) %62)
          to label %474 unwind label %479

474:                                              ; preds = %472
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #8
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %63) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #8
  br label %.preheader327

.preheader327:                                    ; preds = %474, %484
  %.0186363 = phi i32 [ 0, %474 ], [ %485, %484 ]
  br label %.preheader326

475:                                              ; preds = %397
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %482

477:                                              ; preds = %469
  %478 = landingpad { ptr, i32 }
          cleanup
  br label %481

479:                                              ; preds = %472
  %480 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #8
  br label %481

481:                                              ; preds = %479, %477
  %.pn284 = phi { ptr, i32 } [ %480, %479 ], [ %478, %477 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %64) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %63) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %482

482:                                              ; preds = %481, %475
  %.pn284.pn = phi { ptr, i32 } [ %.pn284, %481 ], [ %476, %475 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %60) #8
  br label %860

.preheader326:                                    ; preds = %.preheader327, %547
  %.0185362 = phi i32 [ 0, %.preheader327 ], [ %548, %547 ]
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %65) #8
  %483 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 0)
          to label %486 unwind label %549

484:                                              ; preds = %547
  %485 = add nuw nsw i32 %.0186363, 1
  %exitcond385.not = icmp eq i32 %485, 3
  br i1 %exitcond385.not, label %.preheader324, label %.preheader327, !llvm.loop !18

486:                                              ; preds = %.preheader326
  invoke void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %65, ptr noundef nonnull align 8 dereferenceable(392) %483, i32 noundef 1)
          to label %487 unwind label %549

487:                                              ; preds = %486
  %488 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %473, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 0)
          to label %489 unwind label %551

489:                                              ; preds = %487
  %490 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %488, ptr noundef nonnull align 8 dereferenceable(542) %65)
          to label %491 unwind label %551

491:                                              ; preds = %489
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %65) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %65) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %65) #8
  %492 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 1)
          to label %493 unwind label %549

493:                                              ; preds = %491
  invoke void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %65, ptr noundef nonnull align 8 dereferenceable(392) %492, i32 noundef 1)
          to label %494 unwind label %549

494:                                              ; preds = %493
  %495 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %473, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 1)
          to label %496 unwind label %551

496:                                              ; preds = %494
  %497 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %495, ptr noundef nonnull align 8 dereferenceable(542) %65)
          to label %498 unwind label %551

498:                                              ; preds = %496
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %65) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %65) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %65) #8
  %499 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 2)
          to label %500 unwind label %549

500:                                              ; preds = %498
  invoke void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %65, ptr noundef nonnull align 8 dereferenceable(392) %499, i32 noundef 1)
          to label %501 unwind label %549

501:                                              ; preds = %500
  %502 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %473, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 2)
          to label %503 unwind label %551

503:                                              ; preds = %501
  %504 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %502, ptr noundef nonnull align 8 dereferenceable(542) %65)
          to label %505 unwind label %551

505:                                              ; preds = %503
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %65) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %65) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %65) #8
  %506 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 3)
          to label %507 unwind label %549

507:                                              ; preds = %505
  invoke void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %65, ptr noundef nonnull align 8 dereferenceable(392) %506, i32 noundef 1)
          to label %508 unwind label %549

508:                                              ; preds = %507
  %509 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %473, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 3)
          to label %510 unwind label %551

510:                                              ; preds = %508
  %511 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %509, ptr noundef nonnull align 8 dereferenceable(542) %65)
          to label %512 unwind label %551

512:                                              ; preds = %510
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %65) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %65) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %65) #8
  %513 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 4)
          to label %514 unwind label %549

514:                                              ; preds = %512
  invoke void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %65, ptr noundef nonnull align 8 dereferenceable(392) %513, i32 noundef 1)
          to label %515 unwind label %549

515:                                              ; preds = %514
  %516 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %473, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 4)
          to label %517 unwind label %551

517:                                              ; preds = %515
  %518 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %516, ptr noundef nonnull align 8 dereferenceable(542) %65)
          to label %519 unwind label %551

519:                                              ; preds = %517
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %65) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %65) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %65) #8
  %520 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 5)
          to label %521 unwind label %549

521:                                              ; preds = %519
  invoke void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %65, ptr noundef nonnull align 8 dereferenceable(392) %520, i32 noundef 1)
          to label %522 unwind label %549

522:                                              ; preds = %521
  %523 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %473, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 5)
          to label %524 unwind label %551

524:                                              ; preds = %522
  %525 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %523, ptr noundef nonnull align 8 dereferenceable(542) %65)
          to label %526 unwind label %551

526:                                              ; preds = %524
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %65) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %65) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %65) #8
  %527 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 6)
          to label %528 unwind label %549

528:                                              ; preds = %526
  invoke void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %65, ptr noundef nonnull align 8 dereferenceable(392) %527, i32 noundef 1)
          to label %529 unwind label %549

529:                                              ; preds = %528
  %530 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %473, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 6)
          to label %531 unwind label %551

531:                                              ; preds = %529
  %532 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %530, ptr noundef nonnull align 8 dereferenceable(542) %65)
          to label %533 unwind label %551

533:                                              ; preds = %531
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %65) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %65) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %65) #8
  %534 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 7)
          to label %535 unwind label %549

535:                                              ; preds = %533
  invoke void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %65, ptr noundef nonnull align 8 dereferenceable(392) %534, i32 noundef 1)
          to label %536 unwind label %549

536:                                              ; preds = %535
  %537 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %473, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 7)
          to label %538 unwind label %551

538:                                              ; preds = %536
  %539 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %537, ptr noundef nonnull align 8 dereferenceable(542) %65)
          to label %540 unwind label %551

540:                                              ; preds = %538
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %65) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %65) #8
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %65) #8
  %541 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %109, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 8)
          to label %542 unwind label %549

542:                                              ; preds = %540
  invoke void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %65, ptr noundef nonnull align 8 dereferenceable(392) %541, i32 noundef 1)
          to label %543 unwind label %549

543:                                              ; preds = %542
  %544 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %473, i32 noundef %.0186363, i32 noundef %.0185362, i32 noundef 8)
          to label %545 unwind label %551

545:                                              ; preds = %543
  %546 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %544, ptr noundef nonnull align 8 dereferenceable(542) %65)
          to label %547 unwind label %551

547:                                              ; preds = %545
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %65) #8
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %65) #8
  %548 = add nuw nsw i32 %.0185362, 1
  %exitcond384.not = icmp eq i32 %548, 3
  br i1 %exitcond384.not, label %484, label %.preheader326, !llvm.loop !19

549:                                              ; preds = %542, %540, %535, %533, %528, %526, %521, %519, %514, %512, %507, %505, %500, %498, %493, %491, %486, %.preheader326
  %550 = landingpad { ptr, i32 }
          cleanup
  br label %553

551:                                              ; preds = %545, %543, %538, %536, %531, %529, %524, %522, %517, %515, %510, %508, %503, %501, %496, %494, %489, %487
  %552 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %65) #8
  br label %553

553:                                              ; preds = %551, %549
  %.pn296 = phi { ptr, i32 } [ %552, %551 ], [ %550, %549 ]
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %65) #8
  br label %860

.preheader324:                                    ; preds = %484, %673
  %indvars.iv = phi i64 [ %indvars.iv.next, %673 ], [ 0, %484 ]
  %554 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %555 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %554, i64 noundef 0) #8
  %556 = load i32, ptr %555, align 4, !tbaa !9
  %557 = icmp sgt i32 %556, 0
  br i1 %557, label %559, label %569

558:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 576, ptr nonnull %66) #8
  invoke void @_ZN9printemps6option6OptionC2Ev(ptr noundef nonnull align 8 dereferenceable(576) %66)
          to label %674 unwind label %679

559:                                              ; preds = %.preheader324
  %560 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %561 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %560, i64 noundef 0) #8
  %562 = load i32, ptr %561, align 4, !tbaa !9
  %563 = add nsw i32 %562, -1
  %564 = trunc nuw nsw i64 %indvars.iv to i32
  %565 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %564, i32 noundef 0, i32 noundef %563)
          to label %566 unwind label %567

566:                                              ; preds = %559
  call void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62) %565, i32 noundef 1)
  br label %569

567:                                              ; preds = %665, %652, %639, %626, %613, %600, %587, %574, %559
  %568 = landingpad { ptr, i32 }
          cleanup
  br label %860

569:                                              ; preds = %.preheader324, %566
  %570 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %571 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %570, i64 noundef 1) #8
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = icmp sgt i32 %572, 0
  br i1 %573, label %574, label %582

574:                                              ; preds = %569
  %575 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %576 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %575, i64 noundef 1) #8
  %577 = load i32, ptr %576, align 4, !tbaa !9
  %578 = add nsw i32 %577, -1
  %579 = trunc nuw nsw i64 %indvars.iv to i32
  %580 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %579, i32 noundef 1, i32 noundef %578)
          to label %581 unwind label %567

581:                                              ; preds = %574
  call void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62) %580, i32 noundef 1)
  br label %582

582:                                              ; preds = %581, %569
  %583 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %584 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %583, i64 noundef 2) #8
  %585 = load i32, ptr %584, align 4, !tbaa !9
  %586 = icmp sgt i32 %585, 0
  br i1 %586, label %587, label %595

587:                                              ; preds = %582
  %588 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %589 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %588, i64 noundef 2) #8
  %590 = load i32, ptr %589, align 4, !tbaa !9
  %591 = add nsw i32 %590, -1
  %592 = trunc nuw nsw i64 %indvars.iv to i32
  %593 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %592, i32 noundef 2, i32 noundef %591)
          to label %594 unwind label %567

594:                                              ; preds = %587
  call void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62) %593, i32 noundef 1)
  br label %595

595:                                              ; preds = %594, %582
  %596 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %597 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %596, i64 noundef 3) #8
  %598 = load i32, ptr %597, align 4, !tbaa !9
  %599 = icmp sgt i32 %598, 0
  br i1 %599, label %600, label %608

600:                                              ; preds = %595
  %601 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %602 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %601, i64 noundef 3) #8
  %603 = load i32, ptr %602, align 4, !tbaa !9
  %604 = add nsw i32 %603, -1
  %605 = trunc nuw nsw i64 %indvars.iv to i32
  %606 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %605, i32 noundef 3, i32 noundef %604)
          to label %607 unwind label %567

607:                                              ; preds = %600
  call void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62) %606, i32 noundef 1)
  br label %608

608:                                              ; preds = %607, %595
  %609 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %610 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %609, i64 noundef 4) #8
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = icmp sgt i32 %611, 0
  br i1 %612, label %613, label %621

613:                                              ; preds = %608
  %614 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %615 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %614, i64 noundef 4) #8
  %616 = load i32, ptr %615, align 4, !tbaa !9
  %617 = add nsw i32 %616, -1
  %618 = trunc nuw nsw i64 %indvars.iv to i32
  %619 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %618, i32 noundef 4, i32 noundef %617)
          to label %620 unwind label %567

620:                                              ; preds = %613
  call void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62) %619, i32 noundef 1)
  br label %621

621:                                              ; preds = %620, %608
  %622 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %623 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %622, i64 noundef 5) #8
  %624 = load i32, ptr %623, align 4, !tbaa !9
  %625 = icmp sgt i32 %624, 0
  br i1 %625, label %626, label %634

626:                                              ; preds = %621
  %627 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %628 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %627, i64 noundef 5) #8
  %629 = load i32, ptr %628, align 4, !tbaa !9
  %630 = add nsw i32 %629, -1
  %631 = trunc nuw nsw i64 %indvars.iv to i32
  %632 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %631, i32 noundef 5, i32 noundef %630)
          to label %633 unwind label %567

633:                                              ; preds = %626
  call void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62) %632, i32 noundef 1)
  br label %634

634:                                              ; preds = %633, %621
  %635 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %636 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %635, i64 noundef 6) #8
  %637 = load i32, ptr %636, align 4, !tbaa !9
  %638 = icmp sgt i32 %637, 0
  br i1 %638, label %639, label %647

639:                                              ; preds = %634
  %640 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %641 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %640, i64 noundef 6) #8
  %642 = load i32, ptr %641, align 4, !tbaa !9
  %643 = add nsw i32 %642, -1
  %644 = trunc nuw nsw i64 %indvars.iv to i32
  %645 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %644, i32 noundef 6, i32 noundef %643)
          to label %646 unwind label %567

646:                                              ; preds = %639
  call void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62) %645, i32 noundef 1)
  br label %647

647:                                              ; preds = %646, %634
  %648 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %649 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %648, i64 noundef 7) #8
  %650 = load i32, ptr %649, align 4, !tbaa !9
  %651 = icmp sgt i32 %650, 0
  br i1 %651, label %652, label %660

652:                                              ; preds = %647
  %653 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %654 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %653, i64 noundef 7) #8
  %655 = load i32, ptr %654, align 4, !tbaa !9
  %656 = add nsw i32 %655, -1
  %657 = trunc nuw nsw i64 %indvars.iv to i32
  %658 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %657, i32 noundef 7, i32 noundef %656)
          to label %659 unwind label %567

659:                                              ; preds = %652
  call void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62) %658, i32 noundef 1)
  br label %660

660:                                              ; preds = %659, %647
  %661 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %662 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %661, i64 noundef 8) #8
  %663 = load i32, ptr %662, align 4, !tbaa !9
  %664 = icmp sgt i32 %663, 0
  br i1 %664, label %665, label %673

665:                                              ; preds = %660
  %666 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %667 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %666, i64 noundef 8) #8
  %668 = load i32, ptr %667, align 4, !tbaa !9
  %669 = add nsw i32 %668, -1
  %670 = trunc nuw nsw i64 %indvars.iv to i32
  %671 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %103, i32 noundef %670, i32 noundef 8, i32 noundef %669)
          to label %672 unwind label %567

672:                                              ; preds = %665
  call void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62) %671, i32 noundef 1)
  br label %673

673:                                              ; preds = %672, %660
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond389.not = icmp eq i64 %indvars.iv.next, 9
  br i1 %exitcond389.not, label %558, label %.preheader324, !llvm.loop !20

674:                                              ; preds = %558
  %675 = getelementptr inbounds i8, ptr %66, i64 224
  store i32 4, ptr %675, align 8, !tbaa !21
  %676 = getelementptr inbounds i8, ptr %66, i64 460
  store i32 5, ptr %676, align 4, !tbaa !42
  store i32 1000, ptr %66, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 1336, ptr nonnull %67) #8
  invoke void @_ZN9printemps6solver5solveIidEENS0_6ResultIT_T0_EEPNS_5model5ModelIS3_S4_EERKNS_6option6OptionE(ptr dead_on_unwind nonnull writable sret(%"struct.printemps::solver::Result") align 8 %67, ptr noundef nonnull %22, ptr noundef nonnull align 8 dereferenceable(576) %66)
          to label %677 unwind label %681

677:                                              ; preds = %674
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %68) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %69) #8
  call void @_ZNSaISt6vectorIiSaIiEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #8
  invoke void @_ZNSt6vectorIS_IiSaIiEESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef 9, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %678 unwind label %683

678:                                              ; preds = %677
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #8
  br label %685

679:                                              ; preds = %558
  %680 = landingpad { ptr, i32 }
          cleanup
  br label %859

681:                                              ; preds = %674
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %858

683:                                              ; preds = %677
  %684 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorIiSaIiEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #8
  br label %857

685:                                              ; preds = %678, %688
  %indvars.iv395 = phi i64 [ 0, %678 ], [ %indvars.iv.next396, %688 ]
  %686 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv395) #8
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %686, i64 noundef 9)
          to label %.preheader322.preheader unwind label %689

.preheader322.preheader:                          ; preds = %685
  %687 = trunc nuw nsw i64 %indvars.iv395 to i32
  br label %.preheader322

.preheader322:                                    ; preds = %.preheader322.preheader, %775
  %indvars.iv391 = phi i64 [ 0, %.preheader322.preheader ], [ %indvars.iv.next392, %775 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %691 unwind label %781

688:                                              ; preds = %775
  %indvars.iv.next396 = add nuw nsw i64 %indvars.iv395, 1
  %exitcond398.not = icmp eq i64 %indvars.iv.next396, 9
  br i1 %exitcond398.not, label %.preheader, label %685, !llvm.loop !44

689:                                              ; preds = %685
  %690 = landingpad { ptr, i32 }
          cleanup
  br label %856

691:                                              ; preds = %.preheader322
  %692 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289) %67, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %693 unwind label %783

693:                                              ; preds = %691
  %694 = trunc nuw nsw i64 %indvars.iv391 to i32
  %695 = invoke noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112) %692, i32 noundef %687, i32 noundef %694, i32 noundef 0)
          to label %696 unwind label %783

696:                                              ; preds = %693
  %697 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv395) #8
  %698 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %697, i64 noundef %indvars.iv391) #8
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = add nsw i32 %699, %695
  store i32 %700, ptr %698, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %701 unwind label %781

701:                                              ; preds = %696
  %702 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289) %67, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %703 unwind label %783

703:                                              ; preds = %701
  %704 = invoke noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112) %702, i32 noundef %687, i32 noundef %694, i32 noundef 1)
          to label %705 unwind label %783

705:                                              ; preds = %703
  %706 = shl nsw i32 %704, 1
  %707 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv395) #8
  %708 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %707, i64 noundef %indvars.iv391) #8
  %709 = load i32, ptr %708, align 4, !tbaa !9
  %710 = add nsw i32 %709, %706
  store i32 %710, ptr %708, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %711 unwind label %781

711:                                              ; preds = %705
  %712 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289) %67, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %713 unwind label %783

713:                                              ; preds = %711
  %714 = invoke noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112) %712, i32 noundef %687, i32 noundef %694, i32 noundef 2)
          to label %715 unwind label %783

715:                                              ; preds = %713
  %716 = mul nsw i32 %714, 3
  %717 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv395) #8
  %718 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %717, i64 noundef %indvars.iv391) #8
  %719 = load i32, ptr %718, align 4, !tbaa !9
  %720 = add nsw i32 %719, %716
  store i32 %720, ptr %718, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %721 unwind label %781

721:                                              ; preds = %715
  %722 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289) %67, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %723 unwind label %783

723:                                              ; preds = %721
  %724 = invoke noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112) %722, i32 noundef %687, i32 noundef %694, i32 noundef 3)
          to label %725 unwind label %783

725:                                              ; preds = %723
  %726 = shl nsw i32 %724, 2
  %727 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv395) #8
  %728 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %727, i64 noundef %indvars.iv391) #8
  %729 = load i32, ptr %728, align 4, !tbaa !9
  %730 = add nsw i32 %729, %726
  store i32 %730, ptr %728, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %731 unwind label %781

731:                                              ; preds = %725
  %732 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289) %67, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %733 unwind label %783

733:                                              ; preds = %731
  %734 = invoke noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112) %732, i32 noundef %687, i32 noundef %694, i32 noundef 4)
          to label %735 unwind label %783

735:                                              ; preds = %733
  %736 = mul nsw i32 %734, 5
  %737 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv395) #8
  %738 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %737, i64 noundef %indvars.iv391) #8
  %739 = load i32, ptr %738, align 4, !tbaa !9
  %740 = add nsw i32 %739, %736
  store i32 %740, ptr %738, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %741 unwind label %781

741:                                              ; preds = %735
  %742 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289) %67, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %743 unwind label %783

743:                                              ; preds = %741
  %744 = invoke noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112) %742, i32 noundef %687, i32 noundef %694, i32 noundef 5)
          to label %745 unwind label %783

745:                                              ; preds = %743
  %746 = mul nsw i32 %744, 6
  %747 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv395) #8
  %748 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %747, i64 noundef %indvars.iv391) #8
  %749 = load i32, ptr %748, align 4, !tbaa !9
  %750 = add nsw i32 %749, %746
  store i32 %750, ptr %748, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %751 unwind label %781

751:                                              ; preds = %745
  %752 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289) %67, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %753 unwind label %783

753:                                              ; preds = %751
  %754 = invoke noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112) %752, i32 noundef %687, i32 noundef %694, i32 noundef 6)
          to label %755 unwind label %783

755:                                              ; preds = %753
  %756 = mul nsw i32 %754, 7
  %757 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv395) #8
  %758 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %757, i64 noundef %indvars.iv391) #8
  %759 = load i32, ptr %758, align 4, !tbaa !9
  %760 = add nsw i32 %759, %756
  store i32 %760, ptr %758, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %761 unwind label %781

761:                                              ; preds = %755
  %762 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289) %67, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %763 unwind label %783

763:                                              ; preds = %761
  %764 = invoke noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112) %762, i32 noundef %687, i32 noundef %694, i32 noundef 7)
          to label %765 unwind label %783

765:                                              ; preds = %763
  %766 = shl nsw i32 %764, 3
  %767 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv395) #8
  %768 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %767, i64 noundef %indvars.iv391) #8
  %769 = load i32, ptr %768, align 4, !tbaa !9
  %770 = add nsw i32 %769, %766
  store i32 %770, ptr %768, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %71) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull @.str.78, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %771 unwind label %781

771:                                              ; preds = %765
  %772 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289) %67, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %773 unwind label %783

773:                                              ; preds = %771
  %774 = invoke noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112) %772, i32 noundef %687, i32 noundef %694, i32 noundef 8)
          to label %775 unwind label %783

775:                                              ; preds = %773
  %776 = mul nsw i32 %774, 9
  %777 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv395) #8
  %778 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %777, i64 noundef %indvars.iv391) #8
  %779 = load i32, ptr %778, align 4, !tbaa !9
  %780 = add nsw i32 %779, %776
  store i32 %780, ptr %778, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #8
  %indvars.iv.next392 = add nuw nsw i64 %indvars.iv391, 1
  %exitcond394.not = icmp eq i64 %indvars.iv.next392, 9
  br i1 %exitcond394.not, label %688, label %.preheader322, !llvm.loop !45

781:                                              ; preds = %765, %755, %745, %735, %725, %715, %705, %696, %.preheader322
  %782 = landingpad { ptr, i32 }
          cleanup
  br label %785

783:                                              ; preds = %773, %771, %763, %761, %753, %751, %743, %741, %733, %731, %723, %721, %713, %711, %703, %701, %693, %691
  %784 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #8
  br label %785

785:                                              ; preds = %783, %781
  %.pn289 = phi { ptr, i32 } [ %784, %783 ], [ %782, %781 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %71) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %70) #8
  br label %856

.preheader:                                       ; preds = %688, %853
  %indvars.iv403 = phi i64 [ %indvars.iv.next404, %853 ], [ 0, %688 ]
  %786 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv403) #8
  %787 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %786, i64 noundef 0) #8
  %788 = load i32, ptr %787, align 4, !tbaa !9
  %789 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %788)
          to label %791 unwind label %851

790:                                              ; preds = %853
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %68) #8
  call void @_ZN9printemps6solver6ResultIidED2Ev(ptr noundef nonnull align 8 dereferenceable(1336) %67) #8
  call void @llvm.lifetime.end.p0(i64 1336, ptr nonnull %67) #8
  call void @llvm.lifetime.end.p0(i64 576, ptr nonnull %66) #8
  call void @_ZN9printemps5model5ModelIidED2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %22) #8
  call void @llvm.lifetime.end.p0(i64 4584, ptr nonnull %22) #8
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %1) #8
  ret i32 0

791:                                              ; preds = %.preheader
  %792 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %789, ptr noundef nonnull @.str.84)
          to label %793 unwind label %851

793:                                              ; preds = %791
  %794 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv403) #8
  %795 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %794, i64 noundef 1) #8
  %796 = load i32, ptr %795, align 4, !tbaa !9
  %797 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %796)
          to label %798 unwind label %851

798:                                              ; preds = %793
  %799 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %797, ptr noundef nonnull @.str.84)
          to label %800 unwind label %851

800:                                              ; preds = %798
  %801 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv403) #8
  %802 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %801, i64 noundef 2) #8
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %803)
          to label %805 unwind label %851

805:                                              ; preds = %800
  %806 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %804, ptr noundef nonnull @.str.84)
          to label %807 unwind label %851

807:                                              ; preds = %805
  %808 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv403) #8
  %809 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %808, i64 noundef 3) #8
  %810 = load i32, ptr %809, align 4, !tbaa !9
  %811 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %810)
          to label %812 unwind label %851

812:                                              ; preds = %807
  %813 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %811, ptr noundef nonnull @.str.84)
          to label %814 unwind label %851

814:                                              ; preds = %812
  %815 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv403) #8
  %816 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %815, i64 noundef 4) #8
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %817)
          to label %819 unwind label %851

819:                                              ; preds = %814
  %820 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %818, ptr noundef nonnull @.str.84)
          to label %821 unwind label %851

821:                                              ; preds = %819
  %822 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv403) #8
  %823 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %822, i64 noundef 5) #8
  %824 = load i32, ptr %823, align 4, !tbaa !9
  %825 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %824)
          to label %826 unwind label %851

826:                                              ; preds = %821
  %827 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %825, ptr noundef nonnull @.str.84)
          to label %828 unwind label %851

828:                                              ; preds = %826
  %829 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv403) #8
  %830 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %829, i64 noundef 6) #8
  %831 = load i32, ptr %830, align 4, !tbaa !9
  %832 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %831)
          to label %833 unwind label %851

833:                                              ; preds = %828
  %834 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %832, ptr noundef nonnull @.str.84)
          to label %835 unwind label %851

835:                                              ; preds = %833
  %836 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv403) #8
  %837 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %836, i64 noundef 7) #8
  %838 = load i32, ptr %837, align 4, !tbaa !9
  %839 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %838)
          to label %840 unwind label %851

840:                                              ; preds = %835
  %841 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %839, ptr noundef nonnull @.str.84)
          to label %842 unwind label %851

842:                                              ; preds = %840
  %843 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IiSaIiEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %indvars.iv403) #8
  %844 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %843, i64 noundef 8) #8
  %845 = load i32, ptr %844, align 4, !tbaa !9
  %846 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %845)
          to label %847 unwind label %851

847:                                              ; preds = %842
  %848 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %846, ptr noundef nonnull @.str.84)
          to label %849 unwind label %851

849:                                              ; preds = %847
  %850 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %853 unwind label %854

851:                                              ; preds = %847, %842, %840, %835, %833, %828, %826, %821, %819, %814, %812, %807, %805, %800, %798, %793, %791, %.preheader
  %852 = landingpad { ptr, i32 }
          cleanup
  br label %856

853:                                              ; preds = %849
  %indvars.iv.next404 = add nuw nsw i64 %indvars.iv403, 1
  %exitcond406.not = icmp eq i64 %indvars.iv.next404, 9
  br i1 %exitcond406.not, label %790, label %.preheader, !llvm.loop !46

854:                                              ; preds = %849
  %855 = landingpad { ptr, i32 }
          cleanup
  br label %856

856:                                              ; preds = %851, %854, %689, %785
  %.pn289.pn.pn = phi { ptr, i32 } [ %.pn289, %785 ], [ %690, %689 ], [ %852, %851 ], [ %855, %854 ]
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #8
  br label %857

857:                                              ; preds = %856, %683
  %.pn289.pn.pn.pn = phi { ptr, i32 } [ %.pn289.pn.pn, %856 ], [ %684, %683 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %68) #8
  call void @_ZN9printemps6solver6ResultIidED2Ev(ptr noundef nonnull align 8 dereferenceable(1336) %67) #8
  br label %858

858:                                              ; preds = %857, %681
  %.pn289.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn289.pn.pn.pn, %857 ], [ %682, %681 ]
  call void @llvm.lifetime.end.p0(i64 1336, ptr nonnull %67) #8
  br label %859

859:                                              ; preds = %858, %679
  %.pn289.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn289.pn.pn.pn.pn, %858 ], [ %680, %679 ]
  call void @llvm.lifetime.end.p0(i64 576, ptr nonnull %66) #8
  br label %860

860:                                              ; preds = %227, %.split.us.split.us.split.us.split.us, %238, %326, %389, %482, %553, %567, %859, %468, %405, %310, %247, %219
  %.pn311.pn = phi { ptr, i32 } [ %.pn269.pn, %219 ], [ %170, %.split.us.split.us.split.us.split.us ], [ %239, %238 ], [ %.pn272.pn, %227 ], [ %.pn307.pn, %310 ], [ %.pn275.pn, %247 ], [ %.pn303.pn, %389 ], [ %.pn278.pn, %326 ], [ %.pn299.pn, %468 ], [ %.pn281.pn, %405 ], [ %.pn296, %553 ], [ %568, %567 ], [ %.pn289.pn.pn.pn.pn.pn, %859 ], [ %.pn284.pn, %482 ]
  call void @_ZN9printemps5model5ModelIidED2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %22) #8
  br label %861

861:                                              ; preds = %860, %210
  %.pn311.pn.pn = phi { ptr, i32 } [ %.pn311.pn, %860 ], [ %211, %210 ]
  call void @llvm.lifetime.end.p0(i64 4584, ptr nonnull %22) #8
  call void @_ZNSt6vectorIS_IiSaIiEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  br label %862

862:                                              ; preds = %861, %.loopexit
  %.pn311.pn.pn.pn = phi { ptr, i32 } [ %.pn311.pn.pn, %861 ], [ %.pn.pn.pn.pn.pn.pn.pn.pn.pn320, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %1) #8
  resume { ptr, i32 } %.pn311.pn.pn.pn
}

; 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) #4

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE16create_variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEEii(ptr noundef nonnull align 8 dereferenceable(4584), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_expressionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiiiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEpLINS0_8VariableEEERS2_RKT_IidE(ptr noundef nonnull align 8 dereferenceable(392), ptr noundef nonnull align 8 dereferenceable(62)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9printemps15model_component15ExpressionProxyIidE7disableEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(4584), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind noalias writable sret(%"class.printemps::model_component::Constraint") align 8, ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9printemps15model_componenteqIidiEEDTcmmicldtfp_4selfEfpK0_cvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EET1_(ptr dead_on_unwind noalias writable sret(%"class.printemps::model_component::Constraint") align 8, ptr noundef nonnull align 8 dereferenceable(392), i32 noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiiiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN9printemps15model_component8VariableIidE6fix_byEi(ptr noundef nonnull align 8 dereferenceable(62), i32 noundef) local_unnamed_addr #6 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9printemps6solver5solveIidEENS0_6ResultIT_T0_EEPNS_5model5ModelIS3_S4_EERKNS_6option6OptionE(ptr dead_on_unwind noalias writable sret(%"struct.printemps::solver::Result") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(576)) local_unnamed_addr #5

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZNK9printemps8solution13NamedSolutionIidE9variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(289), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK9printemps11multi_array10ValueProxyIiE6valuesIJiiiEEEiDpT_(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #7

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

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

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

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

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

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

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

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

!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 = !{i64 0, i64 36, !6}
!6 = !{!7, !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = !{!22, !36, i64 224}
!22 = !{!"_ZTSN9printemps6option6OptionE", !23, i64 0, !26, i64 40, !27, i64 120, !28, i64 144, !29, i64 160, !31, i64 168, !35, i64 224, !37, i64 248, !38, i64 344, !39, i64 400, !40, i64 432}
!23 = !{!"_ZTSN9printemps6option13GeneralOptionE", !10, i64 0, !24, i64 8, !24, i64 16, !24, i64 24, !10, i64 32, !25, i64 36}
!24 = !{!"double", !7, i64 0}
!25 = !{!"bool", !7, i64 0}
!26 = !{!"_ZTSN9printemps6option13PenaltyOptionE", !24, i64 0, !24, i64 8, !24, i64 16, !24, i64 24, !24, i64 32, !24, i64 40, !24, i64 48, !24, i64 56, !10, i64 64, !10, i64 68, !25, i64 72, !25, i64 73, !25, i64 74, !25, i64 75}
!27 = !{!"_ZTSN9printemps6option14ParallelOptionE", !25, i64 0, !25, i64 1, !10, i64 4, !10, i64 8, !25, i64 12, !24, i64 16}
!28 = !{!"_ZTSN9printemps6option16PreprocessOptionE", !25, i64 0, !25, i64 1, !25, i64 2, !25, i64 3, !25, i64 4, !25, i64 5, !25, i64 6, !25, i64 7, !25, i64 8, !25, i64 9, !25, i64 10, !25, i64 11, !25, i64 12, !25, i64 13, !25, i64 14}
!29 = !{!"_ZTSN9printemps6option13RestartOptionE", !30, i64 0}
!30 = !{!"_ZTSN9printemps6option12restart_mode11RestartModeE", !7, i64 0}
!31 = !{!"_ZTSN9printemps6option18NeighborhoodOptionE", !25, i64 0, !25, i64 1, !25, i64 2, !25, i64 3, !25, i64 4, !25, i64 5, !25, i64 6, !25, i64 7, !25, i64 8, !25, i64 9, !25, i64 10, !25, i64 11, !25, i64 12, !25, i64 13, !25, i64 14, !25, i64 15, !25, i64 16, !10, i64 20, !32, i64 24, !24, i64 32, !33, i64 40, !34, i64 44, !25, i64 48}
!32 = !{!"_ZTSN9printemps6option22chain_move_reduce_mode19ChainMoveReduceModeE", !7, i64 0}
!33 = !{!"_ZTSN9printemps6option14selection_mode13SelectionModeE", !7, i64 0}
!34 = !{!"_ZTSN9printemps6option28improvability_screening_mode26ImprovabilityScreeningModeE", !7, i64 0}
!35 = !{!"_ZTSN9printemps6option12OutputOptionE", !36, i64 0, !25, i64 4, !25, i64 5, !10, i64 8, !25, i64 12, !25, i64 13, !25, i64 14, !25, i64 15, !25, i64 16, !25, i64 17, !25, i64 18}
!36 = !{!"_ZTSN9printemps6option7verbose7VerboseE", !7, i64 0}
!37 = !{!"_ZTSN9printemps6option10PDLPOptionE", !25, i64 0, !10, i64 4, !24, i64 8, !24, i64 16, !24, i64 24, !24, i64 32, !24, i64 40, !24, i64 48, !24, i64 56, !24, i64 64, !10, i64 72, !10, i64 76, !10, i64 80, !25, i64 84, !10, i64 88}
!38 = !{!"_ZTSN9printemps6option18LagrangeDualOptionE", !25, i64 0, !10, i64 4, !24, i64 8, !24, i64 16, !24, i64 24, !24, i64 32, !24, i64 40, !10, i64 48, !10, i64 52}
!39 = !{!"_ZTSN9printemps6option17LocalSearchOptionE", !25, i64 0, !10, i64 4, !24, i64 8, !24, i64 16, !10, i64 24, !10, i64 28}
!40 = !{!"_ZTSN9printemps6option16TabuSearchOptionE", !10, i64 0, !24, i64 8, !24, i64 16, !10, i64 24, !10, i64 28, !24, i64 32, !24, i64 40, !24, i64 48, !41, i64 56, !24, i64 64, !24, i64 72, !24, i64 80, !24, i64 88, !25, i64 96, !25, i64 97, !25, i64 98, !25, i64 99, !25, i64 100, !25, i64 101, !10, i64 104, !10, i64 108, !24, i64 112, !24, i64 120, !25, i64 128, !10, i64 132, !10, i64 136}
!41 = !{!"_ZTSN9printemps6option9tabu_mode8TabuModeE", !7, i64 0}
!42 = !{!22, !10, i64 460}
!43 = !{!22, !10, i64 0}
!44 = distinct !{!44, !12}
!45 = distinct !{!45, !12}
!46 = distinct !{!46, !12}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass