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

; 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::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.printemps::model::Model" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.469", %"class.std::vector.474", %"class.std::vector.479", %"class.printemps::model_component::Objective", %"class.std::unordered_map.509", %"class.std::vector.523", %"class.std::vector.523", %"class.std::vector.523", i8, i8, i8, i8, i8, i8, double, %"class.std::vector.528", %"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.533", %"class.std::vector.533", %"class.std::vector.538", %"class.printemps::neighborhood::Neighborhood", %"class.printemps::preprocess::ProblemSizeReducer", %"class.std::function.565" }
%"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.469" = type { %"struct.std::_Vector_base.470" }
%"struct.std::_Vector_base.470" = 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.474" = type { %"struct.std::_Vector_base.475" }
%"struct.std::_Vector_base.475" = 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.479" = type { %"struct.std::_Vector_base.480" }
%"struct.std::_Vector_base.480" = 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.484", %"class.std::unordered_map.484", %"class.std::unordered_map.484", %"class.std::unordered_map.484", %"class.std::vector.504", %"class.std::vector.504", %"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.484" = type { %"class.std::_Hashtable.485" }
%"class.std::_Hashtable.485" = 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.504" = type { %"struct.std::_Vector_base.505" }
%"struct.std::_Vector_base.505" = 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.509" = type { %"class.std::_Hashtable.510" }
%"class.std::_Hashtable.510" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.523" = type { %"struct.std::_Vector_base.524" }
%"struct.std::_Vector_base.524" = 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.528" = type { %"struct.std::_Vector_base.529" }
%"struct.std::_Vector_base.529" = 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.504", %"class.std::vector.504", %"class.std::vector.504" }
%"struct.printemps::model_component::VariableTypeReference" = type { %"class.std::vector.504", %"class.std::vector.504", %"class.std::vector.504", %"class.std::vector.504", %"class.std::vector.504" }
%"struct.printemps::model_component::ConstraintReference" = type { %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533" }
%"struct.printemps::model_component::ConstraintTypeReference" = type { %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533" }
%"class.std::vector.533" = type { %"struct.std::_Vector_base.534" }
%"struct.std::_Vector_base.534" = 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.538" = type { %"struct.std::_Vector_base.539" }
%"struct.std::_Vector_base.539" = 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.555", %"class.std::vector.560", 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.543", %"class.std::vector.548", 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.543" = type { %"struct.std::_Vector_base.544" }
%"struct.std::_Vector_base.544" = 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.548" = type { %"struct.std::_Vector_base.549" }
%"struct.std::_Vector_base.549" = 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.553" }
%"class.std::function.553" = type { %"class.std::_Function_base", ptr }
%"class.std::vector.555" = type { %"struct.std::_Vector_base.556" }
%"struct.std::_Vector_base.556" = 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.560" = type { %"struct.std::_Vector_base.561" }
%"struct.std::_Vector_base.561" = 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.565" = type { %"class.std::_Function_base", ptr }
%"class.std::allocator" = type { i8 }
%"class.std::initializer_list.568" = type { ptr, i64 }
%"class.std::allocator.466" = 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.586", %"class.std::unordered_map.600", %"class.std::unordered_map.600", %"class.std::unordered_map.600", %"class.std::__cxx11::basic_string", i32, i32, double, double, double, i8, [7 x i8] }>
%"class.std::unordered_map.586" = type { %"class.std::_Hashtable.587" }
%"class.std::_Hashtable.587" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.600" = type { %"class.std::_Hashtable.601" }
%"class.std::_Hashtable.601" = 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.600", %"class.std::unordered_map.614", %"class.std::unordered_map.614" }
%"class.std::unordered_map.614" = type { %"class.std::_Hashtable.615" }
%"class.std::_Hashtable.615" = 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.628", %"class.std::__cxx11::basic_string", i32, i32, i8, [7 x i8] }>
%"class.std::vector.628" = type { %"struct.std::_Vector_base.629" }
%"struct.std::_Vector_base.629" = 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 }

@.str.70 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [10 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 i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca %"class.std::vector", align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.printemps::model::Model", align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca %"class.std::vector", align 8
  %15 = alloca %"class.std::initializer_list.568", align 8
  %16 = alloca [2 x i32], align 4
  %17 = alloca %"class.std::allocator.466", align 1
  %18 = alloca ptr, align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca ptr, align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca i32, align 4
  %25 = alloca %"class.printemps::model_component::Expression", align 8
  %26 = alloca %"class.std::vector", align 8
  %27 = alloca %"class.std::initializer_list.568", align 8
  %28 = alloca [2 x i32], align 4
  %29 = alloca %"class.std::allocator.466", align 1
  %30 = alloca ptr, align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca %"class.printemps::model_component::Expression", align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = alloca i32, align 4
  %38 = alloca %"class.printemps::model_component::Constraint", align 8
  %39 = alloca %"class.std::vector", align 8
  %40 = alloca %"class.std::initializer_list.568", align 8
  %41 = alloca [2 x i32], align 4
  %42 = alloca %"class.std::allocator.466", align 1
  %43 = alloca ptr, align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator", align 1
  %46 = alloca i32, align 4
  %47 = alloca %"class.printemps::model_component::Constraint", align 8
  %48 = alloca %"class.printemps::model_component::Expression", align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator", align 1
  %52 = alloca i32, align 4
  %53 = alloca %"class.printemps::model_component::Constraint", align 8
  %54 = alloca ptr, align 8
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator", align 1
  %57 = alloca i32, align 4
  %58 = alloca %"class.printemps::model_component::Expression", align 8
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca %"struct.printemps::option::Option", align 8
  %62 = alloca %"struct.printemps::solver::Result", align 8
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #7
  store i32 100, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #7
  store i32 30, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #7
  store i32 100, ptr %4, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %5) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #7
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %63

63:                                               ; preds = %72, %0
  %64 = load i32, ptr %6, align 4, !tbaa !5
  %65 = load i32, ptr %2, align 4, !tbaa !5
  %66 = icmp slt i32 %64, %65
  br i1 %66, label %68, label %67

67:                                               ; preds = %63
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  br label %79

68:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %69 = call i32 @rand() #7
  %70 = srem i32 %69, 50
  store i32 %70, ptr %7, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %71 unwind label %75

71:                                               ; preds = %68
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %72

72:                                               ; preds = %71
  %73 = load i32, ptr %6, align 4, !tbaa !5
  %74 = add nsw i32 %73, 1
  store i32 %74, ptr %6, align 4, !tbaa !5
  br label %63, !llvm.loop !9

75:                                               ; preds = %68
  %76 = landingpad { ptr, i32 }
          cleanup
  %77 = extractvalue { ptr, i32 } %76, 0
  store ptr %77, ptr %8, align 8
  %78 = extractvalue { ptr, i32 } %76, 1
  store i32 %78, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #7
  br label %495

79:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 4584, ptr %10) #7
  invoke void @_ZN9printemps5model5ModelIidEC2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %10)
          to label %80 unwind label %107

80:                                               ; preds = %79
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.70, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %81 unwind label %111

81:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %82 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %82, ptr %16, align 4, !tbaa !5
  %83 = getelementptr inbounds i32, ptr %16, i64 1
  %84 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %84, ptr %83, align 4, !tbaa !5
  %85 = getelementptr inbounds %"class.std::initializer_list.568", ptr %15, i32 0, i32 0
  store ptr %16, ptr %85, align 8, !tbaa !11
  %86 = getelementptr inbounds %"class.std::initializer_list.568", ptr %15, i32 0, i32 1
  store i64 2, ptr %86, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  %87 = getelementptr inbounds { ptr, i64 }, ptr %15, i32 0, i32 0
  %88 = load ptr, ptr %87, align 8
  %89 = getelementptr inbounds { ptr, i64 }, ptr %15, i32 0, i32 1
  %90 = load i64, ptr %89, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr %88, i64 %90, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %91 unwind label %115

91:                                               ; preds = %81
  %92 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE16create_variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEEii(ptr noundef nonnull align 8 dereferenceable(4584) %10, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(24) %14, i32 noundef 0, i32 noundef 1)
          to label %93 unwind label %119

93:                                               ; preds = %91
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  store ptr %92, ptr %11, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.71, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %94 unwind label %125

94:                                               ; preds = %93
  %95 = load i32, ptr %3, align 4, !tbaa !5
  %96 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE16create_variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiii(ptr noundef nonnull align 8 dereferenceable(4584) %10, ptr noundef nonnull align 8 dereferenceable(32) %19, i32 noundef %95, i32 noundef 0, i32 noundef 1)
          to label %97 unwind label %129

97:                                               ; preds = %94
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  store ptr %96, ptr %18, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %98 unwind label %134

98:                                               ; preds = %97
  %99 = load i32, ptr %3, align 4, !tbaa !5
  %100 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_expressionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584) %10, ptr noundef nonnull align 8 dereferenceable(32) %22, i32 noundef %99)
          to label %101 unwind label %138

101:                                              ; preds = %98
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  store ptr %100, ptr %21, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  store i32 0, ptr %24, align 4, !tbaa !5
  br label %102

102:                                              ; preds = %160, %101
  %103 = load i32, ptr %24, align 4, !tbaa !5
  %104 = load i32, ptr %3, align 4, !tbaa !5
  %105 = icmp slt i32 %103, %104
  br i1 %105, label %143, label %106

106:                                              ; preds = %102
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %177

107:                                              ; preds = %79
  %108 = landingpad { ptr, i32 }
          cleanup
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %8, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %9, align 4
  br label %494

111:                                              ; preds = %80
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %8, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %9, align 4
  br label %124

115:                                              ; preds = %81
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %8, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %9, align 4
  br label %123

119:                                              ; preds = %91
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %8, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %9, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  br label %123

123:                                              ; preds = %119, %115
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %124

124:                                              ; preds = %123, %111
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #7
  br label %493

125:                                              ; preds = %93
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %8, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %9, align 4
  br label %133

129:                                              ; preds = %94
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %8, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %133

133:                                              ; preds = %129, %125
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #7
  br label %492

134:                                              ; preds = %97
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %8, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %9, align 4
  br label %142

138:                                              ; preds = %98
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %8, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %142

142:                                              ; preds = %138, %134
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  br label %491

143:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 392, ptr %25) #7
  %144 = load ptr, ptr %11, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  store i32 -1, ptr %28, align 4, !tbaa !5
  %145 = getelementptr inbounds i32, ptr %28, i64 1
  %146 = load i32, ptr %24, align 4, !tbaa !5
  store i32 %146, ptr %145, align 4, !tbaa !5
  %147 = getelementptr inbounds %"class.std::initializer_list.568", ptr %27, i32 0, i32 0
  store ptr %28, ptr %147, align 8, !tbaa !11
  %148 = getelementptr inbounds %"class.std::initializer_list.568", ptr %27, i32 0, i32 1
  store i64 2, ptr %148, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  %149 = getelementptr inbounds { ptr, i64 }, ptr %27, i32 0, i32 0
  %150 = load ptr, ptr %149, align 8
  %151 = getelementptr inbounds { ptr, i64 }, ptr %27, i32 0, i32 1
  %152 = load i64, ptr %151, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr %150, i64 %152, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %153 unwind label %163

153:                                              ; preds = %143
  invoke void @_ZN9printemps15model_component13VariableProxyIidE3dotISt6vectorIiSaIiEEEENS0_10ExpressionIidEERKS6_RKT_(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Expression") align 8 %25, ptr noundef nonnull align 8 dereferenceable(88) %144, ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %5)
          to label %154 unwind label %167

154:                                              ; preds = %153
  %155 = load ptr, ptr %21, align 8, !tbaa !16
  %156 = load i32, ptr %24, align 4, !tbaa !5
  %157 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %155, i32 noundef %156)
          to label %158 unwind label %171

158:                                              ; preds = %154
  %159 = call noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(392) %157, ptr noundef nonnull align 8 dereferenceable(392) %25) #7
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %25) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #7
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %25) #7
  br label %160

160:                                              ; preds = %158
  %161 = load i32, ptr %24, align 4, !tbaa !5
  %162 = add nsw i32 %161, 1
  store i32 %162, ptr %24, align 4, !tbaa !5
  br label %102, !llvm.loop !17

163:                                              ; preds = %143
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %8, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %9, align 4
  br label %176

167:                                              ; preds = %153
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %8, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %9, align 4
  br label %175

171:                                              ; preds = %154
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %8, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %9, align 4
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %25) #7
  br label %175

175:                                              ; preds = %171, %167
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #7
  br label %176

176:                                              ; preds = %175, %163
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %491

177:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.73, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %178 unwind label %192

178:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 392, ptr %33) #7
  %179 = load ptr, ptr %18, align 8, !tbaa !16
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE3sumEv(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Expression") align 8 %33, ptr noundef nonnull align 8 dereferenceable(88) %179)
          to label %180 unwind label %196

180:                                              ; preds = %178
  %181 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE17create_expressionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_15model_component10ExpressionIidEE(ptr noundef nonnull align 8 dereferenceable(4584) %10, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(392) %33)
          to label %182 unwind label %200

182:                                              ; preds = %180
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %33) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %33) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  store ptr %181, ptr %30, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %183 unwind label %206

183:                                              ; preds = %182
  %184 = load i32, ptr %2, align 4, !tbaa !5
  %185 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584) %10, ptr noundef nonnull align 8 dereferenceable(32) %35, i32 noundef %184)
          to label %186 unwind label %210

186:                                              ; preds = %183
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  store ptr %185, ptr %34, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  store i32 0, ptr %37, align 4, !tbaa !5
  br label %187

187:                                              ; preds = %233, %186
  %188 = load i32, ptr %37, align 4, !tbaa !5
  %189 = load i32, ptr %2, align 4, !tbaa !5
  %190 = icmp slt i32 %188, %189
  br i1 %190, label %215, label %191

191:                                              ; preds = %187
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %250

192:                                              ; preds = %177
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %8, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %9, align 4
  br label %205

196:                                              ; preds = %178
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %8, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %9, align 4
  br label %204

200:                                              ; preds = %180
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %8, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %9, align 4
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %33) #7
  br label %204

204:                                              ; preds = %200, %196
  call void @llvm.lifetime.end.p0(i64 392, ptr %33) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %205

205:                                              ; preds = %204, %192
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  br label %490

206:                                              ; preds = %182
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %8, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %9, align 4
  br label %214

210:                                              ; preds = %183
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %8, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %214

214:                                              ; preds = %210, %206
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  br label %489

215:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 544, ptr %38) #7
  %216 = load ptr, ptr %11, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %217 = load i32, ptr %37, align 4, !tbaa !5
  store i32 %217, ptr %41, align 4, !tbaa !5
  %218 = getelementptr inbounds i32, ptr %41, i64 1
  store i32 -1, ptr %218, align 4, !tbaa !5
  %219 = getelementptr inbounds %"class.std::initializer_list.568", ptr %40, i32 0, i32 0
  store ptr %41, ptr %219, align 8, !tbaa !11
  %220 = getelementptr inbounds %"class.std::initializer_list.568", ptr %40, i32 0, i32 1
  store i64 2, ptr %220, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  %221 = getelementptr inbounds { ptr, i64 }, ptr %40, i32 0, i32 0
  %222 = load ptr, ptr %221, align 8
  %223 = getelementptr inbounds { ptr, i64 }, ptr %40, i32 0, i32 1
  %224 = load i64, ptr %223, align 8
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr %222, i64 %224, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %225 unwind label %236

225:                                              ; preds = %215
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Constraint") align 8 %38, ptr noundef nonnull align 8 dereferenceable(88) %216, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %226 unwind label %240

226:                                              ; preds = %225
  %227 = load ptr, ptr %34, align 8, !tbaa !16
  %228 = load i32, ptr %37, align 4, !tbaa !5
  %229 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %227, i32 noundef %228)
          to label %230 unwind label %244

230:                                              ; preds = %226
  %231 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %229, ptr noundef nonnull align 8 dereferenceable(542) %38)
          to label %232 unwind label %244

232:                                              ; preds = %230
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #7
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 544, ptr %38) #7
  br label %233

233:                                              ; preds = %232
  %234 = load i32, ptr %37, align 4, !tbaa !5
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %37, align 4, !tbaa !5
  br label %187, !llvm.loop !18

236:                                              ; preds = %215
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %8, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %9, align 4
  br label %249

240:                                              ; preds = %225
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %8, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %9, align 4
  br label %248

244:                                              ; preds = %230, %226
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %8, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %9, align 4
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %38) #7
  br label %248

248:                                              ; preds = %244, %240
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #7
  br label %249

249:                                              ; preds = %248, %236
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %42) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 544, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %489

250:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %251 unwind label %260

251:                                              ; preds = %250
  %252 = load i32, ptr %3, align 4, !tbaa !5
  %253 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584) %10, ptr noundef nonnull align 8 dereferenceable(32) %44, i32 noundef %252)
          to label %254 unwind label %264

254:                                              ; preds = %251
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  store ptr %253, ptr %43, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %255

255:                                              ; preds = %287, %254
  %256 = load i32, ptr %46, align 4, !tbaa !5
  %257 = load i32, ptr %3, align 4, !tbaa !5
  %258 = icmp slt i32 %256, %257
  br i1 %258, label %269, label %259

259:                                              ; preds = %255
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %309

260:                                              ; preds = %250
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %8, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %9, align 4
  br label %268

264:                                              ; preds = %251
  %265 = landingpad { ptr, i32 }
          cleanup
  %266 = extractvalue { ptr, i32 } %265, 0
  store ptr %266, ptr %8, align 8
  %267 = extractvalue { ptr, i32 } %265, 1
  store i32 %267, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %268

268:                                              ; preds = %264, %260
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  br label %488

269:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 544, ptr %47) #7
  %270 = load ptr, ptr %21, align 8, !tbaa !16
  %271 = load i32, ptr %46, align 4, !tbaa !5
  %272 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %270, i32 noundef %271)
          to label %273 unwind label %290

273:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 392, ptr %48) #7
  %274 = load i32, ptr %4, align 4, !tbaa !5
  %275 = load ptr, ptr %18, align 8, !tbaa !16
  %276 = load i32, ptr %46, align 4, !tbaa !5
  %277 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %275, i32 noundef %276)
          to label %278 unwind label %294

278:                                              ; preds = %273
  invoke void @_ZN9printemps15model_componentmlIidiNS0_8VariableEEEDTmlfpK_cldtfp0_13to_expressionEET1_RKT2_IT_T0_E(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Expression") align 8 %48, i32 noundef %274, ptr noundef nonnull align 8 dereferenceable(62) %277)
          to label %279 unwind label %294

279:                                              ; preds = %278
  invoke void @_ZN9printemps15model_componentleIidEEDTcmmicldtfp_4selfEcldtfp0_4selfEcvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EESA_(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Constraint") align 8 %47, ptr noundef nonnull align 8 dereferenceable(392) %272, ptr noundef nonnull align 8 dereferenceable(392) %48)
          to label %280 unwind label %298

280:                                              ; preds = %279
  %281 = load ptr, ptr %43, align 8, !tbaa !16
  %282 = load i32, ptr %46, align 4, !tbaa !5
  %283 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %281, i32 noundef %282)
          to label %284 unwind label %302

284:                                              ; preds = %280
  %285 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %283, ptr noundef nonnull align 8 dereferenceable(542) %47)
          to label %286 unwind label %302

286:                                              ; preds = %284
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #7
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %48) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 544, ptr %47) #7
  br label %287

287:                                              ; preds = %286
  %288 = load i32, ptr %46, align 4, !tbaa !5
  %289 = add nsw i32 %288, 1
  store i32 %289, ptr %46, align 4, !tbaa !5
  br label %255, !llvm.loop !19

290:                                              ; preds = %269
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %8, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %9, align 4
  br label %308

294:                                              ; preds = %278, %273
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %8, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %9, align 4
  br label %307

298:                                              ; preds = %279
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %8, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %9, align 4
  br label %306

302:                                              ; preds = %284, %280
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %8, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %9, align 4
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %47) #7
  br label %306

306:                                              ; preds = %302, %298
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %48) #7
  br label %307

307:                                              ; preds = %306, %294
  call void @llvm.lifetime.end.p0(i64 392, ptr %48) #7
  br label %308

308:                                              ; preds = %307, %290
  call void @llvm.lifetime.end.p0(i64 544, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %488

309:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.75, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %310 unwind label %321

310:                                              ; preds = %309
  %311 = load i32, ptr %3, align 4, !tbaa !5
  %312 = sub nsw i32 %311, 1
  %313 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584) %10, ptr noundef nonnull align 8 dereferenceable(32) %50, i32 noundef %312)
          to label %314 unwind label %325

314:                                              ; preds = %310
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  store ptr %313, ptr %49, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #7
  store i32 0, ptr %52, align 4, !tbaa !5
  br label %315

315:                                              ; preds = %347, %314
  %316 = load i32, ptr %52, align 4, !tbaa !5
  %317 = load i32, ptr %3, align 4, !tbaa !5
  %318 = sub nsw i32 %317, 1
  %319 = icmp slt i32 %316, %318
  br i1 %319, label %330, label %320

320:                                              ; preds = %315
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  br label %359

321:                                              ; preds = %309
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %8, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %9, align 4
  br label %329

325:                                              ; preds = %310
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %8, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #7
  br label %329

329:                                              ; preds = %325, %321
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #7
  br label %487

330:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 544, ptr %53) #7
  %331 = load ptr, ptr %18, align 8, !tbaa !16
  %332 = load i32, ptr %52, align 4, !tbaa !5
  %333 = add nsw i32 %332, 1
  %334 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %331, i32 noundef %333)
          to label %335 unwind label %350

335:                                              ; preds = %330
  %336 = load ptr, ptr %18, align 8, !tbaa !16
  %337 = load i32, ptr %52, align 4, !tbaa !5
  %338 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %336, i32 noundef %337)
          to label %339 unwind label %350

339:                                              ; preds = %335
  invoke void @_ZN9printemps15model_componentleIidNS0_8VariableES2_EEDTcmmicldtfp_13to_expressionEcldtfp0_13to_expressionEcvNS0_10ConstraintIT_T0_EE_EERKT1_IS4_S5_ERKT2_IS4_S5_E(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Constraint") align 8 %53, ptr noundef nonnull align 8 dereferenceable(62) %334, ptr noundef nonnull align 8 dereferenceable(62) %338)
          to label %340 unwind label %350

340:                                              ; preds = %339
  %341 = load ptr, ptr %49, align 8, !tbaa !16
  %342 = load i32, ptr %52, align 4, !tbaa !5
  %343 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %341, i32 noundef %342)
          to label %344 unwind label %354

344:                                              ; preds = %340
  %345 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %343, ptr noundef nonnull align 8 dereferenceable(542) %53)
          to label %346 unwind label %354

346:                                              ; preds = %344
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %53) #7
  call void @llvm.lifetime.end.p0(i64 544, ptr %53) #7
  br label %347

347:                                              ; preds = %346
  %348 = load i32, ptr %52, align 4, !tbaa !5
  %349 = add nsw i32 %348, 1
  store i32 %349, ptr %52, align 4, !tbaa !5
  br label %315, !llvm.loop !20

350:                                              ; preds = %339, %335, %330
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %8, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %9, align 4
  br label %358

354:                                              ; preds = %344, %340
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %8, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %9, align 4
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %53) #7
  br label %358

358:                                              ; preds = %354, %350
  call void @llvm.lifetime.end.p0(i64 544, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  br label %487

359:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef @.str.76, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %360 unwind label %372

360:                                              ; preds = %359
  %361 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE17create_expressionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(4584) %10, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %362 unwind label %376

362:                                              ; preds = %360
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  store ptr %361, ptr %54, align 8, !tbaa !16
  %363 = load ptr, ptr %30, align 8, !tbaa !16
  %364 = load ptr, ptr %54, align 8, !tbaa !16
  %365 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps15model_component15ExpressionProxyIidEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(88) %364, ptr noundef nonnull align 8 dereferenceable(88) %363)
          to label %366 unwind label %381

366:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #7
  store i32 0, ptr %57, align 4, !tbaa !5
  br label %367

367:                                              ; preds = %397, %366
  %368 = load i32, ptr %57, align 4, !tbaa !5
  %369 = load i32, ptr %3, align 4, !tbaa !5
  %370 = icmp slt i32 %368, %369
  br i1 %370, label %385, label %371

371:                                              ; preds = %367
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  br label %409

372:                                              ; preds = %359
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %8, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %9, align 4
  br label %380

376:                                              ; preds = %360
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %8, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %380

380:                                              ; preds = %376, %372
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  br label %486

381:                                              ; preds = %409, %362
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %8, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %9, align 4
  br label %486

385:                                              ; preds = %367
  call void @llvm.lifetime.start.p0(i64 392, ptr %58) #7
  %386 = load i32, ptr %57, align 4, !tbaa !5
  %387 = sitofp i32 %386 to double
  %388 = fmul double 1.000000e-05, %387
  %389 = load ptr, ptr %21, align 8, !tbaa !16
  %390 = load i32, ptr %57, align 4, !tbaa !5
  %391 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %389, i32 noundef %390)
          to label %392 unwind label %400

392:                                              ; preds = %385
  invoke void @_ZN9printemps15model_componentmlIiddEENS0_10ExpressionIT_T0_EET1_RKS5_(ptr dead_on_unwind writable sret(%"class.printemps::model_component::Expression") align 8 %58, double noundef %388, ptr noundef nonnull align 8 dereferenceable(392) %391)
          to label %393 unwind label %400

393:                                              ; preds = %392
  %394 = load ptr, ptr %54, align 8, !tbaa !16
  %395 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps15model_component15ExpressionProxyIidEpLERKNS0_10ExpressionIidEE(ptr noundef nonnull align 8 dereferenceable(88) %394, ptr noundef nonnull align 8 dereferenceable(392) %58)
          to label %396 unwind label %404

396:                                              ; preds = %393
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %58) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %58) #7
  br label %397

397:                                              ; preds = %396
  %398 = load i32, ptr %57, align 4, !tbaa !5
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr %57, align 4, !tbaa !5
  br label %367, !llvm.loop !21

400:                                              ; preds = %392, %385
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %8, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %9, align 4
  br label %408

404:                                              ; preds = %393
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %8, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %9, align 4
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %58) #7
  br label %408

408:                                              ; preds = %404, %400
  call void @llvm.lifetime.end.p0(i64 392, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  br label %486

409:                                              ; preds = %371
  %410 = load ptr, ptr %54, align 8, !tbaa !16
  invoke void @_ZN9printemps5model5ModelIidE8minimizeINS_15model_component15ExpressionProxyEEEvRKT_IidE(ptr noundef nonnull align 8 dereferenceable(4584) %10, ptr noundef nonnull align 8 dereferenceable(88) %410)
          to label %411 unwind label %381

411:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #7
  store i32 0, ptr %59, align 4, !tbaa !5
  br label %412

412:                                              ; preds = %427, %411
  %413 = load i32, ptr %59, align 4, !tbaa !5
  %414 = load i32, ptr %2, align 4, !tbaa !5
  %415 = icmp slt i32 %413, %414
  br i1 %415, label %417, label %416

416:                                              ; preds = %412
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  br label %434

417:                                              ; preds = %412
  %418 = load ptr, ptr %11, align 8, !tbaa !16
  %419 = load i32, ptr %59, align 4, !tbaa !5
  %420 = call i32 @rand() #7
  %421 = load i32, ptr %3, align 4, !tbaa !5
  %422 = srem i32 %420, %421
  %423 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %418, i32 noundef %419, i32 noundef %422)
          to label %424 unwind label %430

424:                                              ; preds = %417
  %425 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %423, i32 noundef 1)
          to label %426 unwind label %430

426:                                              ; preds = %424
  br label %427

427:                                              ; preds = %426
  %428 = load i32, ptr %59, align 4, !tbaa !5
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr %59, align 4, !tbaa !5
  br label %412, !llvm.loop !22

430:                                              ; preds = %424, %417
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %8, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  br label %486

434:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #7
  store i32 0, ptr %60, align 4, !tbaa !5
  br label %435

435:                                              ; preds = %447, %434
  %436 = load i32, ptr %60, align 4, !tbaa !5
  %437 = load i32, ptr %3, align 4, !tbaa !5
  %438 = icmp slt i32 %436, %437
  br i1 %438, label %440, label %439

439:                                              ; preds = %435
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  br label %454

440:                                              ; preds = %435
  %441 = load ptr, ptr %18, align 8, !tbaa !16
  %442 = load i32, ptr %60, align 4, !tbaa !5
  %443 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %441, i32 noundef %442)
          to label %444 unwind label %450

444:                                              ; preds = %440
  %445 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %443, i32 noundef 1)
          to label %446 unwind label %450

446:                                              ; preds = %444
  br label %447

447:                                              ; preds = %446
  %448 = load i32, ptr %60, align 4, !tbaa !5
  %449 = add nsw i32 %448, 1
  store i32 %449, ptr %60, align 4, !tbaa !5
  br label %435, !llvm.loop !23

450:                                              ; preds = %444, %440
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %8, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  br label %486

454:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 576, ptr %61) #7
  invoke void @_ZN9printemps6option6OptionC2Ev(ptr noundef nonnull align 8 dereferenceable(576) %61)
          to label %455 unwind label %472

455:                                              ; preds = %454
  %456 = getelementptr inbounds %"struct.printemps::option::Option", ptr %61, i32 0, i32 6
  %457 = getelementptr inbounds %"struct.printemps::option::NeighborhoodOption", ptr %456, i32 0, i32 22
  store i32 1, ptr %457, align 8, !tbaa !24
  %458 = getelementptr inbounds %"struct.printemps::option::Option", ptr %61, i32 0, i32 12
  %459 = getelementptr inbounds %"struct.printemps::option::TabuSearchOption", ptr %458, i32 0, i32 9
  store i32 1, ptr %459, align 8, !tbaa !45
  %460 = getelementptr inbounds %"struct.printemps::option::Option", ptr %61, i32 0, i32 7
  %461 = getelementptr inbounds %"struct.printemps::option::OutputOption", ptr %460, i32 0, i32 0
  store i32 4, ptr %461, align 8, !tbaa !46
  call void @llvm.lifetime.start.p0(i64 1336, ptr %62) #7
  invoke void @_ZN9printemps6solver5solveIidEENS0_6ResultIT_T0_EEPNS_5model5ModelIS3_S4_EERKNS_6option6OptionE(ptr dead_on_unwind writable sret(%"struct.printemps::solver::Result") align 8 %62, ptr noundef %10, ptr noundef nonnull align 8 dereferenceable(576) %61)
          to label %462 unwind label %476

462:                                              ; preds = %455
  %463 = getelementptr inbounds %"struct.printemps::solver::Result", ptr %62, i32 0, i32 0
  invoke void @_ZNK9printemps8solution13NamedSolutionIidE21print_variable_valuesEv(ptr noundef nonnull align 8 dereferenceable(289) %463)
          to label %464 unwind label %480

464:                                              ; preds = %462
  %465 = getelementptr inbounds %"struct.printemps::solver::Result", ptr %62, i32 0, i32 0
  invoke void @_ZNK9printemps8solution13NamedSolutionIidE23print_expression_valuesEv(ptr noundef nonnull align 8 dereferenceable(289) %465)
          to label %466 unwind label %480

466:                                              ; preds = %464
  %467 = getelementptr inbounds %"struct.printemps::solver::Result", ptr %62, i32 0, i32 0
  invoke void @_ZNK9printemps8solution13NamedSolutionIidE23print_constraint_valuesEv(ptr noundef nonnull align 8 dereferenceable(289) %467)
          to label %468 unwind label %480

468:                                              ; preds = %466
  %469 = getelementptr inbounds %"struct.printemps::solver::Result", ptr %62, i32 0, i32 0
  invoke void @_ZNK9printemps8solution13NamedSolutionIidE22print_violation_valuesEv(ptr noundef nonnull align 8 dereferenceable(289) %469)
          to label %470 unwind label %480

470:                                              ; preds = %468
  store i32 0, ptr %1, align 4
  call void @_ZN9printemps6solver6ResultIidED2Ev(ptr noundef nonnull align 8 dereferenceable(1336) %62) #7
  call void @llvm.lifetime.end.p0(i64 1336, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 576, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @_ZN9printemps5model5ModelIidED2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %10) #7
  call void @llvm.lifetime.end.p0(i64 4584, ptr %10) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #7
  %471 = load i32, ptr %1, align 4
  ret i32 %471

472:                                              ; preds = %454
  %473 = landingpad { ptr, i32 }
          cleanup
  %474 = extractvalue { ptr, i32 } %473, 0
  store ptr %474, ptr %8, align 8
  %475 = extractvalue { ptr, i32 } %473, 1
  store i32 %475, ptr %9, align 4
  br label %485

476:                                              ; preds = %455
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %8, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %9, align 4
  br label %484

480:                                              ; preds = %468, %466, %464, %462
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %8, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %9, align 4
  call void @_ZN9printemps6solver6ResultIidED2Ev(ptr noundef nonnull align 8 dereferenceable(1336) %62) #7
  br label %484

484:                                              ; preds = %480, %476
  call void @llvm.lifetime.end.p0(i64 1336, ptr %62) #7
  br label %485

485:                                              ; preds = %484, %472
  call void @llvm.lifetime.end.p0(i64 576, ptr %61) #7
  br label %486

486:                                              ; preds = %485, %450, %430, %408, %381, %380
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  br label %487

487:                                              ; preds = %486, %358, %329
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %488

488:                                              ; preds = %487, %308, %268
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %489

489:                                              ; preds = %488, %249, %214
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %490

490:                                              ; preds = %489, %205
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %491

491:                                              ; preds = %490, %176, %142
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %492

492:                                              ; preds = %491, %133
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %493

493:                                              ; preds = %492, %124
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @_ZN9printemps5model5ModelIidED2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %10) #7
  br label %494

494:                                              ; preds = %493, %107
  call void @llvm.lifetime.end.p0(i64 4584, ptr %10) #7
  br label %495

495:                                              ; preds = %494, %75
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #7
  br label %496

496:                                              ; preds = %495
  %497 = load ptr, ptr %8, align 8
  %498 = load i32, ptr %9, align 4
  %499 = insertvalue { ptr, i32 } poison, ptr %497, 0
  %500 = insertvalue { ptr, i32 } %499, i32 %498, 1
  resume { ptr, i32 } %500
}

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

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

; Function Attrs: nounwind
declare i32 @rand() #4

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

; 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 @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #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)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef) #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)) #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_componentleIidEEDTcmmicldtfp_4selfEcldtfp0_4selfEcvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EESA_(ptr dead_on_unwind noalias writable sret(%"class.printemps::model_component::Constraint") align 8, ptr noundef nonnull align 8 dereferenceable(392), ptr noundef nonnull align 8 dereferenceable(392)) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9printemps15model_componentmlIidiNS0_8VariableEEEDTmlfpK_cldtfp0_13to_expressionEET1_RKT2_IT_T0_E(ptr dead_on_unwind noalias writable sret(%"class.printemps::model_component::Expression") align 8, i32 noundef, ptr noundef nonnull align 8 dereferenceable(62)) #2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62), i32 noundef) #5 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)) #5

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9printemps8solution13NamedSolutionIidE22print_violation_valuesEv(ptr noundef nonnull align 8 dereferenceable(289)) #5 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

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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !13, i64 0}
!12 = !{!"_ZTSSt16initializer_listIiE", !13, i64 0, !14, i64 8}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!12, !14, i64 8}
!16 = !{!13, !13, i64 0}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = !{!25, !36, i64 208}
!25 = !{!"_ZTSN9printemps6option6OptionE", !26, i64 0, !29, i64 40, !30, i64 120, !31, i64 144, !32, i64 160, !34, i64 168, !38, i64 224, !40, i64 248, !41, i64 344, !42, i64 400, !43, i64 432}
!26 = !{!"_ZTSN9printemps6option13GeneralOptionE", !6, i64 0, !27, i64 8, !27, i64 16, !27, i64 24, !6, i64 32, !28, i64 36}
!27 = !{!"double", !7, i64 0}
!28 = !{!"bool", !7, i64 0}
!29 = !{!"_ZTSN9printemps6option13PenaltyOptionE", !27, i64 0, !27, i64 8, !27, i64 16, !27, i64 24, !27, i64 32, !27, i64 40, !27, i64 48, !27, i64 56, !6, i64 64, !6, i64 68, !28, i64 72, !28, i64 73, !28, i64 74, !28, i64 75}
!30 = !{!"_ZTSN9printemps6option14ParallelOptionE", !28, i64 0, !28, i64 1, !6, i64 4, !6, i64 8, !28, i64 12, !27, i64 16}
!31 = !{!"_ZTSN9printemps6option16PreprocessOptionE", !28, i64 0, !28, i64 1, !28, i64 2, !28, i64 3, !28, i64 4, !28, i64 5, !28, i64 6, !28, i64 7, !28, i64 8, !28, i64 9, !28, i64 10, !28, i64 11, !28, i64 12, !28, i64 13, !28, i64 14}
!32 = !{!"_ZTSN9printemps6option13RestartOptionE", !33, i64 0}
!33 = !{!"_ZTSN9printemps6option12restart_mode11RestartModeE", !7, i64 0}
!34 = !{!"_ZTSN9printemps6option18NeighborhoodOptionE", !28, i64 0, !28, i64 1, !28, i64 2, !28, i64 3, !28, i64 4, !28, i64 5, !28, i64 6, !28, i64 7, !28, i64 8, !28, i64 9, !28, i64 10, !28, i64 11, !28, i64 12, !28, i64 13, !28, i64 14, !28, i64 15, !28, i64 16, !6, i64 20, !35, i64 24, !27, i64 32, !36, i64 40, !37, i64 44, !28, i64 48}
!35 = !{!"_ZTSN9printemps6option22chain_move_reduce_mode19ChainMoveReduceModeE", !7, i64 0}
!36 = !{!"_ZTSN9printemps6option14selection_mode13SelectionModeE", !7, i64 0}
!37 = !{!"_ZTSN9printemps6option28improvability_screening_mode26ImprovabilityScreeningModeE", !7, i64 0}
!38 = !{!"_ZTSN9printemps6option12OutputOptionE", !39, i64 0, !28, i64 4, !28, i64 5, !6, i64 8, !28, i64 12, !28, i64 13, !28, i64 14, !28, i64 15, !28, i64 16, !28, i64 17, !28, i64 18}
!39 = !{!"_ZTSN9printemps6option7verbose7VerboseE", !7, i64 0}
!40 = !{!"_ZTSN9printemps6option10PDLPOptionE", !28, i64 0, !6, i64 4, !27, i64 8, !27, i64 16, !27, i64 24, !27, i64 32, !27, i64 40, !27, i64 48, !27, i64 56, !27, i64 64, !6, i64 72, !6, i64 76, !6, i64 80, !28, i64 84, !6, i64 88}
!41 = !{!"_ZTSN9printemps6option18LagrangeDualOptionE", !28, i64 0, !6, i64 4, !27, i64 8, !27, i64 16, !27, i64 24, !27, i64 32, !27, i64 40, !6, i64 48, !6, i64 52}
!42 = !{!"_ZTSN9printemps6option17LocalSearchOptionE", !28, i64 0, !6, i64 4, !27, i64 8, !27, i64 16, !6, i64 24, !6, i64 28}
!43 = !{!"_ZTSN9printemps6option16TabuSearchOptionE", !6, i64 0, !27, i64 8, !27, i64 16, !6, i64 24, !6, i64 28, !27, i64 32, !27, i64 40, !27, i64 48, !44, i64 56, !27, i64 64, !27, i64 72, !27, i64 80, !27, i64 88, !28, i64 96, !28, i64 97, !28, i64 98, !28, i64 99, !28, i64 100, !28, i64 101, !6, i64 104, !6, i64 108, !27, i64 112, !27, i64 120, !28, i64 128, !6, i64 132, !6, i64 136}
!44 = !{!"_ZTSN9printemps6option9tabu_mode8TabuModeE", !7, i64 0}
!45 = !{!25, !44, i64 488}
!46 = !{!25, !39, i64 224}


; 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::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.printemps::model::Model" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.469", %"class.std::vector.474", %"class.std::vector.479", %"class.printemps::model_component::Objective", %"class.std::unordered_map.509", %"class.std::vector.523", %"class.std::vector.523", %"class.std::vector.523", i8, i8, i8, i8, i8, i8, double, %"class.std::vector.528", %"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.533", %"class.std::vector.533", %"class.std::vector.538", %"class.printemps::neighborhood::Neighborhood", %"class.printemps::preprocess::ProblemSizeReducer", %"class.std::function.565" }
%"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.469" = type { %"struct.std::_Vector_base.470" }
%"struct.std::_Vector_base.470" = 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.474" = type { %"struct.std::_Vector_base.475" }
%"struct.std::_Vector_base.475" = 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.479" = type { %"struct.std::_Vector_base.480" }
%"struct.std::_Vector_base.480" = 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.484", %"class.std::unordered_map.484", %"class.std::unordered_map.484", %"class.std::unordered_map.484", %"class.std::vector.504", %"class.std::vector.504", %"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.484" = type { %"class.std::_Hashtable.485" }
%"class.std::_Hashtable.485" = 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.504" = type { %"struct.std::_Vector_base.505" }
%"struct.std::_Vector_base.505" = 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.509" = type { %"class.std::_Hashtable.510" }
%"class.std::_Hashtable.510" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.523" = type { %"struct.std::_Vector_base.524" }
%"struct.std::_Vector_base.524" = 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.528" = type { %"struct.std::_Vector_base.529" }
%"struct.std::_Vector_base.529" = 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.504", %"class.std::vector.504", %"class.std::vector.504" }
%"struct.printemps::model_component::VariableTypeReference" = type { %"class.std::vector.504", %"class.std::vector.504", %"class.std::vector.504", %"class.std::vector.504", %"class.std::vector.504" }
%"struct.printemps::model_component::ConstraintReference" = type { %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533" }
%"struct.printemps::model_component::ConstraintTypeReference" = type { %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533", %"class.std::vector.533" }
%"class.std::vector.533" = type { %"struct.std::_Vector_base.534" }
%"struct.std::_Vector_base.534" = 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.538" = type { %"struct.std::_Vector_base.539" }
%"struct.std::_Vector_base.539" = 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.555", %"class.std::vector.560", 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.543", %"class.std::vector.548", 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.543" = type { %"struct.std::_Vector_base.544" }
%"struct.std::_Vector_base.544" = 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.548" = type { %"struct.std::_Vector_base.549" }
%"struct.std::_Vector_base.549" = 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.553" }
%"class.std::function.553" = type { %"class.std::_Function_base", ptr }
%"class.std::vector.555" = type { %"struct.std::_Vector_base.556" }
%"struct.std::_Vector_base.556" = 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.560" = type { %"struct.std::_Vector_base.561" }
%"struct.std::_Vector_base.561" = 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.565" = type { %"class.std::_Function_base", ptr }
%"class.std::allocator" = type { i8 }
%"class.std::allocator.466" = 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.586", %"class.std::unordered_map.600", %"class.std::unordered_map.600", %"class.std::unordered_map.600", %"class.std::__cxx11::basic_string", i32, i32, double, double, double, i8, [7 x i8] }>
%"class.std::unordered_map.586" = type { %"class.std::_Hashtable.587" }
%"class.std::_Hashtable.587" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.600" = type { %"class.std::_Hashtable.601" }
%"class.std::_Hashtable.601" = 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.600", %"class.std::unordered_map.614", %"class.std::unordered_map.614" }
%"class.std::unordered_map.614" = type { %"class.std::_Hashtable.615" }
%"class.std::_Hashtable.615" = 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.628", %"class.std::__cxx11::basic_string", i32, i32, i8, [7 x i8] }>
%"class.std::vector.628" = type { %"struct.std::_Vector_base.629" }
%"struct.std::_Vector_base.629" = 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 }

@.str.70 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [10 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 i32, align 4
  %3 = alloca %"class.printemps::model::Model", align 8
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca %"class.std::vector", align 8
  %7 = alloca [2 x i32], align 4
  %8 = alloca %"class.std::allocator.466", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca %"class.printemps::model_component::Expression", align 8
  %14 = alloca %"class.std::vector", align 8
  %15 = alloca [2 x i32], align 4
  %16 = alloca %"class.std::allocator.466", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca %"class.printemps::model_component::Expression", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca %"class.printemps::model_component::Constraint", align 8
  %23 = alloca %"class.std::vector", align 8
  %24 = alloca [2 x i32], align 4
  %25 = alloca %"class.std::allocator.466", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator", align 1
  %28 = alloca %"class.printemps::model_component::Constraint", align 8
  %29 = alloca %"class.printemps::model_component::Expression", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator", align 1
  %32 = alloca %"class.printemps::model_component::Constraint", align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::allocator", align 1
  %35 = alloca %"class.printemps::model_component::Expression", align 8
  %36 = alloca %"struct.printemps::option::Option", align 8
  %37 = alloca %"struct.printemps::solver::Result", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %1) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  br label %39

38:                                               ; preds = %42
  call void @llvm.lifetime.start.p0(i64 4584, ptr nonnull %3) #7
  invoke void @_ZN9printemps5model5ModelIidEC2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %3)
          to label %46 unwind label %60

39:                                               ; preds = %0, %42
  %.074157 = phi i32 [ 0, %0 ], [ %43, %42 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #7
  %40 = call i32 @rand() #7
  %41 = srem i32 %40, 50
  store i32 %41, ptr %2, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 4 dereferenceable(4) %2)
          to label %42 unwind label %44

42:                                               ; preds = %39
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #7
  %43 = add nuw nsw i32 %.074157, 1
  %exitcond.not = icmp eq i32 %43, 100
  br i1 %exitcond.not, label %38, label %39, !llvm.loop !9

44:                                               ; preds = %39
  %45 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #7
  br label %336

46:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.70, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %47 unwind label %62

47:                                               ; preds = %46
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  store i32 100, ptr %7, align 4, !tbaa !5
  %48 = getelementptr inbounds i8, ptr %7, i64 4
  store i32 30, ptr %48, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr nonnull %7, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %49 unwind label %64

49:                                               ; preds = %47
  %50 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE16create_variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIiSaIiEEii(ptr noundef nonnull align 8 dereferenceable(4584) %3, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(24) %6, i32 noundef 0, i32 noundef 1)
          to label %51 unwind label %66

51:                                               ; preds = %49
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.71, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %52 unwind label %70

52:                                               ; preds = %51
  %53 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE16create_variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiii(ptr noundef nonnull align 8 dereferenceable(4584) %3, ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 30, i32 noundef 0, i32 noundef 1)
          to label %54 unwind label %72

54:                                               ; preds = %52
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %55 unwind label %75

55:                                               ; preds = %54
  %56 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_expressionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584) %3, ptr noundef nonnull align 8 dereferenceable(32) %11, i32 noundef 30)
          to label %57 unwind label %77

57:                                               ; preds = %55
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  %58 = getelementptr inbounds i8, ptr %15, i64 4
  br label %80

59:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.73, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %95 unwind label %104

60:                                               ; preds = %38
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %335

62:                                               ; preds = %46
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %69

64:                                               ; preds = %47
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %68

66:                                               ; preds = %49
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #7
  br label %68

68:                                               ; preds = %66, %64
  %.pn = phi { ptr, i32 } [ %67, %66 ], [ %65, %64 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #7
  br label %69

69:                                               ; preds = %68, %62
  %.pn.pn = phi { ptr, i32 } [ %.pn, %68 ], [ %63, %62 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #7
  br label %334

70:                                               ; preds = %51
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %74

72:                                               ; preds = %52
  %73 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %74

74:                                               ; preds = %72, %70
  %.pn112 = phi { ptr, i32 } [ %73, %72 ], [ %71, %70 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %334

75:                                               ; preds = %54
  %76 = landingpad { ptr, i32 }
          cleanup
  br label %79

77:                                               ; preds = %55
  %78 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %79

79:                                               ; preds = %77, %75
  %.pn114 = phi { ptr, i32 } [ %78, %77 ], [ %76, %75 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7
  br label %334

80:                                               ; preds = %57, %84
  %.0108158 = phi i32 [ 0, %57 ], [ %86, %84 ]
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  store i32 -1, ptr %15, align 4, !tbaa !5
  store i32 %.0108158, ptr %58, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr nonnull %15, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %81 unwind label %87

81:                                               ; preds = %80
  invoke void @_ZN9printemps15model_component13VariableProxyIidE3dotISt6vectorIiSaIiEEEENS0_10ExpressionIidEERKS6_RKT_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Expression") align 8 %13, ptr noundef nonnull align 8 dereferenceable(88) %50, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(24) %1)
          to label %82 unwind label %89

82:                                               ; preds = %81
  %83 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %56, i32 noundef %.0108158)
          to label %84 unwind label %91

84:                                               ; preds = %82
  %85 = call noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component10ExpressionIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(392) %83, ptr noundef nonnull align 8 dereferenceable(392) %13) #7
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %13) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %13) #7
  %86 = add nuw nsw i32 %.0108158, 1
  %exitcond165.not = icmp eq i32 %86, 30
  br i1 %exitcond165.not, label %59, label %80, !llvm.loop !11

87:                                               ; preds = %80
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %94

89:                                               ; preds = %81
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %93

91:                                               ; preds = %82
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %13) #7
  br label %93

93:                                               ; preds = %91, %89
  %.pn146 = phi { ptr, i32 } [ %92, %91 ], [ %90, %89 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  br label %94

94:                                               ; preds = %93, %87
  %.pn146.pn = phi { ptr, i32 } [ %.pn146, %93 ], [ %88, %87 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %13) #7
  br label %334

95:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %19) #7
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE3sumEv(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Expression") align 8 %19, ptr noundef nonnull align 8 dereferenceable(88) %53)
          to label %96 unwind label %106

96:                                               ; preds = %95
  %97 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE17create_expressionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_15model_component10ExpressionIidEE(ptr noundef nonnull align 8 dereferenceable(4584) %3, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(392) %19)
          to label %98 unwind label %108

98:                                               ; preds = %96
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %19) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.74, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %99 unwind label %112

99:                                               ; preds = %98
  %100 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584) %3, ptr noundef nonnull align 8 dereferenceable(32) %20, i32 noundef 100)
          to label %101 unwind label %114

101:                                              ; preds = %99
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  %102 = getelementptr inbounds i8, ptr %24, i64 4
  br label %117

103:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %133 unwind label %137

104:                                              ; preds = %59
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %111

106:                                              ; preds = %95
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %110

108:                                              ; preds = %96
  %109 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %19) #7
  br label %110

110:                                              ; preds = %108, %106
  %.pn116 = phi { ptr, i32 } [ %109, %108 ], [ %107, %106 ]
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %111

111:                                              ; preds = %110, %104
  %.pn116.pn = phi { ptr, i32 } [ %.pn116, %110 ], [ %105, %104 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #7
  br label %334

112:                                              ; preds = %98
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %116

114:                                              ; preds = %99
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %116

116:                                              ; preds = %114, %112
  %.pn119 = phi { ptr, i32 } [ %115, %114 ], [ %113, %112 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %334

117:                                              ; preds = %101, %123
  %.0109159 = phi i32 [ 0, %101 ], [ %124, %123 ]
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  store i32 %.0109159, ptr %24, align 4, !tbaa !5
  store i32 -1, ptr %102, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #7
  call void @_ZNSaIiEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  invoke void @_ZNSt6vectorIiSaIiEEC2ESt16initializer_listIiERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr nonnull %24, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %118 unwind label %125

118:                                              ; preds = %117
  invoke void @_ZNK9printemps15model_component13VariableProxyIidE9selectionERKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %22, ptr noundef nonnull align 8 dereferenceable(88) %50, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %119 unwind label %127

119:                                              ; preds = %118
  %120 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %100, i32 noundef %.0109159)
          to label %121 unwind label %129

121:                                              ; preds = %119
  %122 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %120, ptr noundef nonnull align 8 dereferenceable(542) %22)
          to label %123 unwind label %129

123:                                              ; preds = %121
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %22) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %22) #7
  %124 = add nuw nsw i32 %.0109159, 1
  %exitcond166.not = icmp eq i32 %124, 100
  br i1 %exitcond166.not, label %103, label %117, !llvm.loop !12

125:                                              ; preds = %117
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %132

127:                                              ; preds = %118
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %131

129:                                              ; preds = %121, %119
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %22) #7
  br label %131

131:                                              ; preds = %129, %127
  %.pn141 = phi { ptr, i32 } [ %130, %129 ], [ %128, %127 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #7
  br label %132

132:                                              ; preds = %131, %125
  %.pn141.pn = phi { ptr, i32 } [ %.pn141, %131 ], [ %126, %125 ]
  call void @_ZNSt15__new_allocatorIiED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %22) #7
  br label %334

133:                                              ; preds = %103
  %134 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584) %3, ptr noundef nonnull align 8 dereferenceable(32) %26, i32 noundef 30)
          to label %135 unwind label %139

135:                                              ; preds = %133
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  br label %142

136:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.75, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %165 unwind label %169

137:                                              ; preds = %103
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %141

139:                                              ; preds = %133
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  br label %141

141:                                              ; preds = %139, %137
  %.pn121 = phi { ptr, i32 } [ %140, %139 ], [ %138, %137 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  br label %334

142:                                              ; preds = %135, %152
  %.075160 = phi i32 [ 0, %135 ], [ %153, %152 ]
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %28) #7
  %143 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %56, i32 noundef %.075160)
          to label %144 unwind label %154

144:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %29) #7
  %145 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef %.075160)
          to label %146 unwind label %156

146:                                              ; preds = %144
  invoke void @_ZN9printemps15model_componentmlIidiNS0_8VariableEEEDTmlfpK_cldtfp0_13to_expressionEET1_RKT2_IT_T0_E(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Expression") align 8 %29, i32 noundef 100, ptr noundef nonnull align 8 dereferenceable(62) %145)
          to label %147 unwind label %156

147:                                              ; preds = %146
  invoke void @_ZN9printemps15model_componentleIidEEDTcmmicldtfp_4selfEcldtfp0_4selfEcvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EESA_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %28, ptr noundef nonnull align 8 dereferenceable(392) %143, ptr noundef nonnull align 8 dereferenceable(392) %29)
          to label %148 unwind label %158

148:                                              ; preds = %147
  %149 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %134, i32 noundef %.075160)
          to label %150 unwind label %160

150:                                              ; preds = %148
  %151 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %149, ptr noundef nonnull align 8 dereferenceable(542) %28)
          to label %152 unwind label %160

152:                                              ; preds = %150
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %28) #7
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %29) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %28) #7
  %153 = add nuw nsw i32 %.075160, 1
  %exitcond167.not = icmp eq i32 %153, 30
  br i1 %exitcond167.not, label %136, label %142, !llvm.loop !13

154:                                              ; preds = %142
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %164

156:                                              ; preds = %146, %144
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %163

158:                                              ; preds = %147
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %162

160:                                              ; preds = %150, %148
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %28) #7
  br label %162

162:                                              ; preds = %160, %158
  %.pn136 = phi { ptr, i32 } [ %161, %160 ], [ %159, %158 ]
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %29) #7
  br label %163

163:                                              ; preds = %162, %156
  %.pn136.pn = phi { ptr, i32 } [ %.pn136, %162 ], [ %157, %156 ]
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %29) #7
  br label %164

164:                                              ; preds = %163, %154
  %.pn136.pn.pn = phi { ptr, i32 } [ %.pn136.pn, %163 ], [ %155, %154 ]
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %28) #7
  br label %334

165:                                              ; preds = %136
  %166 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE18create_constraintsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584) %3, ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef 29)
          to label %167 unwind label %171

167:                                              ; preds = %165
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %174

168:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull @.str.76, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %190 unwind label %195

169:                                              ; preds = %136
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %173

171:                                              ; preds = %165
  %172 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  br label %173

173:                                              ; preds = %171, %169
  %.pn123 = phi { ptr, i32 } [ %172, %171 ], [ %170, %169 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  br label %334

174:                                              ; preds = %167, %184
  %.073161 = phi i32 [ 0, %167 ], [ %175, %184 ]
  call void @llvm.lifetime.start.p0(i64 544, ptr nonnull %32) #7
  %175 = add nuw nsw i32 %.073161, 1
  %176 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef %175)
          to label %177 unwind label %185

177:                                              ; preds = %174
  %178 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef %.073161)
          to label %179 unwind label %185

179:                                              ; preds = %177
  invoke void @_ZN9printemps15model_componentleIidNS0_8VariableES2_EEDTcmmicldtfp_13to_expressionEcldtfp0_13to_expressionEcvNS0_10ConstraintIT_T0_EE_EERKT1_IS4_S5_ERKT2_IS4_S5_E(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Constraint") align 8 %32, ptr noundef nonnull align 8 dereferenceable(62) %176, ptr noundef nonnull align 8 dereferenceable(62) %178)
          to label %180 unwind label %185

180:                                              ; preds = %179
  %181 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component15ConstraintProxyIidEclIJiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %166, i32 noundef %.073161)
          to label %182 unwind label %187

182:                                              ; preds = %180
  %183 = invoke noundef nonnull align 8 dereferenceable(542) ptr @_ZN9printemps15model_component10ConstraintIidEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(542) %181, ptr noundef nonnull align 8 dereferenceable(542) %32)
          to label %184 unwind label %187

184:                                              ; preds = %182
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %32) #7
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %32) #7
  %exitcond168.not = icmp eq i32 %175, 29
  br i1 %exitcond168.not, label %168, label %174, !llvm.loop !14

185:                                              ; preds = %179, %177, %174
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %189

187:                                              ; preds = %182, %180
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps15model_component10ConstraintIidED2Ev(ptr noundef nonnull align 8 dereferenceable(542) %32) #7
  br label %189

189:                                              ; preds = %187, %185
  %.pn133 = phi { ptr, i32 } [ %188, %187 ], [ %186, %185 ]
  call void @llvm.lifetime.end.p0(i64 544, ptr nonnull %32) #7
  br label %334

190:                                              ; preds = %168
  %191 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE17create_expressionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(4584) %3, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %192 unwind label %197

192:                                              ; preds = %190
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  %193 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps15model_component15ExpressionProxyIidEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(88) %191, ptr noundef nonnull align 8 dereferenceable(88) %97)
          to label %.preheader156 unwind label %200

194:                                              ; preds = %208
  invoke void @_ZN9printemps5model5ModelIidE8minimizeINS_15model_component15ExpressionProxyEEEvRKT_IidE(ptr noundef nonnull align 8 dereferenceable(4584) %3, ptr noundef nonnull align 8 dereferenceable(88) %191)
          to label %.preheader155 unwind label %200

195:                                              ; preds = %168
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %199

197:                                              ; preds = %190
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %199

199:                                              ; preds = %197, %195
  %.pn125 = phi { ptr, i32 } [ %198, %197 ], [ %196, %195 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  br label %334

200:                                              ; preds = %194, %192
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %334

.preheader156:                                    ; preds = %192, %208
  %.072162 = phi i32 [ %209, %208 ], [ 0, %192 ]
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %35) #7
  %202 = invoke noundef nonnull align 8 dereferenceable(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %56, i32 noundef %.072162)
          to label %203 unwind label %210

203:                                              ; preds = %.preheader156
  %204 = uitofp nneg i32 %.072162 to double
  %205 = fmul double %204, 1.000000e-05
  invoke void @_ZN9printemps15model_componentmlIiddEENS0_10ExpressionIT_T0_EET1_RKS5_(ptr dead_on_unwind nonnull writable sret(%"class.printemps::model_component::Expression") align 8 %35, double noundef %205, ptr noundef nonnull align 8 dereferenceable(392) %202)
          to label %206 unwind label %210

206:                                              ; preds = %203
  %207 = invoke noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps15model_component15ExpressionProxyIidEpLERKNS0_10ExpressionIidEE(ptr noundef nonnull align 8 dereferenceable(88) %191, ptr noundef nonnull align 8 dereferenceable(392) %35)
          to label %208 unwind label %212

208:                                              ; preds = %206
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %35) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %35) #7
  %209 = add nuw nsw i32 %.072162, 1
  %exitcond169.not = icmp eq i32 %209, 30
  br i1 %exitcond169.not, label %194, label %.preheader156, !llvm.loop !15

210:                                              ; preds = %203, %.preheader156
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %214

212:                                              ; preds = %206
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps15model_component10ExpressionIidED2Ev(ptr noundef nonnull align 8 dereferenceable(392) %35) #7
  br label %214

214:                                              ; preds = %212, %210
  %.pn130 = phi { ptr, i32 } [ %213, %212 ], [ %211, %210 ]
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %35) #7
  br label %334

.preheader155:                                    ; preds = %194, %220
  %.071163 = phi i32 [ %221, %220 ], [ 0, %194 ]
  %215 = call i32 @rand() #7
  %216 = srem i32 %215, 30
  %217 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %50, i32 noundef %.071163, i32 noundef %216)
          to label %218 unwind label %223

218:                                              ; preds = %.preheader155
  %219 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %217, i32 noundef 1)
          to label %220 unwind label %223

220:                                              ; preds = %218
  %221 = add nuw nsw i32 %.071163, 1
  %exitcond170.not = icmp eq i32 %221, 100
  br i1 %exitcond170.not, label %.preheader.preheader, label %.preheader155, !llvm.loop !16

.preheader.preheader:                             ; preds = %220
  %222 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 0)
          to label %225 unwind label %315

223:                                              ; preds = %218, %.preheader155
  %224 = landingpad { ptr, i32 }
          cleanup
  br label %334

225:                                              ; preds = %.preheader.preheader
  %226 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %222, i32 noundef 1)
          to label %.preheader.1 unwind label %315

.preheader.1:                                     ; preds = %225
  %227 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 1)
          to label %228 unwind label %315

228:                                              ; preds = %.preheader.1
  %229 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %227, i32 noundef 1)
          to label %.preheader.2 unwind label %315

.preheader.2:                                     ; preds = %228
  %230 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 2)
          to label %231 unwind label %315

231:                                              ; preds = %.preheader.2
  %232 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %230, i32 noundef 1)
          to label %.preheader.3 unwind label %315

.preheader.3:                                     ; preds = %231
  %233 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 3)
          to label %234 unwind label %315

234:                                              ; preds = %.preheader.3
  %235 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %233, i32 noundef 1)
          to label %.preheader.4 unwind label %315

.preheader.4:                                     ; preds = %234
  %236 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 4)
          to label %237 unwind label %315

237:                                              ; preds = %.preheader.4
  %238 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %236, i32 noundef 1)
          to label %.preheader.5 unwind label %315

.preheader.5:                                     ; preds = %237
  %239 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 5)
          to label %240 unwind label %315

240:                                              ; preds = %.preheader.5
  %241 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %239, i32 noundef 1)
          to label %.preheader.6 unwind label %315

.preheader.6:                                     ; preds = %240
  %242 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 6)
          to label %243 unwind label %315

243:                                              ; preds = %.preheader.6
  %244 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %242, i32 noundef 1)
          to label %.preheader.7 unwind label %315

.preheader.7:                                     ; preds = %243
  %245 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 7)
          to label %246 unwind label %315

246:                                              ; preds = %.preheader.7
  %247 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %245, i32 noundef 1)
          to label %.preheader.8 unwind label %315

.preheader.8:                                     ; preds = %246
  %248 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 8)
          to label %249 unwind label %315

249:                                              ; preds = %.preheader.8
  %250 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %248, i32 noundef 1)
          to label %.preheader.9 unwind label %315

.preheader.9:                                     ; preds = %249
  %251 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 9)
          to label %252 unwind label %315

252:                                              ; preds = %.preheader.9
  %253 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %251, i32 noundef 1)
          to label %.preheader.10 unwind label %315

.preheader.10:                                    ; preds = %252
  %254 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 10)
          to label %255 unwind label %315

255:                                              ; preds = %.preheader.10
  %256 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %254, i32 noundef 1)
          to label %.preheader.11 unwind label %315

.preheader.11:                                    ; preds = %255
  %257 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 11)
          to label %258 unwind label %315

258:                                              ; preds = %.preheader.11
  %259 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %257, i32 noundef 1)
          to label %.preheader.12 unwind label %315

.preheader.12:                                    ; preds = %258
  %260 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 12)
          to label %261 unwind label %315

261:                                              ; preds = %.preheader.12
  %262 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %260, i32 noundef 1)
          to label %.preheader.13 unwind label %315

.preheader.13:                                    ; preds = %261
  %263 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 13)
          to label %264 unwind label %315

264:                                              ; preds = %.preheader.13
  %265 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %263, i32 noundef 1)
          to label %.preheader.14 unwind label %315

.preheader.14:                                    ; preds = %264
  %266 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 14)
          to label %267 unwind label %315

267:                                              ; preds = %.preheader.14
  %268 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %266, i32 noundef 1)
          to label %.preheader.15 unwind label %315

.preheader.15:                                    ; preds = %267
  %269 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 15)
          to label %270 unwind label %315

270:                                              ; preds = %.preheader.15
  %271 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %269, i32 noundef 1)
          to label %.preheader.16 unwind label %315

.preheader.16:                                    ; preds = %270
  %272 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 16)
          to label %273 unwind label %315

273:                                              ; preds = %.preheader.16
  %274 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %272, i32 noundef 1)
          to label %.preheader.17 unwind label %315

.preheader.17:                                    ; preds = %273
  %275 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 17)
          to label %276 unwind label %315

276:                                              ; preds = %.preheader.17
  %277 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %275, i32 noundef 1)
          to label %.preheader.18 unwind label %315

.preheader.18:                                    ; preds = %276
  %278 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 18)
          to label %279 unwind label %315

279:                                              ; preds = %.preheader.18
  %280 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %278, i32 noundef 1)
          to label %.preheader.19 unwind label %315

.preheader.19:                                    ; preds = %279
  %281 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 19)
          to label %282 unwind label %315

282:                                              ; preds = %.preheader.19
  %283 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %281, i32 noundef 1)
          to label %.preheader.20 unwind label %315

.preheader.20:                                    ; preds = %282
  %284 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 20)
          to label %285 unwind label %315

285:                                              ; preds = %.preheader.20
  %286 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %284, i32 noundef 1)
          to label %.preheader.21 unwind label %315

.preheader.21:                                    ; preds = %285
  %287 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 21)
          to label %288 unwind label %315

288:                                              ; preds = %.preheader.21
  %289 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %287, i32 noundef 1)
          to label %.preheader.22 unwind label %315

.preheader.22:                                    ; preds = %288
  %290 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 22)
          to label %291 unwind label %315

291:                                              ; preds = %.preheader.22
  %292 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %290, i32 noundef 1)
          to label %.preheader.23 unwind label %315

.preheader.23:                                    ; preds = %291
  %293 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 23)
          to label %294 unwind label %315

294:                                              ; preds = %.preheader.23
  %295 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %293, i32 noundef 1)
          to label %.preheader.24 unwind label %315

.preheader.24:                                    ; preds = %294
  %296 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 24)
          to label %297 unwind label %315

297:                                              ; preds = %.preheader.24
  %298 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %296, i32 noundef 1)
          to label %.preheader.25 unwind label %315

.preheader.25:                                    ; preds = %297
  %299 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 25)
          to label %300 unwind label %315

300:                                              ; preds = %.preheader.25
  %301 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %299, i32 noundef 1)
          to label %.preheader.26 unwind label %315

.preheader.26:                                    ; preds = %300
  %302 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 26)
          to label %303 unwind label %315

303:                                              ; preds = %.preheader.26
  %304 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %302, i32 noundef 1)
          to label %.preheader.27 unwind label %315

.preheader.27:                                    ; preds = %303
  %305 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 27)
          to label %306 unwind label %315

306:                                              ; preds = %.preheader.27
  %307 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %305, i32 noundef 1)
          to label %.preheader.28 unwind label %315

.preheader.28:                                    ; preds = %306
  %308 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 28)
          to label %309 unwind label %315

309:                                              ; preds = %.preheader.28
  %310 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %308, i32 noundef 1)
          to label %.preheader.29 unwind label %315

.preheader.29:                                    ; preds = %309
  %311 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88) %53, i32 noundef 29)
          to label %312 unwind label %315

312:                                              ; preds = %.preheader.29
  %313 = invoke noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62) %311, i32 noundef 1)
          to label %314 unwind label %315

314:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 576, ptr nonnull %36) #7
  invoke void @_ZN9printemps6option6OptionC2Ev(ptr noundef nonnull align 8 dereferenceable(576) %36)
          to label %317 unwind label %326

315:                                              ; preds = %312, %.preheader.29, %309, %.preheader.28, %306, %.preheader.27, %303, %.preheader.26, %300, %.preheader.25, %297, %.preheader.24, %294, %.preheader.23, %291, %.preheader.22, %288, %.preheader.21, %285, %.preheader.20, %282, %.preheader.19, %279, %.preheader.18, %276, %.preheader.17, %273, %.preheader.16, %270, %.preheader.15, %267, %.preheader.14, %264, %.preheader.13, %261, %.preheader.12, %258, %.preheader.11, %255, %.preheader.10, %252, %.preheader.9, %249, %.preheader.8, %246, %.preheader.7, %243, %.preheader.6, %240, %.preheader.5, %237, %.preheader.4, %234, %.preheader.3, %231, %.preheader.2, %228, %.preheader.1, %225, %.preheader.preheader
  %316 = landingpad { ptr, i32 }
          cleanup
  br label %334

317:                                              ; preds = %314
  %318 = getelementptr inbounds i8, ptr %36, i64 208
  store i32 1, ptr %318, align 8, !tbaa !17
  %319 = getelementptr inbounds i8, ptr %36, i64 488
  store i32 1, ptr %319, align 8, !tbaa !38
  %320 = getelementptr inbounds i8, ptr %36, i64 224
  store i32 4, ptr %320, align 8, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 1336, ptr nonnull %37) #7
  invoke void @_ZN9printemps6solver5solveIidEENS0_6ResultIT_T0_EEPNS_5model5ModelIS3_S4_EERKNS_6option6OptionE(ptr dead_on_unwind nonnull writable sret(%"struct.printemps::solver::Result") align 8 %37, ptr noundef nonnull %3, ptr noundef nonnull align 8 dereferenceable(576) %36)
          to label %321 unwind label %328

321:                                              ; preds = %317
  invoke void @_ZNK9printemps8solution13NamedSolutionIidE21print_variable_valuesEv(ptr noundef nonnull align 8 dereferenceable(289) %37)
          to label %322 unwind label %330

322:                                              ; preds = %321
  invoke void @_ZNK9printemps8solution13NamedSolutionIidE23print_expression_valuesEv(ptr noundef nonnull align 8 dereferenceable(289) %37)
          to label %323 unwind label %330

323:                                              ; preds = %322
  invoke void @_ZNK9printemps8solution13NamedSolutionIidE23print_constraint_valuesEv(ptr noundef nonnull align 8 dereferenceable(289) %37)
          to label %324 unwind label %330

324:                                              ; preds = %323
  invoke void @_ZNK9printemps8solution13NamedSolutionIidE22print_violation_valuesEv(ptr noundef nonnull align 8 dereferenceable(289) %37)
          to label %325 unwind label %330

325:                                              ; preds = %324
  call void @_ZN9printemps6solver6ResultIidED2Ev(ptr noundef nonnull align 8 dereferenceable(1336) %37) #7
  call void @llvm.lifetime.end.p0(i64 1336, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 576, ptr nonnull %36) #7
  call void @_ZN9printemps5model5ModelIidED2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %3) #7
  call void @llvm.lifetime.end.p0(i64 4584, ptr nonnull %3) #7
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %1) #7
  ret i32 0

326:                                              ; preds = %314
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %333

328:                                              ; preds = %317
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %332

330:                                              ; preds = %324, %323, %322, %321
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN9printemps6solver6ResultIidED2Ev(ptr noundef nonnull align 8 dereferenceable(1336) %37) #7
  br label %332

332:                                              ; preds = %330, %328
  %.pn127 = phi { ptr, i32 } [ %331, %330 ], [ %329, %328 ]
  call void @llvm.lifetime.end.p0(i64 1336, ptr nonnull %37) #7
  br label %333

333:                                              ; preds = %332, %326
  %.pn127.pn = phi { ptr, i32 } [ %.pn127, %332 ], [ %327, %326 ]
  call void @llvm.lifetime.end.p0(i64 576, ptr nonnull %36) #7
  br label %334

334:                                              ; preds = %74, %111, %141, %164, %199, %200, %214, %223, %315, %333, %189, %173, %132, %116, %94, %79, %69
  %.pn146.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %69 ], [ %.pn112, %74 ], [ %.pn146.pn, %94 ], [ %.pn114, %79 ], [ %.pn116.pn, %111 ], [ %.pn141.pn, %132 ], [ %.pn119, %116 ], [ %.pn136.pn.pn, %164 ], [ %.pn121, %141 ], [ %.pn133, %189 ], [ %.pn123, %173 ], [ %.pn130, %214 ], [ %224, %223 ], [ %316, %315 ], [ %.pn127.pn, %333 ], [ %201, %200 ], [ %.pn125, %199 ]
  call void @_ZN9printemps5model5ModelIidED2Ev(ptr noundef nonnull align 8 dereferenceable(4584) %3) #7
  br label %335

335:                                              ; preds = %334, %60
  %.pn146.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn146.pn.pn.pn.pn, %334 ], [ %61, %60 ]
  call void @llvm.lifetime.end.p0(i64 4584, ptr nonnull %3) #7
  br label %336

336:                                              ; preds = %335, %44
  %.pn153 = phi { ptr, i32 } [ %45, %44 ], [ %.pn146.pn.pn.pn.pn.pn, %335 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %1) #7
  resume { ptr, i32 } %.pn153
}

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

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

; Function Attrs: nounwind
declare i32 @rand() local_unnamed_addr #4

; 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: 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 @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(88) ptr @_ZN9printemps5model5ModelIidE16create_variablesERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiii(ptr noundef nonnull align 8 dereferenceable(4584), ptr noundef nonnull align 8 dereferenceable(32), 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(88) ptr @_ZN9printemps5model5ModelIidE18create_expressionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9printemps15model_component13VariableProxyIidE3dotISt6vectorIiSaIiEEEENS0_10ExpressionIidEERKS6_RKT_(ptr dead_on_unwind noalias writable sret(%"class.printemps::model_component::Expression") align 8, ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(24), 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(392) ptr @_ZN9printemps15model_component15ExpressionProxyIidEclIJiEEERNS0_10ExpressionIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9printemps15model_component13VariableProxyIidE3sumEv(ptr dead_on_unwind noalias writable sret(%"class.printemps::model_component::Expression") align 8, 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_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(4584), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) 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_component15ConstraintProxyIidEclIJiEEERNS0_10ConstraintIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), 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_componentleIidEEDTcmmicldtfp_4selfEcldtfp0_4selfEcvNS0_10ConstraintIT_T0_EE_EERKNS0_10ExpressionIS3_S4_EESA_(ptr dead_on_unwind noalias writable sret(%"class.printemps::model_component::Constraint") align 8, ptr noundef nonnull align 8 dereferenceable(392), ptr noundef nonnull align 8 dereferenceable(392)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN9printemps15model_componentmlIidiNS0_8VariableEEEDTmlfpK_cldtfp0_13to_expressionEET1_RKT2_IT_T0_E(ptr dead_on_unwind noalias writable sret(%"class.printemps::model_component::Expression") align 8, i32 noundef, ptr noundef nonnull align 8 dereferenceable(62)) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN9printemps5model5ModelIidE8minimizeINS_15model_component15ExpressionProxyEEEvRKT_IidE(ptr noundef nonnull align 8 dereferenceable(4584), 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(62) ptr @_ZN9printemps15model_component13VariableProxyIidEclIJiiEEERNS0_8VariableIidEEDpT_(ptr noundef nonnull align 8 dereferenceable(88), i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(62) ptr @_ZN9printemps15model_component8VariableIidEaSEi(ptr noundef nonnull align 8 dereferenceable(62), i32 noundef) local_unnamed_addr #5 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: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9printemps8solution13NamedSolutionIidE21print_variable_valuesEv(ptr noundef nonnull align 8 dereferenceable(289)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK9printemps8solution13NamedSolutionIidE22print_violation_valuesEv(ptr noundef nonnull align 8 dereferenceable(289)) local_unnamed_addr #5 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

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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = !{!18, !29, i64 208}
!18 = !{!"_ZTSN9printemps6option6OptionE", !19, i64 0, !22, i64 40, !23, i64 120, !24, i64 144, !25, i64 160, !27, i64 168, !31, i64 224, !33, i64 248, !34, i64 344, !35, i64 400, !36, i64 432}
!19 = !{!"_ZTSN9printemps6option13GeneralOptionE", !6, i64 0, !20, i64 8, !20, i64 16, !20, i64 24, !6, i64 32, !21, i64 36}
!20 = !{!"double", !7, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{!"_ZTSN9printemps6option13PenaltyOptionE", !20, i64 0, !20, i64 8, !20, i64 16, !20, i64 24, !20, i64 32, !20, i64 40, !20, i64 48, !20, i64 56, !6, i64 64, !6, i64 68, !21, i64 72, !21, i64 73, !21, i64 74, !21, i64 75}
!23 = !{!"_ZTSN9printemps6option14ParallelOptionE", !21, i64 0, !21, i64 1, !6, i64 4, !6, i64 8, !21, i64 12, !20, i64 16}
!24 = !{!"_ZTSN9printemps6option16PreprocessOptionE", !21, i64 0, !21, i64 1, !21, i64 2, !21, i64 3, !21, i64 4, !21, i64 5, !21, i64 6, !21, i64 7, !21, i64 8, !21, i64 9, !21, i64 10, !21, i64 11, !21, i64 12, !21, i64 13, !21, i64 14}
!25 = !{!"_ZTSN9printemps6option13RestartOptionE", !26, i64 0}
!26 = !{!"_ZTSN9printemps6option12restart_mode11RestartModeE", !7, i64 0}
!27 = !{!"_ZTSN9printemps6option18NeighborhoodOptionE", !21, i64 0, !21, i64 1, !21, i64 2, !21, i64 3, !21, i64 4, !21, i64 5, !21, i64 6, !21, i64 7, !21, i64 8, !21, i64 9, !21, i64 10, !21, i64 11, !21, i64 12, !21, i64 13, !21, i64 14, !21, i64 15, !21, i64 16, !6, i64 20, !28, i64 24, !20, i64 32, !29, i64 40, !30, i64 44, !21, i64 48}
!28 = !{!"_ZTSN9printemps6option22chain_move_reduce_mode19ChainMoveReduceModeE", !7, i64 0}
!29 = !{!"_ZTSN9printemps6option14selection_mode13SelectionModeE", !7, i64 0}
!30 = !{!"_ZTSN9printemps6option28improvability_screening_mode26ImprovabilityScreeningModeE", !7, i64 0}
!31 = !{!"_ZTSN9printemps6option12OutputOptionE", !32, i64 0, !21, i64 4, !21, i64 5, !6, i64 8, !21, i64 12, !21, i64 13, !21, i64 14, !21, i64 15, !21, i64 16, !21, i64 17, !21, i64 18}
!32 = !{!"_ZTSN9printemps6option7verbose7VerboseE", !7, i64 0}
!33 = !{!"_ZTSN9printemps6option10PDLPOptionE", !21, i64 0, !6, i64 4, !20, i64 8, !20, i64 16, !20, i64 24, !20, i64 32, !20, i64 40, !20, i64 48, !20, i64 56, !20, i64 64, !6, i64 72, !6, i64 76, !6, i64 80, !21, i64 84, !6, i64 88}
!34 = !{!"_ZTSN9printemps6option18LagrangeDualOptionE", !21, i64 0, !6, i64 4, !20, i64 8, !20, i64 16, !20, i64 24, !20, i64 32, !20, i64 40, !6, i64 48, !6, i64 52}
!35 = !{!"_ZTSN9printemps6option17LocalSearchOptionE", !21, i64 0, !6, i64 4, !20, i64 8, !20, i64 16, !6, i64 24, !6, i64 28}
!36 = !{!"_ZTSN9printemps6option16TabuSearchOptionE", !6, i64 0, !20, i64 8, !20, i64 16, !6, i64 24, !6, i64 28, !20, i64 32, !20, i64 40, !20, i64 48, !37, i64 56, !20, i64 64, !20, i64 72, !20, i64 80, !20, i64 88, !21, i64 96, !21, i64 97, !21, i64 98, !21, i64 99, !21, i64 100, !21, i64 101, !6, i64 104, !6, i64 108, !20, i64 112, !20, i64 120, !21, i64 128, !6, i64 132, !6, i64 136}
!37 = !{!"_ZTSN9printemps6option9tabu_mode8TabuModeE", !7, i64 0}
!38 = !{!18, !37, i64 488}
!39 = !{!18, !32, i64 224}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass